<?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>91864</bug_id>
          
          <creation_ts>2012-07-20 08:03:09 -0700</creation_ts>
          <short_desc>[Cairo] Add complex font drawing using HarfbuzzNG</short_desc>
          <delta_ts>2012-08-02 07:21:36 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85606</blocked>
    
    <blocked>91853</blocked>
    
    <blocked>92120</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominik Röttsches (drott)">d-r</reporter>
          <assigned_to name="Dominik Röttsches (drott)">d-r</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>mrobinson</cc>
    
    <cc>peter</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674576</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-20 08:03:09 -0700</bug_when>
    <thetext>Similar to Chromium mac, we can add complex font rendering path to cairo using Harfbuzz NG shaper + drawGlyphBuffer.
I propose to add a new file FontCairoComplex.cpp that implements this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676820</commentid>
    <comment_count>1</comment_count>
      <attachid>154062</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 07:59:57 -0700</bug_when>
    <thetext>Created attachment 154062
HarfbuzzNG support based on cairo-ft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676823</commentid>
    <comment_count>2</comment_count>
      <attachid>154064</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 08:04:26 -0700</bug_when>
    <thetext>Created attachment 154064
HarfbuzzNG support based on cairo and freetype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676834</commentid>
    <comment_count>3</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 08:14:42 -0700</bug_when>
    <thetext>This is enabling the code for EFL right away, GTK support is tracked in bug 92098.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676871</commentid>
    <comment_count>4</comment_count>
      <attachid>154064</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-07-24 08:46:21 -0700</bug_when>
    <thetext>Comment on attachment 154064
HarfbuzzNG support based on cairo and freetype.

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

In addition to the comments, I would also like to seggest you to try building with pango backend and also a --minimal build.

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests, complex font support is covered by existing tests.

I guess you might have some tests to unskip or rebaseline.

&gt; Source/WebCore/PlatformEfl.cmake:170
&gt; +      platform/graphics/harfbuzz/HarfBuzzShaperBase.cpp
&gt; +      platform/graphics/harfbuzz/ng/HarfBuzzNGFace.cpp
&gt; +      platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp
&gt; +      platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp
&gt; +    )
&gt; +    LIST(APPEND WebCore_LIBRARIES
&gt; +      ${HARFBUZZ_LIBRARIES}
&gt;      )

Maybe this should be conditoned to DWTF_USE_HARFBUZZ_NG. Usually the .cpp are always added to the build system and the contents protected by the flags.

&gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:48
&gt; +    if (shaper.shape(&amp;glyphBuffer)) {
&gt; +        drawGlyphBuffer(context, run, glyphBuffer, point);
&gt; +        return;
&gt; +    }
&gt; +    ASSERT_NOT_REACHED();

Isn&apos;t better to write as ASSERT(shaper.shape(&amp;glyphBuffer)) and remove the ASSERT_NOT_REACHED()?

Looks to me that this code will do a unnecessary if you build release.

&gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:71
&gt; +    if (shaper.shape())
&gt; +        return shaper.totalWidth();
&gt; +    ASSERT_NOT_REACHED();

Ditto.

&gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:90
&gt; +    if (shaper.shape())
&gt; +        return shaper.selectionRect(point, h, from, to);
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return FloatRect();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676884</commentid>
    <comment_count>5</comment_count>
      <attachid>154064</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 09:03:05 -0700</bug_when>
    <thetext>Comment on attachment 154064
HarfbuzzNG support based on cairo and freetype.

Attachment 154064 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13324622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676928</commentid>
    <comment_count>6</comment_count>
      <attachid>154090</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 09:55:00 -0700</bug_when>
    <thetext>Created attachment 154090
HarfbuzzNG support based on cairo and freetype, v2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676929</commentid>
    <comment_count>7</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 09:59:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 154064 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154064&amp;action=review
&gt; 
&gt; In addition to the comments, I would also like to seggest you to try building with pango backend and also a --minimal build.

--minimal build works.
I plan to remove the pango backend, see bug 92102.

&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        No new tests, complex font support is covered by existing tests.
&gt; 
&gt; I guess you might have some tests to unskip or rebaseline.

Yes, I plan to handle that separately in bug 92120.

&gt; &gt; Source/WebCore/PlatformEfl.cmake:170
&gt; &gt; +      platform/graphics/harfbuzz/HarfBuzzShaperBase.cpp
&gt; &gt; +      platform/graphics/harfbuzz/ng/HarfBuzzNGFace.cpp
&gt; &gt; +      platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp
&gt; &gt; +      platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp
&gt; &gt; +    )
&gt; &gt; +    LIST(APPEND WebCore_LIBRARIES
&gt; &gt; +      ${HARFBUZZ_LIBRARIES}
&gt; &gt;      )
&gt; 
&gt; Maybe this should be conditoned to DWTF_USE_HARFBUZZ_NG. Usually the .cpp are always added to the build system and the contents protected by the flags.

The idea is that when freetype is the backend, Harfbuzz is mandatory. The WTF_USE_HARFBUZZ_NG define is only needed for cross-port compatibility with Chromium. So, the files are compiled completely and the library always needs to be added.


&gt; &gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:48
&gt; &gt; +    if (shaper.shape(&amp;glyphBuffer)) {
&gt; &gt; +        drawGlyphBuffer(context, run, glyphBuffer, point);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; Isn&apos;t better to write as ASSERT(shaper.shape(&amp;glyphBuffer)) and remove the ASSERT_NOT_REACHED()?

I removed the assertions and decided to do error logging instead. It&apos;s not improbably that something goes wrong inside the shaper due to encoding issues in the page. We shouldn&apos;t completely bail out for that.

In addition, build issues on EFL and GTK EWS (hopefully) fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676932</commentid>
    <comment_count>8</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 10:02:43 -0700</bug_when>
    <thetext>*** Bug 91858 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676989</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-24 10:33:25 -0700</bug_when>
    <thetext>Simon, maybe this is interesting for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676990</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-24 10:34:00 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Similar to Chromium mac, we can add complex font rendering path to cairo using Harfbuzz NG shaper + drawGlyphBuffer.
&gt; I propose to add a new file FontCairoComplex.cpp that implements this.

Wouldn&apos;t FontComplexCairo make more sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676996</commentid>
    <comment_count>11</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 10:39:10 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Wouldn&apos;t FontComplexCairo make more sense?

There is FontCairo.cpp already. For consistency and given the fact that FontCairoComplex only implements the additional methods of class Font which deal with the complex path, I thought the &quot;Complex&quot; suffix was a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677003</commentid>
    <comment_count>12</comment_count>
      <attachid>154090</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-24 10:43:51 -0700</bug_when>
    <thetext>Comment on attachment 154090
HarfbuzzNG support based on cairo and freetype, v2.

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

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:106
&gt; +    cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0);
&gt; +    if (status != CAIRO_STATUS_SUCCESS)
&gt; +        return false;
&gt; +    ASSERT(numGlyphs &gt; 0);

it is common to add newlines before and after blocks and returns.

&gt; ChangeLog:10
&gt; +        * Source/cmake/FindHarfBuzz.cmake: Added. Pkgconfig based discovery of HarfBuzz.

Added pkgconfig ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677006</commentid>
    <comment_count>13</comment_count>
      <attachid>154090</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 10:44:49 -0700</bug_when>
    <thetext>Comment on attachment 154090
HarfbuzzNG support based on cairo and freetype, v2.

Attachment 154090 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13325521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677139</commentid>
    <comment_count>14</comment_count>
      <attachid>154126</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 13:06:01 -0700</bug_when>
    <thetext>Created attachment 154126
HarfbuzzNG support based on cairo and freetype, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677142</commentid>
    <comment_count>15</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 13:08:10 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 154090 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154090&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:106
&gt; &gt; +    cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0);
&gt; &gt; +    if (status != CAIRO_STATUS_SUCCESS)
&gt; &gt; +        return false;
&gt; &gt; +    ASSERT(numGlyphs &gt; 0);
&gt; 
&gt; it is common to add newlines before and after blocks and returns.

Added newline after return, removed one unnecessary newline a bit further up. So it&apos;s even. :-)

&gt; &gt; ChangeLog:10
&gt; &gt; +        * Source/cmake/FindHarfBuzz.cmake: Added. Pkgconfig based discovery of HarfBuzz.
&gt; 
&gt; Added pkgconfig ...

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677143</commentid>
    <comment_count>16</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-24 13:09:04 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 154090 [details])
&gt; Attachment 154090 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/13325521

I believe this failure is an EWS artifact due to my touching jhbuild.modules here. I couldn&apos;t reproduce this failure after trying clean builds on two different machines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677251</commentid>
    <comment_count>17</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-24 15:19:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 154090 [details] [details])
&gt; &gt; Attachment 154090 [details] [details] did not pass efl-ews (efl):
&gt; &gt; Output: http://queues.webkit.org/results/13325521
&gt; 
&gt; I believe this failure is an EWS artifact due to my touching jhbuild.modules here. I couldn&apos;t reproduce this failure after trying clean builds on two different machines.

The error message looks pretty real:

/usr/bin/ld: ../../lib/libwebcore_efl.a(HarfBuzzShaper.cpp.o): undefined reference to symbol &apos;hb_buffer_get_length&apos;
/usr/bin/ld: note: &apos;hb_buffer_get_length&apos; is defined in DSO /mnt/eflews/git/webkit/WebKitBuild/Dependencies/Root/lib64/libharfbuzz.so.0 so try adding it to the linker command line
/mnt/eflews/git/webkit/WebKitBuild/Dependencies/Root/lib64/libharfbuzz.so.0: could not read symbols: Invalid operation

Looking at your FindHarfBuzz, I see you use PKG_CHECK_MODULES, which is case-sentitive. This means harfbuzz_LIBRARIES is being set instead of HARFBUZZ_LIBRARIES, so you end up not linking to harfbuzz at all in WebCore&apos;s PlatformEfl.cmake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677275</commentid>
    <comment_count>18</comment_count>
      <attachid>154126</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-24 15:32:46 -0700</bug_when>
    <thetext>Comment on attachment 154126
HarfbuzzNG support based on cairo and freetype, v3

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

&gt; Source/cmake/FindHarfBuzz.cmake:3
&gt; +INCLUDE(FindPkgConfig)
&gt; +
&gt; +PKG_CHECK_MODULES (harfbuzz REQUIRED harfbuzz&gt;=0.9.0)

Comments with my build system hat:

 - First of all, this file should have a license/usage header (see FindGStreamer.cmake, for example).

 - Relying solely on pkg-config is also not very good, the main reason being that pkg-config will simply report paths (such as include and library locations) in their absolute form. This is why we currently have those ugly LDFLAGS variables in our build system files. You should instead use pkg-config as an additional helper tool, and use CMake&apos;s FIND_PATH and FIND_LIBRARY calls to actually find the things you are looking for. The general form of a simple FindFoo.cmake file would be something like this:

  FIND_PACKAGE(PkgConfig)

  PKG_CHECK_MODULES(PC_HARFBUZZ harfbuzz&gt;=0.9.0)

  FIND_PATH(HARFBUZZ_INCLUDE_DIRS NAMES harfbuzz.h # whatever header you are looking for
      HINTS ${PC_HARFBUZZ_INCLUDE_DIRS} ${PC_HARFBUZZ_INCLUDEDIR}
  )

  FIND_LIBRARY(HARFBUZZ_LIBRARIES NAMES harfbuzz # &quot;lib&quot; is prepended automatically
      HINTS ${PC_HARFBUZZ_LIBRARY_DIRS} ${PC_HARFBUZZ_LIBDIR}
  )

  INCLUDE(FindPackageHandleStandardArgs)
  FIND_PACKAGE_HANDLE_STANDARD_ARGS(HarfBuzz DEFAULT_MSG HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES)

By using CMake&apos;s own commands to find files and libraries, the resulting variables will have the full paths set. This means, on its turn, that you can use INCLUDE_DIRECTORIES(${HARFBUZZ_INCLUDE_DIRS}) to add the header&apos;s path to the compiler&apos;s include path, and using ${HARFBUZZ_LIBRARIES} in TARGET_LINK_LIBRARIES() will pass -L/full/path/to/libharfbuzz.so to the linker instead of -lharfbuzz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677279</commentid>
    <comment_count>19</comment_count>
      <attachid>154126</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 15:33:43 -0700</bug_when>
    <thetext>Comment on attachment 154126
HarfbuzzNG support based on cairo and freetype, v3

Attachment 154126 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13324737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677308</commentid>
    <comment_count>20</comment_count>
      <attachid>154126</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-24 16:01:47 -0700</bug_when>
    <thetext>Comment on attachment 154126
HarfbuzzNG support based on cairo and freetype, v3

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

Two additional comments:
 - Do you need to add the platform/graphics/harfbuzz includes to Tools/WTR and WebKit2 even if you do not link against it? Plus, do you need to link against HB in WebKit itself?
 - I couldn&apos;t find harfbuzz packages for Debian, Ubuntu, ArchLinux or FreeBSD (not with that name at least). Are we expected to externally depend on it or should it be bundled with the port&apos;s code (in a tarball, for example)?

&gt; Source/WebKit/PlatformEfl.cmake:59
&gt; +  LIST(APPEND WebCore_LIBRARIES

s/WebCore/WebKit/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677801</commentid>
    <comment_count>21</comment_count>
      <attachid>154294</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 01:59:17 -0700</bug_when>
    <thetext>Created attachment 154294
HarfbuzzNG support based on cairo and freetype, v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677807</commentid>
    <comment_count>22</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 02:06:22 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 154126 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154126&amp;action=review
&gt; 
&gt; &gt; Source/cmake/FindHarfBuzz.cmake:3
&gt; &gt; +INCLUDE(FindPkgConfig)
&gt; &gt; +
&gt; &gt; +PKG_CHECK_MODULES (harfbuzz REQUIRED harfbuzz&gt;=0.9.0)
&gt; 
&gt; Comments with my build system hat:
&gt;  - First of all, this file should have a license/usage header (see FindGStreamer.cmake, for example).

Fixed. I guess looking at FindEFL.cmake as an example was not a good idea for many reasons. Noone with a build system hat seems to have reviewed that one...

&gt;  - Relying solely on pkg-config is also not very good, the main reason being that pkg-config will simply report paths (such as include and library locations) in their absolute form. This is why we currently have those ugly LDFLAGS variables in our build system files. You should instead use pkg-config as an additional helper tool, and use CMake&apos;s FIND_PATH and FIND_LIBRARY calls to actually find the things you are looking for. The general form of a simple FindFoo.cmake file would be something like this:
&gt; [...]
&gt; By using CMake&apos;s own commands to find files and libraries, the resulting variables will have the full paths set. This means, on its turn, that you can use INCLUDE_DIRECTORIES(${HARFBUZZ_INCLUDE_DIRS}) to add the header&apos;s path to the compiler&apos;s include path, and using ${HARFBUZZ_LIBRARIES} in TARGET_LINK_LIBRARIES() will pass -L/full/path/to/libharfbuzz.so to the linker instead of -lharfbuzz.

Thanks for the CMAKE lesson. Incorporated your suggestions, may the BSD gods have mercy. Still don&apos;t fully understand why it&apos;s better - but we can take that as a discussion offline. You&apos;re saying bad thing about pkg-config is that it results in &quot;absolute form&quot; paths, the improvement using the CMAKE methodology being that &quot;the resulting variables will have the full paths set&quot;. What&apos;s the difference between full and absolute? :-)

(In reply to comment #20)
&gt; (From update of attachment 154126 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154126&amp;action=review
&gt; 
&gt; Two additional comments:
&gt;  - Do you need to add the platform/graphics/harfbuzz includes to Tools/WTR and WebKit2 even if you do not link against it? Plus, do you need to link against HB in WebKit itself?

@Includes: Yes, needed since the HarfBuzzNGFace.h gets included.
@Linking: No, it&apos;s probably enough to link WebCore against Harfbuzz, hence...

&gt; &gt; Source/WebKit/PlatformEfl.cmake:59
&gt; &gt; +  LIST(APPEND WebCore_LIBRARIES
&gt; 
&gt; s/WebCore/WebKit/

removed.

&gt;  - I couldn&apos;t find harfbuzz packages for Debian, Ubuntu, ArchLinux or FreeBSD (not with that name at least). Are we expected to externally depend on it or should it be bundled with the port&apos;s code (in a tarball, for example)?

Added a note in https://trac.webkit.org/wiki/EFLWebKit#Dependencies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677945</commentid>
    <comment_count>23</comment_count>
      <attachid>154294</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-07-25 05:18:54 -0700</bug_when>
    <thetext>Comment on attachment 154294
HarfbuzzNG support based on cairo and freetype, v4

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

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:93
&gt; +static hb_bool_t harfbuzzGetGlyph(hb_font_t* hbFont, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData)

I think that this function is going to be a hot code path.

If you look at the CoreText implementation for example, then you can see that it avoids any allocations.

Is there a lower-level API that you can use?

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:105
&gt; +    cairo_status_t status = CAIRO_STATUS_SUCCESS;
&gt; +    cairo_glyph_t* glyphs = 0;
&gt; +    int numGlyphs = 0;
&gt; +    CString utf8Codepoint = UTF8Encoding().encode(reinterpret_cast&lt;UChar*&gt;(&amp;unicode), 1, QuestionMarksForUnencodables);
&gt; +    cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0);
&gt; +    if (status != CAIRO_STATUS_SUCCESS)
&gt; +        return false;

It looks like &quot;status&quot; is an unused variable. Did you mean to initialize it from the return value of cairo_scaled_font_text_to_glyphs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677984</commentid>
    <comment_count>24</comment_count>
      <attachid>154338</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 06:30:20 -0700</bug_when>
    <thetext>Created attachment 154338
HarfbuzzNG support based on cairo and freetype, v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677985</commentid>
    <comment_count>25</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 06:32:55 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 154294 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154294&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:93
&gt; &gt; +static hb_bool_t harfbuzzGetGlyph(hb_font_t* hbFont, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData)
&gt; 
&gt; I think that this function is going to be a hot code path.
&gt; If you look at the CoreText implementation for example, then you can see that it avoids any allocations.
&gt; Is there a lower-level API that you can use?

Yes, I wasn&apos;t exactly happy with the UTF16-&gt;UTF8 conversion here either. Thanks for pointing me at it again - we can actually use the corresponding Freetype function here directly (inspired by the Harfbuzz freetype implementation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678002</commentid>
    <comment_count>26</comment_count>
      <attachid>154338</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-25 07:00:53 -0700</bug_when>
    <thetext>Comment on attachment 154338
HarfbuzzNG support based on cairo and freetype, v5

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

&gt; Source/cmake/FindHarfBuzz.cmake:27
&gt; +#

This is not a requirement, but rather a friendly heads-up: FindFoo.cmake files normally include some documentation stating what they do and what variables are set (see FindGStreamer.cmake or http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/readme.txt;h=7d61d8d27377733b6722d40e7c86843277b8e871;hb=HEAD , the latter for a much lengthier explanation).

&gt; Source/cmake/FindHarfBuzz.cmake:31
&gt; +PKG_CHECK_MODULES (harfbuzz REQUIRED harfbuzz&gt;=0.9.0)

This seems to be a leftover.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678006</commentid>
    <comment_count>27</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-25 07:06:32 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt;  - Relying solely on pkg-config is also not very good, the main reason being that pkg-config will simply report paths (such as include and library locations) in their absolute form. This is why we currently have those ugly LDFLAGS variables in our build system files. You should instead use pkg-config as an additional helper tool, and use CMake&apos;s FIND_PATH and FIND_LIBRARY calls to actually find the things you are looking for. The general form of a simple FindFoo.cmake file would be something like this:
&gt; &gt; [...]
&gt; &gt; By using CMake&apos;s own commands to find files and libraries, the resulting variables will have the full paths set. This means, on its turn, that you can use INCLUDE_DIRECTORIES(${HARFBUZZ_INCLUDE_DIRS}) to add the header&apos;s path to the compiler&apos;s include path, and using ${HARFBUZZ_LIBRARIES} in TARGET_LINK_LIBRARIES() will pass -L/full/path/to/libharfbuzz.so to the linker instead of -lharfbuzz.
&gt; 
&gt; Thanks for the CMAKE lesson. Incorporated your suggestions, may the BSD gods have mercy. Still don&apos;t fully understand why it&apos;s better - but we can take that as a discussion offline. You&apos;re saying bad thing about pkg-config is that it results in &quot;absolute form&quot; paths, the improvement using the CMAKE methodology being that &quot;the resulting variables will have the full paths set&quot;. What&apos;s the difference between full and absolute? :-)

Oops :-) What I meant is that CMake&apos;s PKG_CHECK_MODULES() will read the pkg-config .pc files, which normally have lines such as &quot;Libs: -lfoo&quot; which are then used in our TARGET_LINK_LIBRARIES() calls. In the end, the linker gets called with a command line that only says &quot;ld -lfoo ...&quot;, which relies on libfoo.so being in a standard linker path (or -L being passed in the right order to the linker by other means). If, on the other hand, CMake&apos;s FIND_LIBRARY() is used, the linker will be called as &quot;ld -l/opt/foo/bar/libfoo.so&quot;, which is safer.

So I guess there&apos;s no difference between full and absolute, it&apos;s pkg-config that does not report absolute paths (and me being terrible at giving lessons of any form ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678413</commentid>
    <comment_count>28</comment_count>
      <attachid>154433</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 13:45:39 -0700</bug_when>
    <thetext>Created attachment 154433
HarfbuzzNG support based on cairo and freetype, v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678419</commentid>
    <comment_count>29</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-25 13:48:53 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 154338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154338&amp;action=review
&gt; 
&gt; &gt; Source/cmake/FindHarfBuzz.cmake:27
&gt; &gt; +#
&gt; 
&gt; This is not a requirement, but rather a friendly heads-up: FindFoo.cmake files normally include some documentation stating what they do and what variables are set (see FindGStreamer.cmake or 

Even though the FindHarfBuzz name here is rather self-evident, I put some sort documentation inside the file. :-) Thanks for the friendly heads-up.

&gt; &gt; Source/cmake/FindHarfBuzz.cmake:31
&gt; &gt; +PKG_CHECK_MODULES (harfbuzz REQUIRED harfbuzz&gt;=0.9.0)
&gt; 
&gt; This seems to be a leftover.

Indeed, sorry. Removed.

Simon, Martin, how&apos;s the patch looking to you now? Can we get this landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679361</commentid>
    <comment_count>30</comment_count>
      <attachid>154433</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-07-26 08:29:01 -0700</bug_when>
    <thetext>Comment on attachment 154433
HarfbuzzNG support based on cairo and freetype, v6

r=me. I&apos;m not super familiar with the cmake stuff, so I won&apos;t set cq+ just yet but give others time to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679377</commentid>
    <comment_count>31</comment_count>
      <attachid>154433</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-26 08:50:26 -0700</bug_when>
    <thetext>Comment on attachment 154433
HarfbuzzNG support based on cairo and freetype, v6

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

Glad to see this work! Sorry that I didn&apos;t pick it up when I said I would.

&gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:3
&gt; +/*
&gt; + * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2012 Intel Corporation

How about FontCairoHarfbuzzNG to match the naming scheme of the other files? FontCairoComplex seems too general, as it doesn&apos;t cover the Windows port (for example).

&gt; Source/WebCore/platform/graphics/cairo/FontCairoComplex.cpp:37
&gt; +#include &quot;SimpleFontData.h&quot;
&gt; +
&gt; +#include &lt;cairo.h&gt;

No newline is required here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680295</commentid>
    <comment_count>32</comment_count>
      <attachid>154877</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-27 01:40:00 -0700</bug_when>
    <thetext>Created attachment 154877
HarfbuzzNG support based on cairo and freetype, final.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680298</commentid>
    <comment_count>33</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-27 01:40:59 -0700</bug_when>
    <thetext>(In reply to comment #31)

&gt; How about FontCairoHarfbuzzNG to match the naming scheme of the other files? FontCairoComplex seems too general, as it doesn&apos;t cover the Windows port (for example).

Good idea, thanks - done.

&gt; No newline is required here.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680437</commentid>
    <comment_count>34</comment_count>
      <attachid>154877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 04:33:07 -0700</bug_when>
    <thetext>Comment on attachment 154877
HarfbuzzNG support based on cairo and freetype, final.

Clearing flags on attachment: 154877

Committed r123864: &lt;http://trac.webkit.org/changeset/123864&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680438</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 04:33:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681914</commentid>
    <comment_count>36</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-30 05:40:17 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681915</commentid>
    <comment_count>37</comment_count>
      <attachid>155271</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-30 05:40:30 -0700</bug_when>
    <thetext>Created attachment 155271
Using cairo_scaled_font approach, cleanup for FindHarfbuzz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681916</commentid>
    <comment_count>38</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-30 05:41:33 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Created an attachment (id=155271) [details]
&gt; Using cairo_scaled_font approach, cleanup for FindHarfbuzz

Actually, the Freetype based harfbuzzGetGlyph implementation produces incorrect results for

fast/dom/52776.html
fast/text/atsui-negative-spacing-features.html
fast/text/atsui-spacing-features.html

I would like to revert to the cairo based implementation for now and leave the optimization to switch to a lower level library for a later step.

Also, cleaning up an accidental leftover in FindHarfbuzz.cmake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681922</commentid>
    <comment_count>39</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-07-30 05:44:32 -0700</bug_when>
    <thetext>(In reply to comment #38)

&gt; I would like to revert to the cairo based implementation for now and leave the optimization to switch to a lower level library for a later step.

Created Bug 92641 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684369</commentid>
    <comment_count>40</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-08-01 11:32:22 -0700</bug_when>
    <thetext>Simon, Martin - would you have time to r+ the recent change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685221</commentid>
    <comment_count>41</comment_count>
      <attachid>155271</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-02 04:37:14 -0700</bug_when>
    <thetext>Comment on attachment 155271
Using cairo_scaled_font approach, cleanup for FindHarfbuzz

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        fails to procude correct results for some tests.

procude -&gt; produce :)

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:103
&gt; +    status = cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0);

Why not just do:

if (CAIRO_STATUS_SUCCESS != cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0))
    return false;

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzNGFaceCairo.cpp:107
&gt; +    if (status != CAIRO_STATUS_SUCCESS)
&gt; +        return false;
&gt; +
&gt; +    ASSERT(numGlyphs &gt; 0);

It&apos;s a bit odd to ASSERT against the return value of third-party software. Better here to mistrust it and handle that situation:

if (!numGlyphs)
    return false;

&gt; Source/cmake/FindHarfBuzz.cmake:31
&gt; +# Try to find Harfbuzz include and library directories.
&gt;  #
&gt; +# After successful discovery, this will set for inclusion where needed:
&gt; +# HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers
&gt; +# HARFBUZZ_LIBRARIES - containg the HarfBuzz library

This change seems unrelated, so perhaps it could be split into another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685304</commentid>
    <comment_count>42</comment_count>
      <attachid>156067</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-08-02 06:28:53 -0700</bug_when>
    <thetext>Created attachment 156067
Using cairo_scaled_font approach, review comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685308</commentid>
    <comment_count>43</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-08-02 06:35:20 -0700</bug_when>
    <thetext>Thanks a lot Martin - that was very quick :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685354</commentid>
    <comment_count>44</comment_count>
      <attachid>156067</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 07:21:28 -0700</bug_when>
    <thetext>Comment on attachment 156067
Using cairo_scaled_font approach, review comments addressed

Clearing flags on attachment: 156067

Committed r124454: &lt;http://trac.webkit.org/changeset/124454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685355</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 07:21:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154062</attachid>
            <date>2012-07-24 07:59:57 -0700</date>
            <delta_ts>2012-07-24 08:04:17 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo-ft.</desc>
            <filename>bug-91864-20120724180205.patch</filename>
            <type>text/plain</type>
            <size>30026</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM5ODFkMTFjNGRhZWRm
Yjg3MjA1YzI1ODhkMDI4OTgxYTY1N2U0MC4uZjQ2YTZiM2FiMjNmNzk3MDhkOTg4OGUyMTAwMmUy
NmZhM2M5ZTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI0ICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHNvbWUgY2FsbHNp
dGVzIG9mIHNoYWRvd0FuY2VzdG9yTm9kZSgpIHdpdGggc2hhZG93SG9zdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDlhMmFkZWEzN2NhNDFmYjNjMDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmJiOGJmZjUzNWQ1NTgx
MDEyYzJkNGYwMjlkODIyMmQ1NGU1ZGU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNv
bT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJm
YnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGluZyBpbmNsdWRlcyBmb3IgaGFyZmJ1enogZm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorCiAyMDEyLTA3LTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW5hbWUgRU5BQkxFX01FVEVSX1RBRyBhbmQgRU5BQkxFX1BST0dSRVNTX1RB
RyB0byBFTkFCTEVfTUVURVJfRUxFTUVOVCBhbmQgRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQgcmVz
cGVjdGl2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmE1MzE3YzA4ZjRhMTllOWFiMTA2NTU5ZWFkYWIwMGZl
NGU1ZWFiMi4uZjVlNzBmOGVlOWU2ZjNlNzFjNGJkZTIxYWIwNzNkZTFjNDM5NmE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3LTI0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxk
b21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxl
eCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgaW5jbHVkZXMgZm9yIGhhcmZidXp6IGZvbGRl
cnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wNy0yNCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gRml4IHBvc3NpYmxlIGNyYXNoIGluIGRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMzUyYjU0ZTZkM2Q0ZmU4YzFhOWViZGFjYmRjODUxYjMyZmQ1ODNk
YS4uNDQ4MzNlMjQ3MzIzZGVjY2IzMjY1MTIwMzg1NjE1NGFkOWIxMzAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTQ4LDYgKzQ4LDggQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggYTlhNGYxMTIyNzY2MmQzNzgzZDJhOTMyNDIyYmUzMDhjMmM2
NzI0NS4uYjNjNGM4YTgxYmQ1ZmI1ZGIzYWUxNTAxMmJmNGI2MGU3MzdkMzk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0OSwxNSArMTQ5LDI0IEBAIElGIChXVEZfVVNFX0NBSVJP
KQogICBJRiAoV1RGX1VTRV9GUkVFVFlQRSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZSIKKyAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei8iCisgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmci
CiAgICAgKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCi0gICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
Rm9udEVmbC5jcHAKKyAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBs
ZXguY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcAorICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuY3BwCisgICAgKQorICAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAke0hBUkZCVVpaX0xJQlJBUklFU30KICAgICAp
CiAgIEVORElGICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMjg2NjE1YTlkODA3N2ZlMDk2ZmRm
YTAzMzI4ZmY2Y2JiM2ZlZGQ1Li44MzY0ZmJkNmZlNjU4ZmQxYmNkYTUxM2JiYWZlYjYxOThiYWVm
YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjUyLDcgKzM2NTIsNiBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbScsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRFZmwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9JbnRQb2ludEVmbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzRhNzEzMDA1NzQxMTY1NGEyNzI1NTRjY2Y5ZWE4ZmJiY2IzNzk5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
Q29tcGxleC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9p
ZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdAoreworICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoJmdseXBoQnVmZmVyKSkg
eworICAgICAgICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgcnVuLCBnbHlwaEJ1ZmZlciwgcG9p
bnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0
b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGlu
dCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQo
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9h
dCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNo
U2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKK3sKKyAg
ICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBpZiAoc2hhcGVyLnNoYXBl
KCkpCisgICAgICAgIHJldHVybiBzaGFwZXIudG90YWxXaWR0aCgpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRp
b25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wpIGNvbnN0
Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBl
ci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVyLm9mZnNldEZvclBvc2l0aW9uKHgpOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitGbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorewor
ICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hh
cGUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBlci5zZWxlY3Rpb25SZWN0KHBvaW50LCBoLCBmcm9t
LCB0byk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvRm9udEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9u
dEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2M3ZmZlMzM4ZTVkY2E4
NTA3OTdmNDM1OTE1ZDNhYWQxYjczZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRF
ZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRm9udC5oIgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgotCi0jaW5jbHVk
ZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZvbnQ6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29u
dGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9t
aWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQg
LyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLWJvb2wgRm9udDo6Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCkK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRl
b2dyYXBoc0luQ29tcGxleFRleHQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZmxvYXQg
Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNv
bnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwLjBmOwotfQotCi1pbnQgRm9udDo6b2Zmc2V0Rm9y
UG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQsIGJvb2wpIGNvbnN0
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRmxvYXRSZWN0
IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGludCwgaW50LCBpbnQpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEu
aAppbmRleCAyMDY2NTNkZGY3Zjg3Y2RjMGMwZDdhZTFlZjk0YmQzOWQ2NzdmMmQ5Li42YTYyYzZj
N2NjNDVjODljYmQ1YmUyMWViZTAxZjQ0MTE5OTU1ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YS5oCkBAIC0yOSwxMSArMjksMTUgQEAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2lm
IFVTRShIQVJGQlVaWl9ORykKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNG
b250U2V0OworY2xhc3MgSGFyZkJ1enpOR0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAor
I2lmIFVTRShIQVJGQlVaWl9ORykKKyAgICBIYXJmQnV6ek5HRmFjZSogaGFyZmJ1enpGYWNlKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CiAgICAgZmxvYXQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShmbG9hdCBzaXpl
KSB7IG1fc2l6ZSA9IHNpemU7IH0KQEAgLTk4LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICBib29s
IG1fc3ludGhldGljT2JsaXF1ZTsKICAgICBib29sIG1fZml4ZWRXaWR0aDsKICAgICBjYWlyb19z
Y2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7CisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG11
dGFibGUgUmVmUHRyPEhhcmZCdXp6TkdGYWNlPiBtX2hhcmZidXp6RmFjZTsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhGb250RmFjZShjYWlyb19mb250X2ZhY2Vf
dCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgPSBGb250RGVzY3JpcHRpb24oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA5OGFlNWVkNjY0ZGM0MzU5
M2ViM2RlODcxZjhkM2U0NDdjMjgyMDUyLi4zYzkzZDhkMTM3ZjRmOWJlNGI3ZjQzNmRhODhhNzIx
NzhmZmE4YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
QEAgLTE4NiwxNyArMTg2LDI3IEBAIEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6
Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICAgICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogICAgIG1fc2NhbGVkRm9udCA9IGNh
aXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxlZEZvbnQpOwogCisjaWYgVVNF
KEhBUkZCVVpaX05HKQorICAgIG1faGFyZmJ1enpGYWNlID0gb3RoZXIubV9oYXJmYnV6ekZhY2U7
CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICA6IG1fZmFs
bGJhY2tzKDApCiAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisg
ICAgLCBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRpZgogewogICAg
ICp0aGlzID0gb3RoZXI7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCisjaWYgVVNFKEhBUkZC
VVpaX05HKQorICAgIDogbV9oYXJmYnV6ekZhY2Uob3RoZXIubV9oYXJmYnV6ekZhY2UpCisjZW5k
aWYKIHsKICAgICAqdGhpcyA9IG90aGVyOwogCkBAIC0yMTcsNiArMjI3LDE2IEBAIEZvbnRQbGF0
Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRf
ZGVzdHJveShtX3NjYWxlZEZvbnQpOwogfQogCisjaWZkZWYgVVNFKEhBUkZCVVpaX05HKQorSGFy
ZkJ1enpOR0ZhY2UqIEZvbnRQbGF0Zm9ybURhdGE6OmhhcmZidXp6RmFjZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2hhcmZidXp6RmFjZSkKKyAgICAgICAgbV9oYXJmYnV6ekZhY2UgPSBIYXJmQnV6
ek5HRmFjZTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KHRoaXMpLCBoYXNo
KCkpOworCisgICAgcmV0dXJuIG1faGFyZmJ1enpGYWNlLmdldCgpOworfQorI2VuZGlmCisKIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNoKCkKIHsKICAgICByZXR1cm4gbV9maXhl
ZFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTIxZTE2ZTBlNjk5MDk1ZWU5OTYxODVlZTkyYTZlMDUyM2RlNDVmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1
enpOR0ZhY2VDYWlyby5jcHAKQEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIYXJmQnV6
ek5HRmFjZS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkds
eXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGNhaXJv
LWZ0Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9mcmVldHlwZS5o
PgorI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFibGVzLmg+CisjaW5jbHVkZSA8aGIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2Fpcm9GdEZhY2VMb2NrZXIgeworcHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2VyKGNhaXJv
X3NjYWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkgOiBtX3NjYWxlZEZvbnQoY2Fpcm9TY2Fs
ZWRGb250KSB7IH07CisgICAgRlRfRmFjZSBsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBj
YWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKKyAgICB9OworICAg
IH5DYWlyb0Z0RmFjZUxvY2tlcigpIHsKKyAgICAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRfdW5s
b2NrX2ZhY2UobV9zY2FsZWRGb250KTsKKyAgICB9Citwcml2YXRlOgorICAgIGNhaXJvX3NjYWxl
ZF9mb250X3QqIG1fc2NhbGVkRm9udDsKK307CisKK3N0YXRpYyBoYl9wb3NpdGlvbl90IGZsb2F0
VG9IYXJmQnV6elBvc2l0aW9uKGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7Cit9CisKK3N0YXRpYyBoYl9wb3Np
dGlvbl90IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihkb3VibGUgdmFsdWUpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGhiX3Bvc2l0aW9uX3Q+KHZhbHVlICogKDEgPDwgMTYpKTsKK30KKwor
c3RhdGljIHZvaWQgQ2Fpcm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhjYWlyb19zY2FsZWRfZm9u
dF90KiBzY2FsZWRGb250LCBoYl9jb2RlcG9pbnRfdCBjb2RlcG9pbnQsIGhiX3Bvc2l0aW9uX3Qq
IGFkdmFuY2UsIGhiX2dseXBoX2V4dGVudHNfdCogZXh0ZW50cykKK3sKKyAgICBjYWlyb190ZXh0
X2V4dGVudHNfdCBnbHlwaEV4dGVudHM7CisgICAgY2Fpcm9fZ2x5cGhfdCBnbHlwaDsKKyAgICBn
bHlwaC5pbmRleCA9IGNvZGVwb2ludDsKKyAgICBnbHlwaC54ID0gMDsKKyAgICBnbHlwaC55ID0g
MDsKKyAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKHNjYWxlZEZvbnQsICZnbHlw
aCwgMSwgJmdseXBoRXh0ZW50cyk7CisKKyAgICBpZiAoYWR2YW5jZSkKKyAgICAgICAgKmFkdmFu
Y2UgPSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLnhfYWR2YW5jZSk7Cisg
ICAgaWYgKGV4dGVudHMpIHsKKyAgICAgICAgZXh0ZW50cy0+eF9iZWFyaW5nID0gZG91YmxlVG9I
YXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy54X2JlYXJpbmcpOworICAgICAgICBleHRlbnRz
LT55X2JlYXJpbmcgPSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLnlfYmVh
cmluZyk7CisgICAgICAgIGV4dGVudHMtPndpZHRoID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9u
KGdseXBoRXh0ZW50cy53aWR0aCk7CisgICAgICAgIGV4dGVudHMtPmhlaWdodCA9IGRvdWJsZVRv
SGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMuaGVpZ2h0KTsKKyAgICB9Cit9CisKK3N0YXRp
YyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaChoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9u
dERhdGEsIGhiX2NvZGVwb2ludF90IHVuaWNvZGUsIGhiX2NvZGVwb2ludF90IHZhcmlhdGlvblNl
bGVjdG9yLCBoYl9jb2RlcG9pbnRfdCogZ2x5cGgsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZv
bnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRm
b3JtRGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250
ID0gcGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOwor
CisgICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CisgICAg
Y2Fpcm9fZ2x5cGhfdCogZ2x5cGhzID0gMDsKKyAgICBpbnQgbnVtR2x5cGhzID0gMDsKKyAgICBD
U3RyaW5nIHV0ZjhDb2RlcG9pbnQgPSBVVEY4RW5jb2RpbmcoKS5lbmNvZGUocmVpbnRlcnByZXRf
Y2FzdDxVQ2hhcio+KCZ1bmljb2RlKSwgMSwgUXVlc3Rpb25NYXJrc0ZvclVuZW5jb2RhYmxlcyk7
CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdGV4dF90b19nbHlwaHMoc2NhbGVkRm9udCwgMCwgMCwg
dXRmOENvZGVwb2ludC5kYXRhKCksIHV0ZjhDb2RlcG9pbnQubGVuZ3RoKCksICZnbHlwaHMsICZu
dW1HbHlwaHMsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RB
VFVTX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobnVtR2x5cGhz
ID4gMCk7CisgICAgKmdseXBoID0gZ2x5cGhzWzBdLmluZGV4OworICAgIGNhaXJvX2dseXBoX2Zy
ZWUoZ2x5cGhzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3Qg
aGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlKGhiX2ZvbnRfdCogaGJGb250LCB2b2lk
KiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIHZvaWQqIHVzZXJEYXRhKQoreworICAg
IEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBs
YXRmb3JtRGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRG
b250ID0gcGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQp
OworCisgICAgaGJfcG9zaXRpb25fdCBhZHZhbmNlID0gMDsKKyAgICBDYWlyb0dldEdseXBoV2lk
dGhBbmRFeHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAmYWR2YW5jZSwgMCk7CisgICAgcmV0dXJu
IGFkdmFuY2U7Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250
YWxPcmlnaW4oaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRf
dCBnbHlwaCwgaGJfcG9zaXRpb25fdCogeCwgaGJfcG9zaXRpb25fdCogeSwgdm9pZCogdXNlckRh
dGEpCit7CisgICAgLy8gSnVzdCByZXR1cm4gdHJ1ZSwgZm9sbG93aW5nIHRoZSB3YXkgdGhhdCBI
YXJmYnV6ei1GcmVlVHlwZQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRvZXMuCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMoaGJf
Zm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgaGJf
Z2x5cGhfZXh0ZW50c190KiBleHRlbnRzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxh
dGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURh
dGEqPihmb250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkX2ZvbnQgPSBw
bGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkX2ZvbnQpOworCisg
ICAgQ2Fpcm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhzY2FsZWRfZm9udCwgZ2x5cGgsIDAsIGV4
dGVudHMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfZm9udF9mdW5jc190KiBo
YXJmYnV6ekNhaXJvVGV4dEdldEZvbnRGdW5jcygpCit7CisgICAgc3RhdGljIGhiX2ZvbnRfZnVu
Y3NfdCogaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcyA9IDA7CisKKyAgICAvLyBXZSBkb24ndCBzZXQg
Y2FsbGJhY2sgZnVuY3Rpb25zIHdoaWNoIHdlIGNhbid0IHN1cHBvcnQuCisgICAgLy8gSGFyZmJ1
enogd2lsbCB1c2UgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgYXJlbid0IHNl
dC4KKyAgICBpZiAoIWhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpIHsKKyAgICAgICAgaGFyZmJ1enpD
YWlyb0ZvbnRGdW5jcyA9IGhiX2ZvbnRfZnVuY3NfY3JlYXRlKCk7CisgICAgICAgIGhiX2ZvbnRf
ZnVuY3Nfc2V0X2dseXBoX2Z1bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRH
bHlwaCwgMCwgMCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfYWR2YW5jZV9m
dW5jKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2
YW5jZSwgMCwgMCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfb3JpZ2luX2Z1
bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmln
aW4sIDAsIDApOworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9leHRlbnRzX2Z1bmMo
aGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMsIDAsIDApOwor
ICAgICAgICBoYl9mb250X2Z1bmNzX21ha2VfaW1tdXRhYmxlKGhhcmZidXp6Q2Fpcm9Gb250RnVu
Y3MpOworICAgIH0KKyAgICByZXR1cm4gaGFyZmJ1enpDYWlyb0ZvbnRGdW5jczsKK30KKworc3Rh
dGljIGhiX2Jsb2JfdCogaGFyZmJ1enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCogZmFjZSwgaGJf
dGFnX3QgdGFnLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhKiBmb250
ID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odXNlckRhdGEpOworCisgICAg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkX2ZvbnQgPSBmb250LT5zY2FsZWRGb250KCk7Cisg
ICAgaWYgKCFzY2FsZWRfZm9udCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDYWlyb0Z0RmFj
ZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRfZm9udCk7CisgICAgRlRfRmFjZSBmdEZv
bnQgPSBjYWlyb0Z0RmFjZUxvY2tlci5sb2NrKCk7CisKKyAgICBpZiAoIWZ0Rm9udCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBGVF9VTG9uZyB0YWJsZVNpemUgPSAwOworICAgIEZUX0Vycm9y
IGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZ0Rm9udCwgdGFnLCAwLCAwLCAmdGFibGVTaXpl
KTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiAwOworCisgICAgRlRfQnl0ZSogYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxGVF9CeXRlKj4oZmFzdE1hbGxvYyh0YWJsZVNpemUpKTsK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgRlRfVUxvbmcgZXhwZWN0
ZWRUYWJsZVNpemUgPSB0YWJsZVNpemU7CisgICAgZXJyb3IgPSBGVF9Mb2FkX1NmbnRfVGFibGUo
ZnRGb250LCB0YWcsIDAsIGJ1ZmZlciwgJnRhYmxlU2l6ZSk7CisgICAgaWYgKGVycm9yIHx8IHRh
YmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkgeworICAgICAgICBmYXN0RnJlZShidWZmZXIp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gaGJfYmxvYl9jcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgdGFibGVTaXplLCBIQl9NRU1P
UllfTU9ERV9XUklUQUJMRSwgYnVmZmVyLCBmYXN0RnJlZSk7Cit9CisKK2hiX2ZhY2VfdCogSGFy
ZkJ1enpOR0ZhY2U6OmNyZWF0ZUZhY2UoKQoreworICAgIGhiX2ZhY2VfdCogZmFjZSA9IGhiX2Zh
Y2VfY3JlYXRlX2Zvcl90YWJsZXMoaGFyZmJ1enpDYWlyb0dldFRhYmxlLCBtX3BsYXRmb3JtRGF0
YSwgMCk7CisgICAgQVNTRVJUKGZhY2UpOworICAgIHJldHVybiBmYWNlOworfQorCitoYl9mb250
X3QqIEhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KCkKK3sKKyAgICBoYl9mb250X3QqIGZvbnQg
PSBoYl9mb250X2NyZWF0ZShtX2ZhY2UpOworICAgIGhiX2ZvbnRfc2V0X2Z1bmNzKGZvbnQsIGhh
cmZidXp6Q2Fpcm9UZXh0R2V0Rm9udEZ1bmNzKCksIG1fcGxhdGZvcm1EYXRhLCAwKTsKKyAgICBj
b25zdCBmbG9hdCBzaXplID0gbV9wbGF0Zm9ybURhdGEtPnNpemUoKTsKKyAgICBpZiAoZmxvb3Jm
KHNpemUpID09IHNpemUpCisgICAgICAgIGhiX2ZvbnRfc2V0X3BwZW0oZm9udCwgc2l6ZSwgc2l6
ZSk7CisgICAgaW50IHNjYWxlID0gZmxvYXRUb0hhcmZCdXp6UG9zaXRpb24oc2l6ZSk7CisgICAg
aGJfZm9udF9zZXRfc2NhbGUoZm9udCwgc2NhbGUsIHNjYWxlKTsKKyAgICBoYl9mb250X21ha2Vf
aW1tdXRhYmxlKGZvbnQpOworICAgIHJldHVybiBmb250OworfQorCitHbHlwaEJ1ZmZlckFkdmFu
Y2UgSGFyZkJ1enpTaGFwZXI6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KQoreworICAgIHJldHVybiBHbHlwaEJ1ZmZlckFkdmFuY2Uod2lkdGgsIGhl
aWdodCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IGQyNWZiODEyNzUxMjkyZGE0YTY0NDZkNDRmNTI2Mzk1MTQ4NzA4ODEuLjkyZjJkYjJiMGVlNDUy
MTU0OTg4NmFiZjNhMzcwM2ZmOWU4YjA5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMjgsNiAr
MjgsOCBAQCBTRVQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vYW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCisgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9zcWwiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CmluZGV4IDM4NGQ3ZTZkZTQzOWNjOWRkNWM2NDM0ZjExMGQ2MDZkYTA5NTRk
YzYuLmVhNGUwY2RhNDhmZWU2NzE5YmRkZmQ1MmY1OWJjZmVjNzgxYzFiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CkBAIC02Nyw2ICs2Nyw4IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgogICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enoiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L25nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9zcWwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNt
YWtlIGIvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDM1YjI1
YWYzNmVjODA2M2EwNzljYzRhNzViNjc0OWVhM2NjYWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK0lOQ0xVREUoRmlu
ZFBrZ0NvbmZpZykKKworUEtHX0NIRUNLX01PRFVMRVMgKGhhcmZidXp6IFJFUVVJUkVEIGhhcmZi
dXp6Pj0wLjkuMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggMWJmNzFmODExYTEwMjg5NzNmMjdk
MDExMjVhMWVjYjlkMTVlMGI2Zi4uMWYyYTY3NDc2ZjU4ZThmYzY3NWRhZTg1NGU0ODBhN2JiOGVh
NDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTExOSw4ICsxMTksMTEgQEAgRU5ESUYgKCkK
IAogSUYgKEZPTlRfQkFDS0VORCBTVFJFUVVBTCAiZnJlZXR5cGUiKQogICBGSU5EX1BBQ0tBR0Uo
RnJlZXR5cGUgUkVRVUlSRUQpCisgIEZJTkRfUEFDS0FHRShIYXJmQnV6eiBSRVFVSVJFRCkKICAg
U0VUKFdURl9VU0VfRlJFRVRZUEUgMSkKKyAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKICAg
QUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQRT0xKQorICBBRERfREVGSU5JVElPTlMo
LURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiBFTFNFICgpCiAgIEZJTkRfUEFDS0FHRShQYW5nbyBS
RVFVSVJFRCkKICAgU0VUKFdURl9VU0VfUEFOR08gMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWIyZmJlNDQ2YWE5ZTg0OGYxYTVlN2ZiZDI2
NjljNWIyYTlhYWI0Li42N2NlMGFiMDE2MGVmNDU5YjRiZjk3ZjFkMWU5ZjZmN2I1ZWYwNTg1IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNj
aGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2lu
ZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJyaW5naW5nIEhhcmZidXp6IHN1cHBvcnQgdG8gRUZMIHdpdGggdGhpcyBwYXRj
aCwgc28gd2UgbmVlZCBIYXJmQnV6eiBpbiB0aGUgcHVsbGVkIGluIGpoYnVpbGQgZGVwZW5kZW5j
aWVzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDogQWRkaW5n
IGFkZGl0aW9uYWwgaGVhZGVyIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisgICAgICAgICogZWZsL2po
YnVpbGQubW9kdWxlczogQWRkaW5nIHNvdXJjZSBmb3IgSGFyZkJ1enogcmVsZWFzZSB2ZXJzaW9u
IDAuOS4wLgorCiAyMDEyLTA3LTI0ICBUaGlhZ28gTWFyY29zIFAuIFNhbnRvcyAgPHRoaWFnby5z
YW50b3NAaW50ZWwuY29tPgogCiAgICAgICAgIE1ha2UgV2ViSW50ZW50cyBhbmQgV2ViSW50ZW50
c1RhZyBhIGJ1aWxkIG9wdGlvbiBmb3IgdGhlIGJ1aWxkLXdlYmtpdCBzY3JpcHQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDRjYzA1MDE1MDM0NzllNWUyZTJhY2I5Yzk1
ZGUzYjg0NjMyZTcyNWUuLmJhZGMyYzQ3MWZhN2U4NDk1YmY1NTFkZTQ4OWMxZDBhYjRkYWIwMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsOCBAQCBT
RVQoV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vZWRpdGluZwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6egorICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L25nCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yawogICAgICR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL3RleHQKICAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pzCmRpZmYgLS1n
aXQgYS9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxl
cwppbmRleCBhMjYwZmE0OGZjMDkxN2IzNDE4Yjc1YjU0MmE4Mjc0ZmQ4OGQwN2ZiLi45YjQwN2Y0
ZDg0OTAxOTU4ZmI1ZDMxMjVhYTZhODE5MDUyMWZiODI0IDEwMDY0NAotLS0gYS9Ub29scy9lZmwv
amhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKQEAgLTksNiAr
OSw3IEBACiAgICAgICA8ZGVwIHBhY2thZ2U9ImZvbnRzIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImZvbnRjb25maWciLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZnJlZXR5cGU2Ii8+CisgICAgICA8
ZGVwIHBhY2thZ2U9ImhhcmZidXp6Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWIiLz4KICAg
ICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImxpYnNvdXAiLz4KQEAgLTE1OSw2ICsxNjAsMTUgQEAKICAgICA8L2JyYW5jaD4KICAgPC9hdXRv
dG9vbHM+CiAKKyA8YXV0b3Rvb2xzIGlkPSJoYXJmYnV6eiIgYXV0b2dlbi1zaD0iY29uZmlndXJl
Ij4KKyAgIDxicmFuY2ggbW9kdWxlPSJzb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlL2hhcmZidXp6
LTIwMTIwNjI3LnRhci5iejIiIHZlcnNpb249IjAuOS4wIgorCSAgIGNoZWNrb3V0ZGlyPSJoYXJm
YnV6ei0wLjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJlZWRlc2t0b3Aub3JnIgorICAgICAgICAg
ICBoYXNoPSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4Zjg3ZTg5OGY1ZjE4YWE5MThhNDFkYjYy
YWRiYzE3ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAgICAgbWQ1c3VtPSIxOGU2YThkODQ3MjU5
NDQxNzIzYTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5jaD4KKyA8L2F1dG90b29scz4KKwogICA8
YXV0b3Rvb2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5jaCBtb2R1bGU9ImVpbmEiCiAgICAgICAg
ICAgICByZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCAxMGZjODBlMGJjNDE2YTBiOTgyMTlhM2M1MDE3ZWI5OTEyNmMyYzdjLi4y
N2U1MGI2Nzc3NWRlYjQ1NDY0MDFkMzVjYmE5NDAxOTdmMjI0ZGRjIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWlu
aWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBb
Q2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbmZpZ3VyaW5nIEZyZWV0
eXBlIGJhY2tlbmQgdG8gdXNlIEhhcmZCdXp6IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlOiBBZGRlZC4gUGtnY29uZmlnIGJhc2VkIGRpc2Nv
dmVyeSBvZiBIYXJmQnV6ei4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZTogQWRkaW5nIEhhcmZidXp6IGNvbmZpZ3VyYXRpb24uCisKIDIwMTItMDctMjMgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSB1bm5lY2Vz
c2FyeSB0cmFpbGluZyBzcGFjZSBpbiB0aGUgcHJldmlvdXMgY29tbWl0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154064</attachid>
            <date>2012-07-24 08:04:26 -0700</date>
            <delta_ts>2012-07-24 09:54:51 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype.</desc>
            <filename>bug-91864-20120724180634.patch</filename>
            <type>text/plain</type>
            <size>30016</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM5ODFkMTFjNGRhZWRm
Yjg3MjA1YzI1ODhkMDI4OTgxYTY1N2U0MC4uZjQ2YTZiM2FiMjNmNzk3MDhkOTg4OGUyMTAwMmUy
NmZhM2M5ZTg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI0ICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHNvbWUgY2FsbHNp
dGVzIG9mIHNoYWRvd0FuY2VzdG9yTm9kZSgpIHdpdGggc2hhZG93SG9zdCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDlhMmFkZWEzN2NhNDFmYjNjMDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmJiOGJmZjUzNWQ1NTgx
MDEyYzJkNGYwMjlkODIyMmQ1NGU1ZGU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNv
bT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJm
YnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGluZyBpbmNsdWRlcyBmb3IgaGFyZmJ1enogZm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorCiAyMDEyLTA3LTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW5hbWUgRU5BQkxFX01FVEVSX1RBRyBhbmQgRU5BQkxFX1BST0dSRVNTX1RB
RyB0byBFTkFCTEVfTUVURVJfRUxFTUVOVCBhbmQgRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQgcmVz
cGVjdGl2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmE1MzE3YzA4ZjRhMTllOWFiMTA2NTU5ZWFkYWIwMGZl
NGU1ZWFiMi4uZjVlNzBmOGVlOWU2ZjNlNzFjNGJkZTIxYWIwNzNkZTFjNDM5NmE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3LTI0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxk
b21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxl
eCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgaW5jbHVkZXMgZm9yIGhhcmZidXp6IGZvbGRl
cnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wNy0yNCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gRml4IHBvc3NpYmxlIGNyYXNoIGluIGRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMzUyYjU0ZTZkM2Q0ZmU4YzFhOWViZGFjYmRjODUxYjMyZmQ1ODNk
YS4uNDQ4MzNlMjQ3MzIzZGVjY2IzMjY1MTIwMzg1NjE1NGFkOWIxMzAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTQ4LDYgKzQ4LDggQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggYTlhNGYxMTIyNzY2MmQzNzgzZDJhOTMyNDIyYmUzMDhjMmM2
NzI0NS4uYjNjNGM4YTgxYmQ1ZmI1ZGIzYWUxNTAxMmJmNGI2MGU3MzdkMzk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTE0OSwxNSArMTQ5LDI0IEBAIElGIChXVEZfVVNFX0NBSVJP
KQogICBJRiAoV1RGX1VTRV9GUkVFVFlQRSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZSIKKyAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei8iCisgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmci
CiAgICAgKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCi0gICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
Rm9udEVmbC5jcHAKKyAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBs
ZXguY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcAorICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuY3BwCisgICAgKQorICAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAke0hBUkZCVVpaX0xJQlJBUklFU30KICAgICAp
CiAgIEVORElGICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMjg2NjE1YTlkODA3N2ZlMDk2ZmRm
YTAzMzI4ZmY2Y2JiM2ZlZGQ1Li44MzY0ZmJkNmZlNjU4ZmQxYmNkYTUxM2JiYWZlYjYxOThiYWVm
YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjUyLDcgKzM2NTIsNiBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbScsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRFZmwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9JbnRQb2ludEVmbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMzRhNzEzMDA1NzQxMTY1NGEyNzI1NTRjY2Y5ZWE4ZmJiY2IzNzk5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
Q29tcGxleC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9p
ZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdAoreworICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoJmdseXBoQnVmZmVyKSkg
eworICAgICAgICBkcmF3R2x5cGhCdWZmZXIoY29udGV4dCwgcnVuLCBnbHlwaEJ1ZmZlciwgcG9p
bnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0
b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGlu
dCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQo
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9h
dCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNo
U2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKK3sKKyAg
ICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBpZiAoc2hhcGVyLnNoYXBl
KCkpCisgICAgICAgIHJldHVybiBzaGFwZXIudG90YWxXaWR0aCgpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRp
b25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wpIGNvbnN0
Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBl
ci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVyLm9mZnNldEZvclBvc2l0aW9uKHgpOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitGbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorewor
ICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hh
cGUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBlci5zZWxlY3Rpb25SZWN0KHBvaW50LCBoLCBmcm9t
LCB0byk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvRm9udEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9u
dEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2M3ZmZlMzM4ZTVkY2E4
NTA3OTdmNDM1OTE1ZDNhYWQxYjczZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRF
ZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAw
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRm9udC5oIgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgotCi0jaW5jbHVk
ZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZvbnQ6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29u
dGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9t
aWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQg
LyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLWJvb2wgRm9udDo6Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCkK
LXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRl
b2dyYXBoc0luQ29tcGxleFRleHQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZmxvYXQg
Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNv
bnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwLjBmOwotfQotCi1pbnQgRm9udDo6b2Zmc2V0Rm9y
UG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQsIGJvb2wpIGNvbnN0
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRmxvYXRSZWN0
IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGludCwgaW50LCBpbnQpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEu
aAppbmRleCAyMDY2NTNkZGY3Zjg3Y2RjMGMwZDdhZTFlZjk0YmQzOWQ2NzdmMmQ5Li42YTYyYzZj
N2NjNDVjODljYmQ1YmUyMWViZTAxZjQ0MTE5OTU1ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YS5oCkBAIC0yOSwxMSArMjksMTUgQEAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2lm
IFVTRShIQVJGQlVaWl9ORykKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNG
b250U2V0OworY2xhc3MgSGFyZkJ1enpOR0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAor
I2lmIFVTRShIQVJGQlVaWl9ORykKKyAgICBIYXJmQnV6ek5HRmFjZSogaGFyZmJ1enpGYWNlKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CiAgICAgZmxvYXQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShmbG9hdCBzaXpl
KSB7IG1fc2l6ZSA9IHNpemU7IH0KQEAgLTk4LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICBib29s
IG1fc3ludGhldGljT2JsaXF1ZTsKICAgICBib29sIG1fZml4ZWRXaWR0aDsKICAgICBjYWlyb19z
Y2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7CisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG11
dGFibGUgUmVmUHRyPEhhcmZCdXp6TkdGYWNlPiBtX2hhcmZidXp6RmFjZTsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhGb250RmFjZShjYWlyb19mb250X2ZhY2Vf
dCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgPSBGb250RGVzY3JpcHRpb24oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA5OGFlNWVkNjY0ZGM0MzU5
M2ViM2RlODcxZjhkM2U0NDdjMjgyMDUyLi4zYzkzZDhkMTM3ZjRmOWJlNGI3ZjQzNmRhODhhNzIx
NzhmZmE4YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
QEAgLTE4NiwxNyArMTg2LDI3IEBAIEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6
Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICAgICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogICAgIG1fc2NhbGVkRm9udCA9IGNh
aXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxlZEZvbnQpOwogCisjaWYgVVNF
KEhBUkZCVVpaX05HKQorICAgIG1faGFyZmJ1enpGYWNlID0gb3RoZXIubV9oYXJmYnV6ekZhY2U7
CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICA6IG1fZmFs
bGJhY2tzKDApCiAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisg
ICAgLCBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRpZgogewogICAg
ICp0aGlzID0gb3RoZXI7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCisjaWYgVVNFKEhBUkZC
VVpaX05HKQorICAgIDogbV9oYXJmYnV6ekZhY2Uob3RoZXIubV9oYXJmYnV6ekZhY2UpCisjZW5k
aWYKIHsKICAgICAqdGhpcyA9IG90aGVyOwogCkBAIC0yMTcsNiArMjI3LDE2IEBAIEZvbnRQbGF0
Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRf
ZGVzdHJveShtX3NjYWxlZEZvbnQpOwogfQogCisjaWZkZWYgVVNFKEhBUkZCVVpaX05HKQorSGFy
ZkJ1enpOR0ZhY2UqIEZvbnRQbGF0Zm9ybURhdGE6OmhhcmZidXp6RmFjZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2hhcmZidXp6RmFjZSkKKyAgICAgICAgbV9oYXJmYnV6ekZhY2UgPSBIYXJmQnV6
ek5HRmFjZTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KHRoaXMpLCBoYXNo
KCkpOworCisgICAgcmV0dXJuIG1faGFyZmJ1enpGYWNlLmdldCgpOworfQorI2VuZGlmCisKIGJv
b2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNoKCkKIHsKICAgICByZXR1cm4gbV9maXhl
ZFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YmU4MzIxODgxZGE0N2EyMTQ5NDA2NzhkZjU4MjhlNDhmMGEzZTBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1
enpOR0ZhY2VDYWlyby5jcHAKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIYXJmQnV6
ek5HRmFjZS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkds
eXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGNhaXJv
LWZ0Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9mcmVldHlwZS5o
PgorI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFibGVzLmg+CisjaW5jbHVkZSA8aGIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q2Fpcm9GdEZhY2VMb2NrZXIgeworcHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2VyKGNhaXJv
X3NjYWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkgOiBtX3NjYWxlZEZvbnQoY2Fpcm9TY2Fs
ZWRGb250KSB7IH07CisgICAgRlRfRmFjZSBsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBj
YWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKKyAgICB9OworICAg
IH5DYWlyb0Z0RmFjZUxvY2tlcigpCisgICAgeworICAgICAgICBjYWlyb19mdF9zY2FsZWRfZm9u
dF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCogbV9zY2FsZWRGb250OworfTsKKworc3RhdGljIGhiX3Bvc2l0aW9uX3Qg
ZmxvYXRUb0hhcmZCdXp6UG9zaXRpb24oZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGhiX3Bvc2l0aW9uX3Q+KHZhbHVlICogKDEgPDwgMTYpKTsKK30KKworc3RhdGljIGhi
X3Bvc2l0aW9uX3QgZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGRvdWJsZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOwor
fQorCitzdGF0aWMgdm9pZCBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKGNhaXJvX3NjYWxl
ZF9mb250X3QqIHNjYWxlZEZvbnQsIGhiX2NvZGVwb2ludF90IGNvZGVwb2ludCwgaGJfcG9zaXRp
b25fdCogYWR2YW5jZSwgaGJfZ2x5cGhfZXh0ZW50c190KiBleHRlbnRzKQoreworICAgIGNhaXJv
X3RleHRfZXh0ZW50c190IGdseXBoRXh0ZW50czsKKyAgICBjYWlyb19nbHlwaF90IGdseXBoOwor
ICAgIGdseXBoLmluZGV4ID0gY29kZXBvaW50OworICAgIGdseXBoLnggPSAwOworICAgIGdseXBo
LnkgPSAwOworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoc2NhbGVkRm9udCwg
JmdseXBoLCAxLCAmZ2x5cGhFeHRlbnRzKTsKKworICAgIGlmIChhZHZhbmNlKQorICAgICAgICAq
YWR2YW5jZSA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9hZHZhbmNl
KTsKKyAgICBpZiAoZXh0ZW50cykgeworICAgICAgICBleHRlbnRzLT54X2JlYXJpbmcgPSBkb3Vi
bGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLnhfYmVhcmluZyk7CisgICAgICAgIGV4
dGVudHMtPnlfYmVhcmluZyA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMu
eV9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50cy0+d2lkdGggPSBkb3VibGVUb0hhcmZCdXp6UG9z
aXRpb24oZ2x5cGhFeHRlbnRzLndpZHRoKTsKKyAgICAgICAgZXh0ZW50cy0+aGVpZ2h0ID0gZG91
YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy5oZWlnaHQpOworICAgIH0KK30KKwor
c3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoKGhiX2ZvbnRfdCogaGJGb250LCB2b2lk
KiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgdW5pY29kZSwgaGJfY29kZXBvaW50X3QgdmFyaWF0
aW9uU2VsZWN0b3IsIGhiX2NvZGVwb2ludF90KiBnbHlwaCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250
UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxl
ZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkRm9u
dCk7CisKKyAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXMgPSBDQUlST19TVEFUVVNfU1VDQ0VTUzsK
KyAgICBjYWlyb19nbHlwaF90KiBnbHlwaHMgPSAwOworICAgIGludCBudW1HbHlwaHMgPSAwOwor
ICAgIENTdHJpbmcgdXRmOENvZGVwb2ludCA9IFVURjhFbmNvZGluZygpLmVuY29kZShyZWludGVy
cHJldF9jYXN0PFVDaGFyKj4oJnVuaWNvZGUpLCAxLCBRdWVzdGlvbk1hcmtzRm9yVW5lbmNvZGFi
bGVzKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90ZXh0X3RvX2dseXBocyhzY2FsZWRGb250LCAw
LCAwLCB1dGY4Q29kZXBvaW50LmRhdGEoKSwgdXRmOENvZGVwb2ludC5sZW5ndGgoKSwgJmdseXBo
cywgJm51bUdseXBocywgMCwgMCwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNf
U1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChudW1HbHlwaHMgPiAw
KTsKKyAgICAqZ2x5cGggPSBnbHlwaHNbMF0uaW5kZXg7CisgICAgY2Fpcm9fZ2x5cGhfZnJlZShn
bHlwaHMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfcG9zaXRpb25fdCBoYXJm
YnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZv
bnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgRm9u
dFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZv
cm1EYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQg
PSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkRm9udCk7CisK
KyAgICBoYl9wb3NpdGlvbl90IGFkdmFuY2UgPSAwOworICAgIENhaXJvR2V0R2x5cGhXaWR0aEFu
ZEV4dGVudHMoc2NhbGVkRm9udCwgZ2x5cGgsICZhZHZhbmNlLCAwKTsKKyAgICByZXR1cm4gYWR2
YW5jZTsKK30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbE9y
aWdpbihoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGds
eXBoLCBoYl9wb3NpdGlvbl90KiB4LCBoYl9wb3NpdGlvbl90KiB5LCB2b2lkKiB1c2VyRGF0YSkK
K3sKKyAgICAvLyBKdXN0IHJldHVybiB0cnVlLCBmb2xsb3dpbmcgdGhlIHdheSB0aGF0IEhhcmZi
dXp6LUZyZWVUeXBlCisgICAgLy8gaW1wbGVtZW50YXRpb24gZG9lcy4KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoRXh0ZW50cyhoYl9mb250
X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCBoYl9nbHlw
aF9leHRlbnRzX3QqIGV4dGVudHMsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQbGF0Zm9y
bURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+
KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gcGxhdGZv
cm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOworCisgICAgQ2Fp
cm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhzY2FsZWRGb250LCBnbHlwaCwgMCwgZXh0ZW50cyk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBoYl9mb250X2Z1bmNzX3QqIGhhcmZidXp6
Q2Fpcm9UZXh0R2V0Rm9udEZ1bmNzKCkKK3sKKyAgICBzdGF0aWMgaGJfZm9udF9mdW5jc190KiBo
YXJmYnV6ekNhaXJvRm9udEZ1bmNzID0gMDsKKworICAgIC8vIFdlIGRvbid0IHNldCBjYWxsYmFj
ayBmdW5jdGlvbnMgd2hpY2ggd2UgY2FuJ3Qgc3VwcG9ydC4KKyAgICAvLyBIYXJmYnV6eiB3aWxs
IHVzZSB0aGUgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaWYgdGhleSBhcmVuJ3Qgc2V0LgorICAg
IGlmICghaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcykgeworICAgICAgICBoYXJmYnV6ekNhaXJvRm9u
dEZ1bmNzID0gaGJfZm9udF9mdW5jc19jcmVhdGUoKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19z
ZXRfZ2x5cGhfZnVuYyhoYXJmYnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoLCAw
LCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfaF9hZHZhbmNlX2Z1bmMoaGFy
ZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlLCAw
LCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfaF9vcmlnaW5fZnVuYyhoYXJm
YnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbE9yaWdpbiwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2V4dGVudHNfZnVuYyhoYXJmYnV6
ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoRXh0ZW50cywgMCwgMCk7CisgICAgICAg
IGhiX2ZvbnRfZnVuY3NfbWFrZV9pbW11dGFibGUoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcyk7Cisg
ICAgfQorICAgIHJldHVybiBoYXJmYnV6ekNhaXJvRm9udEZ1bmNzOworfQorCitzdGF0aWMgaGJf
YmxvYl90KiBoYXJmYnV6ekNhaXJvR2V0VGFibGUoaGJfZmFjZV90KiBmYWNlLCBoYl90YWdfdCB0
YWcsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGEqIGZvbnQgPSByZWlu
dGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPih1c2VyRGF0YSk7CisKKyAgICBjYWlyb19z
Y2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gZm9udC0+c2NhbGVkRm9udCgpOworICAgIGlmICgh
c2NhbGVkRm9udCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDYWlyb0Z0RmFjZUxvY2tlciBj
YWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKKyAgICBGVF9GYWNlIGZ0Rm9udCA9IGNhaXJv
RnRGYWNlTG9ja2VyLmxvY2soKTsKKworICAgIGlmICghZnRGb250KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIEZUX1VMb25nIHRhYmxlU2l6ZSA9IDA7CisgICAgRlRfRXJyb3IgZXJyb3IgPSBG
VF9Mb2FkX1NmbnRfVGFibGUoZnRGb250LCB0YWcsIDAsIDAsICZ0YWJsZVNpemUpOworICAgIGlm
IChlcnJvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGVF9CeXRlKiBidWZmZXIgPSByZWlu
dGVycHJldF9jYXN0PEZUX0J5dGUqPihmYXN0TWFsbG9jKHRhYmxlU2l6ZSkpOworICAgIGlmICgh
YnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6
ZSA9IHRhYmxlU2l6ZTsKKyAgICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZShmdEZvbnQsIHRh
ZywgMCwgYnVmZmVyLCAmdGFibGVTaXplKTsKKyAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9
IGV4cGVjdGVkVGFibGVTaXplKSB7CisgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBoYl9ibG9iX2NyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCB0YWJsZVNpemUsIEhCX01FTU9SWV9NT0RFX1dS
SVRBQkxFLCBidWZmZXIsIGZhc3RGcmVlKTsKK30KKworaGJfZmFjZV90KiBIYXJmQnV6ek5HRmFj
ZTo6Y3JlYXRlRmFjZSgpCit7CisgICAgaGJfZmFjZV90KiBmYWNlID0gaGJfZmFjZV9jcmVhdGVf
Zm9yX3RhYmxlcyhoYXJmYnV6ekNhaXJvR2V0VGFibGUsIG1fcGxhdGZvcm1EYXRhLCAwKTsKKyAg
ICBBU1NFUlQoZmFjZSk7CisgICAgcmV0dXJuIGZhY2U7Cit9CisKK2hiX2ZvbnRfdCogSGFyZkJ1
enpOR0ZhY2U6OmNyZWF0ZUZvbnQoKQoreworICAgIGhiX2ZvbnRfdCogZm9udCA9IGhiX2ZvbnRf
Y3JlYXRlKG1fZmFjZSk7CisgICAgaGJfZm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZmJ1enpDYWly
b1RleHRHZXRGb250RnVuY3MoKSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIGNvbnN0IGZsb2F0
IHNpemUgPSBtX3BsYXRmb3JtRGF0YS0+c2l6ZSgpOworICAgIGlmIChmbG9vcmYoc2l6ZSkgPT0g
c2l6ZSkKKyAgICAgICAgaGJfZm9udF9zZXRfcHBlbShmb250LCBzaXplLCBzaXplKTsKKyAgICBp
bnQgc2NhbGUgPSBmbG9hdFRvSGFyZkJ1enpQb3NpdGlvbihzaXplKTsKKyAgICBoYl9mb250X3Nl
dF9zY2FsZShmb250LCBzY2FsZSwgc2NhbGUpOworICAgIGhiX2ZvbnRfbWFrZV9pbW11dGFibGUo
Zm9udCk7CisgICAgcmV0dXJuIGZvbnQ7Cit9CisKK0dseXBoQnVmZmVyQWR2YW5jZSBIYXJmQnV6
elNoYXBlcjo6Y3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpCit7CisgICAgcmV0dXJuIEdseXBoQnVmZmVyQWR2YW5jZSh3aWR0aCwgaGVpZ2h0KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZDI1ZmI4MTI3
NTEyOTJkYTRhNjQ0NmQ0NGY1MjYzOTUxNDg3MDg4MS4uOTJmMmRiMmIwZWU0NTIxNTQ5ODg2YWJm
M2EzNzAzZmY5ZThiMDllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw4IEBAIFNF
VChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgorICAgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25l
dHdvcmsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3NxbCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKaW5kZXggMzg0ZDdlNmRlNDM5Y2M5ZGQ1YzY0MzRmMTEwZDYwNmRhMDk1NGRjNi4uZWE0ZTBj
ZGE0OGZlZTY3MTliZGRmZDUyZjU5YmNmZWM3ODFjMWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
QEAgLTY3LDYgKzY3LDggQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIK
KyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L3NxbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kSGFyZkJ1enouY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMzViMjVhZjM2ZWM4MDYz
YTA3OWNjNGE3NWI2NzQ5ZWEzY2NhYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvY21ha2Uv
RmluZEhhcmZCdXp6LmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorSU5DTFVERShGaW5kUGtnQ29uZmln
KQorCitQS0dfQ0hFQ0tfTU9EVUxFUyAoaGFyZmJ1enogUkVRVUlSRUQgaGFyZmJ1eno+PTAuOS4w
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAxYmY3MWY4MTFhMTAyODk3M2YyN2QwMTEyNWExZWNi
OWQxNWUwYjZmLi4xZjJhNjc0NzZmNThlOGZjNjc1ZGFlODU0ZTQ4MGE3YmI4ZWE0Mjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQpAQCAtMTE5LDggKzExOSwxMSBAQCBFTkRJRiAoKQogCiBJRiAoRk9O
VF9CQUNLRU5EIFNUUkVRVUFMICJmcmVldHlwZSIpCiAgIEZJTkRfUEFDS0FHRShGcmVldHlwZSBS
RVFVSVJFRCkKKyAgRklORF9QQUNLQUdFKEhhcmZCdXp6IFJFUVVJUkVEKQogICBTRVQoV1RGX1VT
RV9GUkVFVFlQRSAxKQorICBTRVQoV1RGX1VTRV9IQVJGQlVaWl9ORyAxKQogICBBRERfREVGSU5J
VElPTlMoLURXVEZfVVNFX0ZSRUVUWVBFPTEpCisgIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0Vf
SEFSRkJVWlpfTkc9MSkKIEVMU0UgKCkKICAgRklORF9QQUNLQUdFKFBhbmdvIFJFUVVJUkVEKQog
ICBTRVQoV1RGX1VTRV9QQU5HTyAxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGQxYjJmYmU0NDZhYTllODQ4ZjFhNWU3ZmJkMjY2OWM1YjJhOWFh
YjQuLjY3Y2UwYWIwMTYwZWY0NTliNGJmOTdmMWQxZTlmNmY3YjVlZjA1ODUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwu
Y29tPgorCisgICAgICAgIFtDYWlyb10gQWRkIGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhh
cmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QnJpbmdpbmcgSGFyZmJ1enogc3VwcG9ydCB0byBFRkwgd2l0aCB0aGlzIHBhdGNoLCBzbyB3ZSBu
ZWVkIEhhcmZCdXp6IGluIHRoZSBwdWxsZWQgaW4gamhidWlsZCBkZXBlbmRlbmNpZXMuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OiBBZGRpbmcgYWRkaXRpb25h
bCBoZWFkZXIgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgKiBlZmwvamhidWlsZC5tb2R1
bGVzOiBBZGRpbmcgc291cmNlIGZvciBIYXJmQnV6eiByZWxlYXNlIHZlcnNpb24gMC45LjAuCisK
IDIwMTItMDctMjQgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRl
bC5jb20+CiAKICAgICAgICAgTWFrZSBXZWJJbnRlbnRzIGFuZCBXZWJJbnRlbnRzVGFnIGEgYnVp
bGQgb3B0aW9uIGZvciB0aGUgYnVpbGQtd2Via2l0IHNjcmlwdApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Q01ha2VMaXN0cy50eHQKaW5kZXggNGNjMDUwMTUwMzQ3OWU1ZTJlMmFjYjljOTVkZTNiODQ2MzJl
NzI1ZS4uYmFkYzJjNDcxZmE3ZTg0OTViZjU1MWRlNDg5YzFkMGFiNGRhYjAxOSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw4IEBAIFNFVChXZWJLaXRU
ZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5n
CiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0KICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcworICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
CisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcKICAgICAk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vdGV4dAogICAgICR7V0VCQ09SRV9ESVJ9L3Rlc3RpbmcvanMKZGlmZiAtLWdpdCBhL1Rvb2xz
L2VmbC9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzCmluZGV4IGEy
NjBmYTQ4ZmMwOTE3YjM0MThiNzViNTQyYTgyNzRmZDg4ZDA3ZmIuLjliNDA3ZjRkODQ5MDE5NThm
YjVkMzEyNWFhNmE4MTkwNTIxZmI4MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkLm1v
ZHVsZXMKKysrIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcwpAQCAtOSw2ICs5LDcgQEAKICAg
ICAgIDxkZXAgcGFja2FnZT0iZm9udHMiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZm9udGNvbmZp
ZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJmcmVldHlwZTYiLz4KKyAgICAgIDxkZXAgcGFja2Fn
ZT0iaGFyZmJ1enoiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgICAgPGRlcCBw
YWNrYWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGlic291cCIv
PgpAQCAtMTU5LDYgKzE2MCwxNSBAQAogICAgIDwvYnJhbmNoPgogICA8L2F1dG90b29scz4KIAor
IDxhdXRvdG9vbHMgaWQ9ImhhcmZidXp6IiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiPgorICAgPGJy
YW5jaCBtb2R1bGU9InNvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvaGFyZmJ1enotMjAxMjA2Mjcu
dGFyLmJ6MiIgdmVyc2lvbj0iMC45LjAiCisJICAgY2hlY2tvdXRkaXI9ImhhcmZidXp6LTAuOS4w
IgorICAgICAgICAgICByZXBvPSJmcmVlZGVza3RvcC5vcmciCisgICAgICAgICAgIGhhc2g9InNo
YTI1Njo1NjJhMTg3Yjg0YTJiNWJkMzhmODdlODk4ZjVmMThhYTkxOGE0MWRiNjJhZGJjMTdmNmZj
ZmQ4ZmExNzU1NDg1IgorICAgICAgICAgICBtZDVzdW09IjE4ZTZhOGQ4NDcyNTk0NDE3MjNhMjZl
Mjk5NzkyZDU1Ij4KKyAgIDwvYnJhbmNoPgorIDwvYXV0b3Rvb2xzPgorCiAgIDxhdXRvdG9vbHMg
aWQ9ImVpbmEiID4KICAgICA8YnJhbmNoIG1vZHVsZT0iZWluYSIKICAgICAgICAgICAgIHJlcG89
ImVubGlnaHRlbm1lbnQub3JnIgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDEwZmM4MGUwYmM0MTZhMGI5ODIxOWEzYzUwMTdlYjk5MTI2YzJjN2MuLjI3ZTUwYjY3Nzc1
ZGViNDU0NjQwMWQzNWNiYTk0MDE5N2YyMjRkZGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNj
aGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10gQWRk
IGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29uZmlndXJpbmcgRnJlZXR5cGUgYmFja2Vu
ZCB0byB1c2UgSGFyZkJ1enogYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9G
aW5kSGFyZkJ1enouY21ha2U6IEFkZGVkLiBQa2djb25maWcgYmFzZWQgZGlzY292ZXJ5IG9mIEhh
cmZCdXp6LgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBBZGRpbmcg
SGFyZmJ1enogY29uZmlndXJhdGlvbi4KKwogMjAxMi0wNy0yMyAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWls
aW5nIHNwYWNlIGluIHRoZSBwcmV2aW91cyBjb21taXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154090</attachid>
            <date>2012-07-24 09:55:00 -0700</date>
            <delta_ts>2012-07-24 13:05:53 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, v2.</desc>
            <filename>bug-91864-20120724195708.patch</filename>
            <type>text/plain</type>
            <size>30653</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI2NzNlMWRkYzdmOTYy
YWZkNmU3ZmZlZmRiNTIyMDg2MmIzYTYwOS4uNGYxNGUyNzA5MjQ0OTlmYTQ1ZTJmNWMzZWM2MGE2
ZWEwZmFlZjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU1IEBACiAyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCisyMDEyLTA3LTI0ICBEb21pbmlr
IFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKICAgICAgICAgSGFy
ZkJ1enpGYWNlTkcuaCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBjb25mbGljdCB3aXRoIG5ld2VyIHZl
cnNpb25zIG9mIEhhcmZidXp6CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjEwMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNjMDU1ZjJlNTNl
ZjRkODAwYzc4OTdmOWQuLmJiOGJmZjUzNWQ1NTgxMDEyYzJkNGYwMjlkODIyMmQ1NGU1ZGU3MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hl
cyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBj
b21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBpbmNsdWRlcyBmb3IgaGFyZmJ1enog
Zm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTA3LTIyICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxFX01F
VEVSX1RBRyBhbmQgRU5BQkxFX1BST0dSRVNTX1RBRyB0byBFTkFCTEVfTUVURVJfRUxFTUVOVCBh
bmQgRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQgcmVzcGVjdGl2ZWx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODA4
YjYwZjJiOGQ3YjVlNmZiNDAzZmI0MjhmYmZhNDM5ZTk0NWUyZi4uNGM1MTg0ZWM5ZWU3NjViNjM4
YTU0NTQ4ODA3MmZhYjI5MGQzYTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTA3LTI0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+
CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1
enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
bmcgaW5jbHVkZXMgZm9yIGhhcmZidXp6IGZvbGRlcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKwogMjAxMi0wNy0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gYWZ0ZXIgUXRRdWljayBBUEkg
Y2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTJiNTRlNmQzZDRmZThjMWE5ZWJkYWNi
ZGM4NTFiMzJmZDU4M2RhLi40NDgzM2UyNDczMjNkZWNjYjMyNjUxMjAzODU2MTU0YWQ5YjEzMDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDgsNiArNDgsOCBAQCBTRVQoV2ViQ29yZV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybSIKKyAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhOWE0ZjExMjI3NjYyZDM3ODNkMmE5
MzI0MjJiZTMwOGMyYzY3MjQ1Li5iM2M0YzhhODFiZDVmYjVkYjNhZTE1MDEyYmY0YjYwZTczN2Qz
OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQ5LDE1ICsxNDksMjQgQEAgSUYg
KFdURl9VU0VfQ0FJUk8pCiAgIElGIChXVEZfVVNFX0ZSRUVUWVBFKQogICAgIExJU1QoQVBQRU5E
IFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlIgorICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6LyIKKyAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9uZyIKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKLSAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9Gb250RWZsLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvQ29tcGxleC5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCisgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlckJhc2UuY3BwCisgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZS5jcHAKKyAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwCisgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAKKyAgICAp
CisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAgICAgICR7SEFSRkJVWlpfTElC
UkFSSUVTfQogICAgICkKICAgRU5ESUYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDM5NWUyNzg1
NjlkYjYzOGY1YTY4ZGQ2MzdjN2JhZTk2MTcxNDQ5OGIuLjlhMjMyNmU5NWViYWJjNDkzMTg5YmI4
NzViNDA1N2ZkZjBjNmE5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM2NTMsNyArMzY1Myw2IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVkRNWFBhcnNlci5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZsLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50RWZsLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBs
ZXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2ZjNlMTliZjlkMWIyZjU5ZDViY2Q2ZjUzNzY0NGMwZWEwZTZl
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9Db21wbGV4LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250LmgiCisKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dENhaXJvLmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKKworI2luY2x1ZGUgPGNh
aXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBGb250OjpkcmF3Q29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIEdseXBoQnVm
ZmVyIGdseXBoQnVmZmVyOworICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOwor
ICAgIGlmIChzaGFwZXIuc2hhcGUoJmdseXBoQnVmZmVyKSkKKyAgICAgICAgZHJhd0dseXBoQnVm
ZmVyKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZmZXIsIHBvaW50KTsKKyAgICBlbHNlCisgICAgICAg
IExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIGdseXBoQnVmZmVyLiIpOworfQorCit2
b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0
cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBm
cm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3Jh
cGhzSW5Db21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9hdCBGb250
OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNv
bnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKK3sKKyAgICBIYXJm
QnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBpZiAoc2hhcGVyLnNoYXBlKCkpCisg
ICAgICAgIHJldHVybiBzaGFwZXIudG90YWxXaWR0aCgpOworICAgIExPR19FUlJPUigiU2hhcGVy
IGNvdWxkbid0IHNoYXBlIHRleHQgcnVuLiIpOworICAgIHJldHVybiAwOworfQorCitpbnQgRm9u
dDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZs
b2F0IHgsIGJvb2wpIGNvbnN0Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1
bik7CisgICAgaWYgKHNoYXBlci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVyLm9mZnNl
dEZvclBvc2l0aW9uKHgpOworICAgIExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIHRl
eHQgcnVuLiIpOworICAgIHJldHVybiAwOworfQorCitGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9u
UmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIEhhcmZCdXp6U2hh
cGVyIHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoKSkKKyAgICAgICAg
cmV0dXJuIHNoYXBlci5zZWxlY3Rpb25SZWN0KHBvaW50LCBoLCBmcm9tLCB0byk7CisgICAgTE9H
X0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgdGV4dCBydW4uIik7CisgICAgcmV0dXJuIEZs
b2F0UmVjdCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvRm9udEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvRm9udEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2M3ZmZl
MzM4ZTVkY2E4NTA3OTdmNDM1OTE1ZDNhYWQxYjczZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ZvbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRm9udC5oIgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgot
Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdy
YXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBj
b25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50
ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBs
ZXhUZXh0KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuRXhwYW5k
QXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBI
YXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwLjBmOwotfQotCi1pbnQgRm9udDo6
b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQsIGJv
b2wpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
RmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIGludCwgaW50LCBpbnQpIGNvbnN0Ci17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAyMDY2NTNkZGY3Zjg3Y2RjMGMwZDdhZTFlZjk0YmQzOWQ2NzdmMmQ5
Li42YTYyYzZjN2NjNDVjODljYmQ1YmUyMWViZTAxZjQ0MTE5OTU1ODc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC0yOSwxMSArMjksMTUgQEAKICNpbmNsdWRlICJGb250RGVzY3JpcHRp
b24uaCIKICNpbmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZl
ci5oIgorI2lmIFVTRShIQVJGQlVaWl9ORykKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9GY0Zv
bnRTZXQgRmNGb250U2V0OworY2xhc3MgSGFyZkJ1enpOR0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAgICAgfkZvbnRQbGF0Zm9ybURh
dGEoKTsKIAorI2lmIFVTRShIQVJGQlVaWl9ORykKKyAgICBIYXJmQnV6ek5HRmFjZSogaGFyZmJ1
enpGYWNlKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CiAgICAg
ZmxvYXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShm
bG9hdCBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KQEAgLTk4LDYgKzEwNiw5IEBAIHB1YmxpYzoK
ICAgICBib29sIG1fc3ludGhldGljT2JsaXF1ZTsKICAgICBib29sIG1fZml4ZWRXaWR0aDsKICAg
ICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7CisjaWYgVVNFKEhBUkZCVVpaX05H
KQorICAgIG11dGFibGUgUmVmUHRyPEhhcmZCdXp6TkdGYWNlPiBtX2hhcmZidXp6RmFjZTsKKyNl
bmRpZgogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhGb250RmFjZShjYWlyb19m
b250X2ZhY2VfdCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgPSBGb250RGVzY3JpcHRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA5OGFlNWVk
NjY0ZGM0MzU5M2ViM2RlODcxZjhkM2U0NDdjMjgyMDUyLi44MDNlYzNmZTA5ODNiZGM0MTNhYTk4
M2EwYzZkNGEzNWY3MTFjMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKQEAgLTE4NiwxNyArMTg2LDI3IEBAIEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0
Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICAg
ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogICAgIG1fc2NhbGVk
Rm9udCA9IGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxlZEZvbnQpOwog
CisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG1faGFyZmJ1enpGYWNlID0gb3RoZXIubV9oYXJm
YnV6ekZhY2U7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIAogRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAg
ICA6IG1fZmFsbGJhY2tzKDApCiAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyNpZiBVU0UoSEFSRkJV
WlpfTkcpCisgICAgLCBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRp
ZgogewogICAgICp0aGlzID0gb3RoZXI7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCisjaWYg
VVNFKEhBUkZCVVpaX05HKQorICAgIDogbV9oYXJmYnV6ekZhY2Uob3RoZXIubV9oYXJmYnV6ekZh
Y2UpCisjZW5kaWYKIHsKICAgICAqdGhpcyA9IG90aGVyOwogCkBAIC0yMTcsNiArMjI3LDE2IEBA
IEZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKICAgICAgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogfQogCisjaWYgVVNFKEhBUkZCVVpaX05H
KQorSGFyZkJ1enpOR0ZhY2UqIEZvbnRQbGF0Zm9ybURhdGE6OmhhcmZidXp6RmFjZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2hhcmZidXp6RmFjZSkKKyAgICAgICAgbV9oYXJmYnV6ekZhY2UgPSBI
YXJmQnV6ek5HRmFjZTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KHRoaXMp
LCBoYXNoKCkpOworCisgICAgcmV0dXJuIG1faGFyZmJ1enpGYWNlLmdldCgpOworfQorI2VuZGlm
CisKIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNoKCkKIHsKICAgICByZXR1cm4g
bV9maXhlZFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YmU4MzIxODgxZGE0N2EyMTQ5NDA2NzhkZjU4MjhlNDhmMGEzZTBjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcv
SGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoYykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
YXJmQnV6ek5HRmFjZS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1
ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRl
ICJTaW1wbGVGb250RGF0YS5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUg
PGNhaXJvLWZ0Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9mcmVl
dHlwZS5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFibGVzLmg+CisjaW5jbHVkZSA8aGIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2Fpcm9GdEZhY2VMb2NrZXIgeworcHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2Vy
KGNhaXJvX3NjYWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkgOiBtX3NjYWxlZEZvbnQoY2Fp
cm9TY2FsZWRGb250KSB7IH07CisgICAgRlRfRmFjZSBsb2NrKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKKyAgICB9
OworICAgIH5DYWlyb0Z0RmFjZUxvY2tlcigpCisgICAgeworICAgICAgICBjYWlyb19mdF9zY2Fs
ZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAg
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogbV9zY2FsZWRGb250OworfTsKKworc3RhdGljIGhiX3Bvc2l0
aW9uX3QgZmxvYXRUb0hhcmZCdXp6UG9zaXRpb24oZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGhiX3Bvc2l0aW9uX3Q+KHZhbHVlICogKDEgPDwgMTYpKTsKK30KKworc3Rh
dGljIGhiX3Bvc2l0aW9uX3QgZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAx
NikpOworfQorCitzdGF0aWMgdm9pZCBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKGNhaXJv
X3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGhiX2NvZGVwb2ludF90IGNvZGVwb2ludCwgaGJf
cG9zaXRpb25fdCogYWR2YW5jZSwgaGJfZ2x5cGhfZXh0ZW50c190KiBleHRlbnRzKQoreworICAg
IGNhaXJvX3RleHRfZXh0ZW50c190IGdseXBoRXh0ZW50czsKKyAgICBjYWlyb19nbHlwaF90IGds
eXBoOworICAgIGdseXBoLmluZGV4ID0gY29kZXBvaW50OworICAgIGdseXBoLnggPSAwOworICAg
IGdseXBoLnkgPSAwOworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoc2NhbGVk
Rm9udCwgJmdseXBoLCAxLCAmZ2x5cGhFeHRlbnRzKTsKKworICAgIGlmIChhZHZhbmNlKQorICAg
ICAgICAqYWR2YW5jZSA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9h
ZHZhbmNlKTsKKyAgICBpZiAoZXh0ZW50cykgeworICAgICAgICBleHRlbnRzLT54X2JlYXJpbmcg
PSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLnhfYmVhcmluZyk7CisgICAg
ICAgIGV4dGVudHMtPnlfYmVhcmluZyA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4
dGVudHMueV9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50cy0+d2lkdGggPSBkb3VibGVUb0hhcmZC
dXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLndpZHRoKTsKKyAgICAgICAgZXh0ZW50cy0+aGVpZ2h0
ID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy5oZWlnaHQpOworICAgIH0K
K30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoKGhiX2ZvbnRfdCogaGJGb250
LCB2b2lkKiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgdW5pY29kZSwgaGJfY29kZXBvaW50X3Qg
dmFyaWF0aW9uU2VsZWN0b3IsIGhiX2NvZGVwb2ludF90KiBnbHlwaCwgdm9pZCogdXNlckRhdGEp
Cit7CisgICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2Fz
dDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3Qq
IHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2Nh
bGVkRm9udCk7CisKKyAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXMgPSBDQUlST19TVEFUVVNfU1VD
Q0VTUzsKKyAgICBjYWlyb19nbHlwaF90KiBnbHlwaHMgPSAwOworICAgIGludCBudW1HbHlwaHMg
PSAwOworICAgIENTdHJpbmcgdXRmOENvZGVwb2ludCA9IFVURjhFbmNvZGluZygpLmVuY29kZShy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oJnVuaWNvZGUpLCAxLCBRdWVzdGlvbk1hcmtzRm9yVW5l
bmNvZGFibGVzKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90ZXh0X3RvX2dseXBocyhzY2FsZWRG
b250LCAwLCAwLCB1dGY4Q29kZXBvaW50LmRhdGEoKSwgdXRmOENvZGVwb2ludC5sZW5ndGgoKSwg
JmdseXBocywgJm51bUdseXBocywgMCwgMCwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBDQUlST19T
VEFUVVNfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChudW1HbHlw
aHMgPiAwKTsKKyAgICAqZ2x5cGggPSBnbHlwaHNbMF0uaW5kZXg7CisgICAgY2Fpcm9fZ2x5cGhf
ZnJlZShnbHlwaHMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfcG9zaXRpb25f
dCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90KiBoYkZvbnQsIHZv
aWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250
UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxl
ZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkRm9u
dCk7CisKKyAgICBoYl9wb3NpdGlvbl90IGFkdmFuY2UgPSAwOworICAgIENhaXJvR2V0R2x5cGhX
aWR0aEFuZEV4dGVudHMoc2NhbGVkRm9udCwgZ2x5cGgsICZhZHZhbmNlLCAwKTsKKyAgICByZXR1
cm4gYWR2YW5jZTsKK30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoSG9yaXpv
bnRhbE9yaWdpbihoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2lu
dF90IGdseXBoLCBoYl9wb3NpdGlvbl90KiB4LCBoYl9wb3NpdGlvbl90KiB5LCB2b2lkKiB1c2Vy
RGF0YSkKK3sKKyAgICAvLyBKdXN0IHJldHVybiB0cnVlLCBmb2xsb3dpbmcgdGhlIHdheSB0aGF0
IEhhcmZidXp6LUZyZWVUeXBlCisgICAgLy8gaW1wbGVtZW50YXRpb24gZG9lcy4KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBoRXh0ZW50cyho
Yl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCBo
Yl9nbHlwaF9leHRlbnRzX3QqIGV4dGVudHMsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQ
bGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3Jt
RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0g
cGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOworCisg
ICAgQ2Fpcm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhzY2FsZWRGb250LCBnbHlwaCwgMCwgZXh0
ZW50cyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBoYl9mb250X2Z1bmNzX3QqIGhh
cmZidXp6Q2Fpcm9UZXh0R2V0Rm9udEZ1bmNzKCkKK3sKKyAgICBzdGF0aWMgaGJfZm9udF9mdW5j
c190KiBoYXJmYnV6ekNhaXJvRm9udEZ1bmNzID0gMDsKKworICAgIC8vIFdlIGRvbid0IHNldCBj
YWxsYmFjayBmdW5jdGlvbnMgd2hpY2ggd2UgY2FuJ3Qgc3VwcG9ydC4KKyAgICAvLyBIYXJmYnV6
eiB3aWxsIHVzZSB0aGUgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaWYgdGhleSBhcmVuJ3Qgc2V0
LgorICAgIGlmICghaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcykgeworICAgICAgICBoYXJmYnV6ekNh
aXJvRm9udEZ1bmNzID0gaGJfZm9udF9mdW5jc19jcmVhdGUoKTsKKyAgICAgICAgaGJfZm9udF9m
dW5jc19zZXRfZ2x5cGhfZnVuYyhoYXJmYnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEds
eXBoLCAwLCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfaF9hZHZhbmNlX2Z1
bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxBZHZh
bmNlLCAwLCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfaF9vcmlnaW5fZnVu
YyhoYXJmYnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbE9yaWdp
biwgMCwgMCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2V4dGVudHNfZnVuYyho
YXJmYnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoRXh0ZW50cywgMCwgMCk7Cisg
ICAgICAgIGhiX2ZvbnRfZnVuY3NfbWFrZV9pbW11dGFibGUoaGFyZmJ1enpDYWlyb0ZvbnRGdW5j
cyk7CisgICAgfQorICAgIHJldHVybiBoYXJmYnV6ekNhaXJvRm9udEZ1bmNzOworfQorCitzdGF0
aWMgaGJfYmxvYl90KiBoYXJmYnV6ekNhaXJvR2V0VGFibGUoaGJfZmFjZV90KiBmYWNlLCBoYl90
YWdfdCB0YWcsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQbGF0Zm9ybURhdGEqIGZvbnQg
PSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPih1c2VyRGF0YSk7CisKKyAgICBj
YWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gZm9udC0+c2NhbGVkRm9udCgpOworICAg
IGlmICghc2NhbGVkRm9udCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDYWlyb0Z0RmFjZUxv
Y2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKKyAgICBGVF9GYWNlIGZ0Rm9udCA9
IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKworICAgIGlmICghZnRGb250KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIEZUX1VMb25nIHRhYmxlU2l6ZSA9IDA7CisgICAgRlRfRXJyb3IgZXJy
b3IgPSBGVF9Mb2FkX1NmbnRfVGFibGUoZnRGb250LCB0YWcsIDAsIDAsICZ0YWJsZVNpemUpOwor
ICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGVF9CeXRlKiBidWZmZXIg
PSByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihmYXN0TWFsbG9jKHRhYmxlU2l6ZSkpOworICAg
IGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBGVF9VTG9uZyBleHBlY3RlZFRh
YmxlU2l6ZSA9IHRhYmxlU2l6ZTsKKyAgICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZShmdEZv
bnQsIHRhZywgMCwgYnVmZmVyLCAmdGFibGVTaXplKTsKKyAgICBpZiAoZXJyb3IgfHwgdGFibGVT
aXplICE9IGV4cGVjdGVkVGFibGVTaXplKSB7CisgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBoYl9ibG9iX2NyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCB0YWJsZVNpemUsIEhCX01FTU9SWV9N
T0RFX1dSSVRBQkxFLCBidWZmZXIsIGZhc3RGcmVlKTsKK30KKworaGJfZmFjZV90KiBIYXJmQnV6
ek5HRmFjZTo6Y3JlYXRlRmFjZSgpCit7CisgICAgaGJfZmFjZV90KiBmYWNlID0gaGJfZmFjZV9j
cmVhdGVfZm9yX3RhYmxlcyhoYXJmYnV6ekNhaXJvR2V0VGFibGUsIG1fcGxhdGZvcm1EYXRhLCAw
KTsKKyAgICBBU1NFUlQoZmFjZSk7CisgICAgcmV0dXJuIGZhY2U7Cit9CisKK2hiX2ZvbnRfdCog
SGFyZkJ1enpOR0ZhY2U6OmNyZWF0ZUZvbnQoKQoreworICAgIGhiX2ZvbnRfdCogZm9udCA9IGhi
X2ZvbnRfY3JlYXRlKG1fZmFjZSk7CisgICAgaGJfZm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZmJ1
enpDYWlyb1RleHRHZXRGb250RnVuY3MoKSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIGNvbnN0
IGZsb2F0IHNpemUgPSBtX3BsYXRmb3JtRGF0YS0+c2l6ZSgpOworICAgIGlmIChmbG9vcmYoc2l6
ZSkgPT0gc2l6ZSkKKyAgICAgICAgaGJfZm9udF9zZXRfcHBlbShmb250LCBzaXplLCBzaXplKTsK
KyAgICBpbnQgc2NhbGUgPSBmbG9hdFRvSGFyZkJ1enpQb3NpdGlvbihzaXplKTsKKyAgICBoYl9m
b250X3NldF9zY2FsZShmb250LCBzY2FsZSwgc2NhbGUpOworICAgIGhiX2ZvbnRfbWFrZV9pbW11
dGFibGUoZm9udCk7CisgICAgcmV0dXJuIGZvbnQ7Cit9CisKK0dseXBoQnVmZmVyQWR2YW5jZSBI
YXJmQnV6elNoYXBlcjo6Y3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpCit7CisgICAgcmV0dXJuIEdseXBoQnVmZmVyQWR2YW5jZSh3aWR0aCwgaGVpZ2h0
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZDI1
ZmI4MTI3NTEyOTJkYTRhNjQ0NmQ0NGY1MjYzOTUxNDg3MDg4MS4uOTJmMmRiMmIwZWU0NTIxNTQ5
ODg2YWJmM2EzNzAzZmY5ZThiMDllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw4
IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgorICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3NxbCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDZjZGM5Yjc3NWZkZjU5NWYxNzM3NjIzZjJkMDhjNmUwMTk2NmI3
YmYuLjdjNzdkOTZmZTA1MjNlMzdjMzU0YWNlOTdhYWM4MWYzYzk2MmU3ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtNTYsNiArNTYsOSBAQCBJRiAoV1RGX1VTRV9GUkVFVFlQRSkKICAg
TElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUiCiAgICkKKyAgTElTVChBUFBFTkQgV2ViQ29y
ZV9MSUJSQVJJRVMKKyAgICAke0hBUkZCVVpaX0xJQlJBUklFU30KKyAgKQogRU5ESUYgKCkKIAog
SUYgKFdURl9VU0VfUEFOR08pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDM4NGQ3ZTZkZTQzOWNj
OWRkNWM2NDM0ZjExMGQ2MDZkYTA5NTRkYzYuLmVhNGUwY2RhNDhmZWU2NzE5YmRkZmQ1MmY1OWJj
ZmVjNzgxYzFiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC02Nyw2ICs2Nyw4IEBAIFNFVChX
ZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
YW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKKyAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3
b3JrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9zcWwiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZDM1YjI1YWYzNmVjODA2M2EwNzljYzRhNzViNjc0OWVhM2NjYWM0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQpAQCAt
MCwwICsxLDMgQEAKK0lOQ0xVREUoRmluZFBrZ0NvbmZpZykKKworUEtHX0NIRUNLX01PRFVMRVMg
KGhhcmZidXp6IFJFUVVJUkVEIGhhcmZidXp6Pj0wLjkuMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5k
ZXggMWJmNzFmODExYTEwMjg5NzNmMjdkMDExMjVhMWVjYjlkMTVlMGI2Zi4uMWYyYTY3NDc2ZjU4
ZThmYzY3NWRhZTg1NGU0ODBhN2JiOGVhNDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTEx
OSw4ICsxMTksMTEgQEAgRU5ESUYgKCkKIAogSUYgKEZPTlRfQkFDS0VORCBTVFJFUVVBTCAiZnJl
ZXR5cGUiKQogICBGSU5EX1BBQ0tBR0UoRnJlZXR5cGUgUkVRVUlSRUQpCisgIEZJTkRfUEFDS0FH
RShIYXJmQnV6eiBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfRlJFRVRZUEUgMSkKKyAgU0VUKFdU
Rl9VU0VfSEFSRkJVWlpfTkcgMSkKICAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQ
RT0xKQorICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiBFTFNFICgp
CiAgIEZJTkRfUEFDS0FHRShQYW5nbyBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfUEFOR08gMSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMTI0
YTNlZDMwZDhkY2M1MGUwOGU0M2ZhNGYwOGQ0OWFhMWZhZGQzLi45MzMxM2IwMzFkYzE3OWI2ODgy
MTVjMTUxY2RhNDg2ODcyZThhMWU0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2
dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9d
IEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyaW5naW5nIEhhcmZidXp6IHN1cHBv
cnQgdG8gRUZMIHdpdGggdGhpcyBwYXRjaCwgc28gd2UgbmVlZCBIYXJmQnV6eiBpbiB0aGUgcHVs
bGVkIGluIGpoYnVpbGQgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9DTWFrZUxpc3RzLnR4dDogQWRkaW5nIGFkZGl0aW9uYWwgaGVhZGVyIGluY2x1ZGUgZGlyZWN0
b3JpZXMuCisgICAgICAgICogZWZsL2poYnVpbGQubW9kdWxlczogQWRkaW5nIHNvdXJjZSBmb3Ig
SGFyZkJ1enogcmVsZWFzZSB2ZXJzaW9uIDAuOS4wLgorCiAyMDEyLTA3LTI0ICBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIE1TVkM6IHVu
cmVzb2x2ZWQgZXh0ZXJuYWwgc3ltYm9sIF9fRGxsTWFpbkNSVFN0YXJ0dXBAMTIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDRjYzA1MDE1MDM0NzllNWUyZTJhY2I5Yzk1
ZGUzYjg0NjMyZTcyNWUuLmJhZGMyYzQ3MWZhN2U4NDk1YmY1NTFkZTQ4OWMxZDBhYjRkYWIwMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsOCBAQCBT
RVQoV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vZWRpdGluZwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6egorICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L25nCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yawogICAgICR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL3RleHQKICAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pzCmRpZmYgLS1n
aXQgYS9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxl
cwppbmRleCBhMjYwZmE0OGZjMDkxN2IzNDE4Yjc1YjU0MmE4Mjc0ZmQ4OGQwN2ZiLi45YjQwN2Y0
ZDg0OTAxOTU4ZmI1ZDMxMjVhYTZhODE5MDUyMWZiODI0IDEwMDY0NAotLS0gYS9Ub29scy9lZmwv
amhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKQEAgLTksNiAr
OSw3IEBACiAgICAgICA8ZGVwIHBhY2thZ2U9ImZvbnRzIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImZvbnRjb25maWciLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZnJlZXR5cGU2Ii8+CisgICAgICA8
ZGVwIHBhY2thZ2U9ImhhcmZidXp6Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWIiLz4KICAg
ICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9
ImxpYnNvdXAiLz4KQEAgLTE1OSw2ICsxNjAsMTUgQEAKICAgICA8L2JyYW5jaD4KICAgPC9hdXRv
dG9vbHM+CiAKKyA8YXV0b3Rvb2xzIGlkPSJoYXJmYnV6eiIgYXV0b2dlbi1zaD0iY29uZmlndXJl
Ij4KKyAgIDxicmFuY2ggbW9kdWxlPSJzb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlL2hhcmZidXp6
LTIwMTIwNjI3LnRhci5iejIiIHZlcnNpb249IjAuOS4wIgorCSAgIGNoZWNrb3V0ZGlyPSJoYXJm
YnV6ei0wLjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJlZWRlc2t0b3Aub3JnIgorICAgICAgICAg
ICBoYXNoPSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4Zjg3ZTg5OGY1ZjE4YWE5MThhNDFkYjYy
YWRiYzE3ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAgICAgbWQ1c3VtPSIxOGU2YThkODQ3MjU5
NDQxNzIzYTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5jaD4KKyA8L2F1dG90b29scz4KKwogICA8
YXV0b3Rvb2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5jaCBtb2R1bGU9ImVpbmEiCiAgICAgICAg
ICAgICByZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCAxMGZjODBlMGJjNDE2YTBiOTgyMTlhM2M1MDE3ZWI5OTEyNmMyYzdjLi4y
N2U1MGI2Nzc3NWRlYjQ1NDY0MDFkMzVjYmE5NDAxOTdmMjI0ZGRjIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWlu
aWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBb
Q2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbmZpZ3VyaW5nIEZyZWV0
eXBlIGJhY2tlbmQgdG8gdXNlIEhhcmZCdXp6IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlOiBBZGRlZC4gUGtnY29uZmlnIGJhc2VkIGRpc2Nv
dmVyeSBvZiBIYXJmQnV6ei4KKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZTogQWRkaW5nIEhhcmZidXp6IGNvbmZpZ3VyYXRpb24uCisKIDIwMTItMDctMjMgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSB1bm5lY2Vz
c2FyeSB0cmFpbGluZyBzcGFjZSBpbiB0aGUgcHJldmlvdXMgY29tbWl0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154126</attachid>
            <date>2012-07-24 13:06:01 -0700</date>
            <delta_ts>2012-07-25 01:59:06 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, v3</desc>
            <filename>bug-91864-20120724220551.patch</filename>
            <type>text/plain</type>
            <size>30547</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM4OGRjZTdhYTk3OTVh
NDdkOWUzMTMzNGRlNmYxN2M4NTQzZjgyNy4uNjNkNjBiNTIxMGZlMDJlN2QxNzE2MmJkMjk3YWI1
ZWZjMmQxY2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI0ICBTY290dCBH
cmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgbmF0aXZlIChub24t
Y3lnd2luKSBiaW5hcmllcyBmb3IgcGVybCwgZ3BlcmYsIGFuZCBiaXNvbiBpbiBDaHJvbWl1bQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA5YTJhZGVhMzdjYTQxZmIzYzA1NWYyZTUzZWY0ZDgwMGM3ODk3ZjlkLi5iYjhi
ZmY1MzVkNTU4MTAxMmMyZDRmMDI5ZDgyMjJkNTRlNWRlNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA3LTI0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hl
c0BpbnRlbC5jb20+CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcg
dXNpbmcgSGFyZmJ1enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRpbmcgaW5jbHVkZXMgZm9yIGhhcmZidXp6IGZvbGRlcnMuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9Q
Uk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19F
TEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ1OWViMWU3ZjVjNDEyNmY3OTVkNTQ3
Y2FhN2ZiZWI4NzQ1NDc0MDEuLjI5NWJhNGUwZTg1MTBhZjk3OTA5ZDIxYTVjYWMwMWM4MDcyMTRh
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0
dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10g
QWRkIGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGluY2x1ZGVzIGZvciBoYXJm
YnV6eiBmb2xkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDctMjQg
IFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgdmlicmF0aW9uIGNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAzNTJiNTRlNmQzZDRmZThjMWE5ZWJkYWNiZGM4NTFiMzJmZDU4M2RhLi40NDgz
M2UyNDczMjNkZWNjYjMyNjUxMjAzODU2MTU0YWQ5YjEzMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNDgsNiArNDgsOCBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL2FybSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enoiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCBhOWE0ZjExMjI3NjYyZDM3ODNkMmE5MzI0MjJiZTMwOGMyYzY3MjQ1Li5i
M2M0YzhhODFiZDVmYjVkYjNhZTE1MDEyYmY0YjYwZTczN2QzOTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTQ5LDE1ICsxNDksMjQgQEAgSUYgKFdURl9VU0VfQ0FJUk8pCiAgIElG
IChXVEZfVVNFX0ZSRUVUWVBFKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
IgorICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6LyIKKyAg
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAp
CiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAKLSAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZs
LmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAK
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAog
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQ
YWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6elNoYXBlckJhc2UuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6ek5HRmFjZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAKKyAgICApCisgICAgTElTVChBUFBFTkQgV2Vi
Q29yZV9MSUJSQVJJRVMKKyAgICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQogICAgICkKICAgRU5E
SUYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGMzMzhlZGI3OTk3Nzk3YjVjOGUyNWNjNmZiYmNl
NjliZTRkZjBlY2YuLjE0MmYyNWFiZjhkZGZjMWNjZTBiMGEwMTkyM2VmZjkwYjZkZDkwMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM2NTMsNyArMzY1Myw2IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVkRNWFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0ltYWdlRWZsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ludFBvaW50RWZsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
ZjNlMTliZjlkMWIyZjU5ZDViY2Q2ZjUzNzY0NGMwZWEwZTZlYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4
LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGb250LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJIYXJmQnV6elNoYXBlci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVk
ZSAiU2ltcGxlRm9udERhdGEuaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAg
IEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUo
JmdseXBoQnVmZmVyKSkKKyAgICAgICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIHJ1biwgZ2x5
cGhCdWZmZXIsIHBvaW50KTsKKyAgICBlbHNlCisgICAgICAgIExPR19FUlJPUigiU2hhcGVyIGNv
dWxkbid0IHNoYXBlIGdseXBoQnVmZmVyLiIpOworfQorCit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNp
c01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25z
dCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFyayAqLywgY29u
c3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8p
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBGb250OjpjYW5SZXR1
cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4q
LCBHbHlwaE92ZXJmbG93KikgY29uc3QKK3sKKyAgICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhp
cywgcnVuKTsKKyAgICBpZiAoc2hhcGVyLnNoYXBlKCkpCisgICAgICAgIHJldHVybiBzaGFwZXIu
dG90YWxXaWR0aCgpOworICAgIExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIHRleHQg
cnVuLiIpOworICAgIHJldHVybiAwOworfQorCitpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wpIGNvbnN0Cit7
CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBlci5z
aGFwZSgpKQorICAgICAgICByZXR1cm4gc2hhcGVyLm9mZnNldEZvclBvc2l0aW9uKHgpOworICAg
IExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIHRleHQgcnVuLiIpOworICAgIHJldHVy
biAwOworfQorCitGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAoreworICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4p
OworICAgIGlmIChzaGFwZXIuc2hhcGUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBlci5zZWxlY3Rp
b25SZWN0KHBvaW50LCBoLCBmcm9tLCB0byk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRu
J3Qgc2hhcGUgdGV4dCBydW4uIik7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzY2M3ZmZlMzM4ZTVkY2E4NTA3OTdmNDM1OTE1
ZDNhYWQxYjczZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRFZmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAwIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5z
dGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFBy
b0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1z
dW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udC5o
IgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLSNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgotCi0jaW5jbHVkZSA8Y2Fpcm8uaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGb250
OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogLyogY29u
dGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8q
IG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywg
aW50IC8qIHRvICovKSBjb25zdAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wg
Rm9udDo6Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCkKLXsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29t
cGxleFRleHQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZmxvYXQgRm9udDo6ZmxvYXRX
aWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZv
bnREYXRhKj4qLCBHbHlwaE92ZXJmbG93KikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwLjBmOwotfQotCi1pbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JD
b21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQsIGJvb2wpIGNvbnN0Ci17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotRmxvYXRSZWN0IEZvbnQ6OnNlbGVj
dGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYs
IGludCwgaW50LCBpbnQpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gRmxvYXRSZWN0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAyMDY2
NTNkZGY3Zjg3Y2RjMGMwZDdhZTFlZjk0YmQzOWQ2NzdmMmQ5Li42YTYyYzZjN2NjNDVjODljYmQ1
YmUyMWViZTAxZjQ0MTE5OTU1ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yOSwx
MSArMjksMTUgQEAKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2lmIFVTRShIQVJGQlVa
Wl9ORykKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUmVm
UHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNGb250U2V0OworY2xh
c3MgSGFyZkJ1enpOR0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiArNjcs
MTAgQEAgcHVibGljOgogCiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAorI2lmIFVTRShIQVJG
QlVaWl9ORykKKyAgICBIYXJmQnV6ek5HRmFjZSogaGFyZmJ1enpGYWNlKCkgY29uc3Q7CisjZW5k
aWYKKwogICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CiAgICAgZmxvYXQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShmbG9hdCBzaXplKSB7IG1fc2l6ZSA9
IHNpemU7IH0KQEAgLTk4LDYgKzEwNiw5IEBAIHB1YmxpYzoKICAgICBib29sIG1fc3ludGhldGlj
T2JsaXF1ZTsKICAgICBib29sIG1fZml4ZWRXaWR0aDsKICAgICBjYWlyb19zY2FsZWRfZm9udF90
KiBtX3NjYWxlZEZvbnQ7CisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG11dGFibGUgUmVmUHRy
PEhhcmZCdXp6TkdGYWNlPiBtX2hhcmZidXp6RmFjZTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZVdpdGhGb250RmFjZShjYWlyb19mb250X2ZhY2VfdCosIGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgPSBGb250RGVzY3JpcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA5OGFlNWVkNjY0ZGM0MzU5M2ViM2RlODcxZjhk
M2U0NDdjMjgyMDUyLi44MDNlYzNmZTA5ODNiZGM0MTNhYTk4M2EwYzZkNGEzNWY3MTFjMjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTE4NiwxNyAr
MTg2LDI3IEBAIEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRf
ZGVzdHJveShtX3NjYWxlZEZvbnQpOwogICAgIG1fc2NhbGVkRm9udCA9IGNhaXJvX3NjYWxlZF9m
b250X3JlZmVyZW5jZShvdGhlci5tX3NjYWxlZEZvbnQpOwogCisjaWYgVVNFKEhBUkZCVVpaX05H
KQorICAgIG1faGFyZmJ1enpGYWNlID0gb3RoZXIubV9oYXJmYnV6ekZhY2U7CisjZW5kaWYKKwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikKICAgICA6IG1fZmFsbGJhY2tzKDApCiAg
ICAgLCBtX3NjYWxlZEZvbnQoMCkKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisgICAgLCBtX2hhcmZi
dXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRpZgogewogICAgICp0aGlzID0gb3Ro
ZXI7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAg
IDogbV9oYXJmYnV6ekZhY2Uob3RoZXIubV9oYXJmYnV6ekZhY2UpCisjZW5kaWYKIHsKICAgICAq
dGhpcyA9IG90aGVyOwogCkBAIC0yMTcsNiArMjI3LDE2IEBAIEZvbnRQbGF0Zm9ybURhdGE6On5G
b250UGxhdGZvcm1EYXRhKCkKICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3Nj
YWxlZEZvbnQpOwogfQogCisjaWYgVVNFKEhBUkZCVVpaX05HKQorSGFyZkJ1enpOR0ZhY2UqIEZv
bnRQbGF0Zm9ybURhdGE6OmhhcmZidXp6RmFjZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhcmZi
dXp6RmFjZSkKKyAgICAgICAgbV9oYXJmYnV6ekZhY2UgPSBIYXJmQnV6ek5HRmFjZTo6Y3JlYXRl
KGNvbnN0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KHRoaXMpLCBoYXNoKCkpOworCisgICAgcmV0
dXJuIG1faGFyZmJ1enpGYWNlLmdldCgpOworfQorI2VuZGlmCisKIGJvb2wgRm9udFBsYXRmb3Jt
RGF0YTo6aXNGaXhlZFBpdGNoKCkKIHsKICAgICByZXR1cm4gbV9maXhlZFdpZHRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1
enpOR0ZhY2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODA0MjM0MGJkZWQw
NzI0YzZmZWMyYzBiYmFlOWRlMGYyZTdiM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5j
cHAKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgorCisj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisj
aW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgor
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CisjaW5jbHVk
ZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmcmVldHlwZS9mcmVldHlwZS5oPgorI2luY2x1ZGUgPGZy
ZWV0eXBlL3R0dGFibGVzLmg+CisjaW5jbHVkZSA8aGIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2Fpcm9GdEZhY2VMb2Nr
ZXIgeworcHVibGljOgorICAgIENhaXJvRnRGYWNlTG9ja2VyKGNhaXJvX3NjYWxlZF9mb250X3Qq
IGNhaXJvU2NhbGVkRm9udCkgOiBtX3NjYWxlZEZvbnQoY2Fpcm9TY2FsZWRGb250KSB7IH07Cisg
ICAgRlRfRmFjZSBsb2NrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWlyb19mdF9zY2FsZWRf
Zm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKKyAgICB9OworICAgIH5DYWlyb0Z0RmFjZUxv
Y2tlcigpCisgICAgeworICAgICAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZSht
X3NjYWxlZEZvbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
bV9zY2FsZWRGb250OworfTsKKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgZmxvYXRUb0hhcmZCdXp6
UG9zaXRpb24oZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGhiX3Bvc2l0
aW9uX3Q+KHZhbHVlICogKDEgPDwgMTYpKTsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgZG91
YmxlVG9IYXJmQnV6elBvc2l0aW9uKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOworfQorCitzdGF0aWMgdm9p
ZCBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxl
ZEZvbnQsIGhiX2NvZGVwb2ludF90IGNvZGVwb2ludCwgaGJfcG9zaXRpb25fdCogYWR2YW5jZSwg
aGJfZ2x5cGhfZXh0ZW50c190KiBleHRlbnRzKQoreworICAgIGNhaXJvX3RleHRfZXh0ZW50c190
IGdseXBoRXh0ZW50czsKKyAgICBjYWlyb19nbHlwaF90IGdseXBoOworICAgIGdseXBoLmluZGV4
ID0gY29kZXBvaW50OworICAgIGdseXBoLnggPSAwOworICAgIGdseXBoLnkgPSAwOworICAgIGNh
aXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoc2NhbGVkRm9udCwgJmdseXBoLCAxLCAmZ2x5
cGhFeHRlbnRzKTsKKworICAgIGlmIChhZHZhbmNlKQorICAgICAgICAqYWR2YW5jZSA9IGRvdWJs
ZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9hZHZhbmNlKTsKKyAgICBpZiAoZXh0
ZW50cykgeworICAgICAgICBleHRlbnRzLT54X2JlYXJpbmcgPSBkb3VibGVUb0hhcmZCdXp6UG9z
aXRpb24oZ2x5cGhFeHRlbnRzLnhfYmVhcmluZyk7CisgICAgICAgIGV4dGVudHMtPnlfYmVhcmlu
ZyA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueV9iZWFyaW5nKTsKKyAg
ICAgICAgZXh0ZW50cy0+d2lkdGggPSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRl
bnRzLndpZHRoKTsKKyAgICAgICAgZXh0ZW50cy0+aGVpZ2h0ID0gZG91YmxlVG9IYXJmQnV6elBv
c2l0aW9uKGdseXBoRXh0ZW50cy5oZWlnaHQpOworICAgIH0KK30KKworc3RhdGljIGhiX2Jvb2xf
dCBoYXJmYnV6ekdldEdseXBoKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJf
Y29kZXBvaW50X3QgdW5pY29kZSwgaGJfY29kZXBvaW50X3QgdmFyaWF0aW9uU2VsZWN0b3IsIGhi
X2NvZGVwb2ludF90KiBnbHlwaCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgRm9udFBsYXRmb3Jt
RGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4o
Zm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9y
bURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkRm9udCk7CisKKyAgICBjYWly
b19zdGF0dXNfdCBzdGF0dXMgPSBDQUlST19TVEFUVVNfU1VDQ0VTUzsKKyAgICBjYWlyb19nbHlw
aF90KiBnbHlwaHMgPSAwOworICAgIGludCBudW1HbHlwaHMgPSAwOworICAgIENTdHJpbmcgdXRm
OENvZGVwb2ludCA9IFVURjhFbmNvZGluZygpLmVuY29kZShyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oJnVuaWNvZGUpLCAxLCBRdWVzdGlvbk1hcmtzRm9yVW5lbmNvZGFibGVzKTsKKyAgICBjYWly
b19zY2FsZWRfZm9udF90ZXh0X3RvX2dseXBocyhzY2FsZWRGb250LCAwLCAwLCB1dGY4Q29kZXBv
aW50LmRhdGEoKSwgdXRmOENvZGVwb2ludC5sZW5ndGgoKSwgJmdseXBocywgJm51bUdseXBocywg
MCwgMCwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKG51bUdseXBocyA+IDApOworICAgICpnbHlw
aCA9IGdseXBoc1swXS5pbmRleDsKKyAgICBjYWlyb19nbHlwaF9mcmVlKGdseXBocyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBoYl9wb3NpdGlvbl90IGhhcmZidXp6R2V0R2x5cGhI
b3Jpem9udGFsQWR2YW5jZShoYl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2Nv
ZGVwb2ludF90IGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRh
KiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihmb250
RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRmb3JtRGF0
YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsKKworICAgIGhiX3Bvc2l0
aW9uX3QgYWR2YW5jZSA9IDA7CisgICAgQ2Fpcm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhzY2Fs
ZWRGb250LCBnbHlwaCwgJmFkdmFuY2UsIDApOworICAgIHJldHVybiBhZHZhbmNlOworfQorCitz
dGF0aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsT3JpZ2luKGhiX2ZvbnRf
dCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIGhiX3Bvc2l0
aW9uX3QqIHgsIGhiX3Bvc2l0aW9uX3QqIHksIHZvaWQqIHVzZXJEYXRhKQoreworICAgIC8vIEp1
c3QgcmV0dXJuIHRydWUsIGZvbGxvd2luZyB0aGUgd2F5IHRoYXQgSGFyZmJ1enotRnJlZVR5cGUK
KyAgICAvLyBpbXBsZW1lbnRhdGlvbiBkb2VzLgorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGhFeHRlbnRzKGhiX2ZvbnRfdCogaGJGb250LCB2
b2lkKiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIGhiX2dseXBoX2V4dGVudHNfdCog
ZXh0ZW50cywgdm9pZCogdXNlckRhdGEpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZv
cm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOwor
ICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxl
ZEZvbnQoKTsKKyAgICBBU1NFUlQoc2NhbGVkRm9udCk7CisKKyAgICBDYWlyb0dldEdseXBoV2lk
dGhBbmRFeHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAwLCBleHRlbnRzKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGhiX2ZvbnRfZnVuY3NfdCogaGFyZmJ1enpDYWlyb1RleHRHZXRG
b250RnVuY3MoKQoreworICAgIHN0YXRpYyBoYl9mb250X2Z1bmNzX3QqIGhhcmZidXp6Q2Fpcm9G
b250RnVuY3MgPSAwOworCisgICAgLy8gV2UgZG9uJ3Qgc2V0IGNhbGxiYWNrIGZ1bmN0aW9ucyB3
aGljaCB3ZSBjYW4ndCBzdXBwb3J0LgorICAgIC8vIEhhcmZidXp6IHdpbGwgdXNlIHRoZSBmYWxs
YmFjayBpbXBsZW1lbnRhdGlvbiBpZiB0aGV5IGFyZW4ndCBzZXQuCisgICAgaWYgKCFoYXJmYnV6
ekNhaXJvRm9udEZ1bmNzKSB7CisgICAgICAgIGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MgPSBoYl9m
b250X2Z1bmNzX2NyZWF0ZSgpOworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9mdW5j
KGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5cGgsIDAsIDApOworICAgICAg
ICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9oX2FkdmFuY2VfZnVuYyhoYXJmYnV6ekNhaXJvRm9u
dEZ1bmNzLCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UsIDAsIDApOworICAgICAg
ICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9oX29yaWdpbl9mdW5jKGhhcmZidXp6Q2Fpcm9Gb250
RnVuY3MsIGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsT3JpZ2luLCAwLCAwKTsKKyAgICAgICAg
aGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfZXh0ZW50c19mdW5jKGhhcmZidXp6Q2Fpcm9Gb250RnVu
Y3MsIGhhcmZidXp6R2V0R2x5cGhFeHRlbnRzLCAwLCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5j
c19tYWtlX2ltbXV0YWJsZShoYXJmYnV6ekNhaXJvRm9udEZ1bmNzKTsKKyAgICB9CisgICAgcmV0
dXJuIGhhcmZidXp6Q2Fpcm9Gb250RnVuY3M7Cit9CisKK3N0YXRpYyBoYl9ibG9iX3QqIGhhcmZi
dXp6Q2Fpcm9HZXRUYWJsZShoYl9mYWNlX3QqIGZhY2UsIGhiX3RhZ190IHRhZywgdm9pZCogdXNl
ckRhdGEpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Rm9udFBsYXRmb3JtRGF0YSo+KHVzZXJEYXRhKTsKKworICAgIGNhaXJvX3NjYWxlZF9mb250X3Qq
IHNjYWxlZEZvbnQgPSBmb250LT5zY2FsZWRGb250KCk7CisgICAgaWYgKCFzY2FsZWRGb250KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9j
a2VyKHNjYWxlZEZvbnQpOworICAgIEZUX0ZhY2UgZnRGb250ID0gY2Fpcm9GdEZhY2VMb2NrZXIu
bG9jaygpOworICAgIGlmICghZnRGb250KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZUX1VM
b25nIHRhYmxlU2l6ZSA9IDA7CisgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1NmbnRfVGFi
bGUoZnRGb250LCB0YWcsIDAsIDAsICZ0YWJsZVNpemUpOworICAgIGlmIChlcnJvcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBGVF9CeXRlKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PEZU
X0J5dGUqPihmYXN0TWFsbG9jKHRhYmxlU2l6ZSkpOworICAgIGlmICghYnVmZmVyKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsK
KyAgICBlcnJvciA9IEZUX0xvYWRfU2ZudF9UYWJsZShmdEZvbnQsIHRhZywgMCwgYnVmZmVyLCAm
dGFibGVTaXplKTsKKyAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVT
aXplKSB7CisgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIHJldHVybiBoYl9ibG9iX2NyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihidWZmZXIpLCB0YWJsZVNpemUsIEhCX01FTU9SWV9NT0RFX1dSSVRBQkxFLCBidWZmZXIs
IGZhc3RGcmVlKTsKK30KKworaGJfZmFjZV90KiBIYXJmQnV6ek5HRmFjZTo6Y3JlYXRlRmFjZSgp
Cit7CisgICAgaGJfZmFjZV90KiBmYWNlID0gaGJfZmFjZV9jcmVhdGVfZm9yX3RhYmxlcyhoYXJm
YnV6ekNhaXJvR2V0VGFibGUsIG1fcGxhdGZvcm1EYXRhLCAwKTsKKyAgICBBU1NFUlQoZmFjZSk7
CisgICAgcmV0dXJuIGZhY2U7Cit9CisKK2hiX2ZvbnRfdCogSGFyZkJ1enpOR0ZhY2U6OmNyZWF0
ZUZvbnQoKQoreworICAgIGhiX2ZvbnRfdCogZm9udCA9IGhiX2ZvbnRfY3JlYXRlKG1fZmFjZSk7
CisgICAgaGJfZm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MoKSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIGNvbnN0IGZsb2F0IHNpemUgPSBtX3BsYXRm
b3JtRGF0YS0+c2l6ZSgpOworICAgIGlmIChmbG9vcmYoc2l6ZSkgPT0gc2l6ZSkKKyAgICAgICAg
aGJfZm9udF9zZXRfcHBlbShmb250LCBzaXplLCBzaXplKTsKKyAgICBpbnQgc2NhbGUgPSBmbG9h
dFRvSGFyZkJ1enpQb3NpdGlvbihzaXplKTsKKyAgICBoYl9mb250X3NldF9zY2FsZShmb250LCBz
Y2FsZSwgc2NhbGUpOworICAgIGhiX2ZvbnRfbWFrZV9pbW11dGFibGUoZm9udCk7CisgICAgcmV0
dXJuIGZvbnQ7Cit9CisKK0dseXBoQnVmZmVyQWR2YW5jZSBIYXJmQnV6elNoYXBlcjo6Y3JlYXRl
R2x5cGhCdWZmZXJBZHZhbmNlKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit7CisgICAgcmV0
dXJuIEdseXBoQnVmZmVyQWR2YW5jZSh3aWR0aCwgaGVpZ2h0KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZDI1ZmI4MTI3NTEyOTJkYTRhNjQ0NmQ0
NGY1MjYzOTUxNDg3MDg4MS4uOTJmMmRiMmIwZWU0NTIxNTQ5ODg2YWJmM2EzNzAzZmY5ZThiMDll
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw4IEBAIFNFVChXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3NxbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZj
ZGM5Yjc3NWZkZjU5NWYxNzM3NjIzZjJkMDhjNmUwMTk2NmI3YmYuLjdjNzdkOTZmZTA1MjNlMzdj
MzU0YWNlOTdhYWM4MWYzYzk2MmU3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTYs
NiArNTYsOSBAQCBJRiAoV1RGX1VTRV9GUkVFVFlQRSkKICAgTElTVChBUFBFTkQgV2ViS2l0X0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUiCiAgICkKKyAgTElTVChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAgICAke0hB
UkZCVVpaX0xJQlJBUklFU30KKyAgKQogRU5ESUYgKCkKIAogSUYgKFdURl9VU0VfUEFOR08pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CmluZGV4IDIwYWRmZjg3NjNiMDY3MTVmZjYyZDgyNDA1OGE4OTgzN2Vk
NGU0YzkuLjczYmNiMmJkYTVjMzQ5YjI1YjNjYjAzMzkwZGM3OWUyNTg1MDNlNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CkBAIC02OCw2ICs2OCw4IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enoiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9zcWwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6
LmNtYWtlIGIvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDM1
YjI1YWYzNmVjODA2M2EwNzljYzRhNzViNjc0OWVhM2NjYWM0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK0lOQ0xVREUo
RmluZFBrZ0NvbmZpZykKKworUEtHX0NIRUNLX01PRFVMRVMgKGhhcmZidXp6IFJFUVVJUkVEIGhh
cmZidXp6Pj0wLjkuMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggMWJmNzFmODExYTEwMjg5NzNm
MjdkMDExMjVhMWVjYjlkMTVlMGI2Zi4uMWYyYTY3NDc2ZjU4ZThmYzY3NWRhZTg1NGU0ODBhN2Ji
OGVhNDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTExOSw4ICsxMTksMTEgQEAgRU5ESUYg
KCkKIAogSUYgKEZPTlRfQkFDS0VORCBTVFJFUVVBTCAiZnJlZXR5cGUiKQogICBGSU5EX1BBQ0tB
R0UoRnJlZXR5cGUgUkVRVUlSRUQpCisgIEZJTkRfUEFDS0FHRShIYXJmQnV6eiBSRVFVSVJFRCkK
ICAgU0VUKFdURl9VU0VfRlJFRVRZUEUgMSkKKyAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkK
ICAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQRT0xKQorICBBRERfREVGSU5JVElP
TlMoLURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiBFTFNFICgpCiAgIEZJTkRfUEFDS0FHRShQYW5n
byBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfUEFOR08gMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ZGVkYzhjZTE4NzUxYTAwOGQ4Nzg5NzRm
YTVhNjI0NDE2OGViNmE3Li42MGVkNzdkZTQ2MzczMzYxY2E4ZDZiYTEyMDE4MTkzMDE2MDQ3YWFl
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90
dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJh
d2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJyaW5naW5nIEhhcmZidXp6IHN1cHBvcnQgdG8gRUZMIHdpdGggdGhpcyBw
YXRjaCwgc28gd2UgbmVlZCBIYXJmQnV6eiBpbiB0aGUgcHVsbGVkIGluIGpoYnVpbGQgZGVwZW5k
ZW5jaWVzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDogQWRk
aW5nIGFkZGl0aW9uYWwgaGVhZGVyIGluY2x1ZGUgZGlyZWN0b3JpZXMuCisgICAgICAgICogZWZs
L2poYnVpbGQubW9kdWxlczogQWRkaW5nIHNvdXJjZSBmb3IgSGFyZkJ1enogcmVsZWFzZSB2ZXJz
aW9uIDAuOS4wLgorCiAyMDEyLTA3LTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEZpeCByZWdyZXNzaW9ucyBpbiByZXBsYXkgcGVyZm9ybWFuY2UgdGVzdHMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDRjYzA1MDE1MDM0NzllNWUy
ZTJhY2I5Yzk1ZGUzYjg0NjMyZTcyNWUuLmJhZGMyYzQ3MWZhN2U4NDk1YmY1NTFkZTQ4OWMxZDBh
YjRkYWIwMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50
eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMjYsNiAr
MjYsOCBAQCBTRVQoV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtX
RUJDT1JFX0RJUn0vZWRpdGluZwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MKKyAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6egorICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L25nCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yawogICAgICR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQKICAgICAke1dFQkNPUkVfRElSfS90ZXN0aW5nL2pz
CmRpZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZsL2poYnVp
bGQubW9kdWxlcwppbmRleCBhMjYwZmE0OGZjMDkxN2IzNDE4Yjc1YjU0MmE4Mjc0ZmQ4OGQwN2Zi
Li45YjQwN2Y0ZDg0OTAxOTU4ZmI1ZDMxMjVhYTZhODE5MDUyMWZiODI0IDEwMDY0NAotLS0gYS9U
b29scy9lZmwvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMK
QEAgLTksNiArOSw3IEBACiAgICAgICA8ZGVwIHBhY2thZ2U9ImZvbnRzIi8+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImZvbnRjb25maWciLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZnJlZXR5cGU2Ii8+
CisgICAgICA8ZGVwIHBhY2thZ2U9ImhhcmZidXp6Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9Imds
aWIiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYi1uZXR3b3JraW5nIi8+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImxpYnNvdXAiLz4KQEAgLTE1OSw2ICsxNjAsMTUgQEAKICAgICA8L2JyYW5jaD4K
ICAgPC9hdXRvdG9vbHM+CiAKKyA8YXV0b3Rvb2xzIGlkPSJoYXJmYnV6eiIgYXV0b2dlbi1zaD0i
Y29uZmlndXJlIj4KKyAgIDxicmFuY2ggbW9kdWxlPSJzb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNl
L2hhcmZidXp6LTIwMTIwNjI3LnRhci5iejIiIHZlcnNpb249IjAuOS4wIgorCSAgIGNoZWNrb3V0
ZGlyPSJoYXJmYnV6ei0wLjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJlZWRlc2t0b3Aub3JnIgor
ICAgICAgICAgICBoYXNoPSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4Zjg3ZTg5OGY1ZjE4YWE5
MThhNDFkYjYyYWRiYzE3ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAgICAgbWQ1c3VtPSIxOGU2
YThkODQ3MjU5NDQxNzIzYTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5jaD4KKyA8L2F1dG90b29s
cz4KKwogICA8YXV0b3Rvb2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5jaCBtb2R1bGU9ImVpbmEi
CiAgICAgICAgICAgICByZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMGZjODBlMGJjNDE2YTBiOTgyMTlhM2M1MDE3ZWI5OTEy
NmMyYzdjLi4zNmI4OWY2ODI0NmI5NjA0YjE1NzYwMjAxYWVlNTM5MjBlNmI4ZjE2IDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDct
MjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKwor
ICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5H
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbmZpZ3Vy
aW5nIEZyZWV0eXBlIGJhY2tlbmQgdG8gdXNlIEhhcmZCdXp6IGJ5IGRlZmF1bHQuCisKKyAgICAg
ICAgKiBTb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlOiBBZGRlZCBwa2djb25maWcgYmFz
ZWQgZGlzY292ZXJ5IG9mIEhhcmZCdXp6LgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlOiBBZGRpbmcgSGFyZmJ1enogY29uZmlndXJhdGlvbi4KKwogMjAxMi0wNy0yMyAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0dUS10gUmVtb3Zl
IHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNwYWNlIGluIHRoZSBwcmV2aW91cyBjb21taXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154294</attachid>
            <date>2012-07-25 01:59:17 -0700</date>
            <delta_ts>2012-07-25 06:30:08 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, v4</desc>
            <filename>bug-91864-20120725120125.patch</filename>
            <type>text/plain</type>
            <size>32215</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxZDliMzZmZTc4NjQw
ZmIxOGIyZWI0ZTA3YjM3NjczNDA4YmQxMy4uYjBhNmM3MWFjM2ZiZTkyZjdjMzU2NDZhNmM2ODJm
Mzk0YWFkZmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI0ICBCZW5qYW1p
biBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUXVhbGlmaWVkTmFtZSdzIEhhc2hTZXQgc2hvdWxk
IGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwgdGhlIHN0YXRpYyBuYW1lcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5YTJhZGVhMzdjYTQxZmIzYzA1NWYyZTUzZWY0ZDgwMGM3ODk3ZjlkLi5iYjhiZmY1
MzVkNTU4MTAxMmMyZDRmMDI5ZDgyMjJkNTRlNWRlNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTA3LTI0ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bp
bnRlbC5jb20+CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNp
bmcgSGFyZmJ1enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpbmcgaW5jbHVkZXMgZm9yIGhhcmZidXp6IGZvbGRlcnMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9QUk9H
UkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19FTEVN
RU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM0ZDYyODBkMjY4ODk1YTVkYTU5MjA1MzYy
ODMwZTYyYTIxNjVkNTAuLjdkNDljNTkyY2JjNTVkMGEzODYxM2Q3MGE5ZjFiOGFhMzU4MDgyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNj
aGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10gQWRk
IGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGluY2x1ZGVzIGZvciBoYXJmYnV6
eiBmb2xkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDctMjQgIEph
ZSBIeXVuIFBhcmsgIDxqYWUucGFya0Bjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBXS0NvbnRl
eHRHZXRHbG9iYWxTdGF0aXN0aWNzKCkgYXNzaWducyB3cm9uZyB2YWx1ZSB0byB3a0ZyYW1lQ291
bnQgaW4gV0tDb250ZXh0U3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyOGI2OWUz
YTU0YTVmNTJmMTljNTI5NzE3M2JlMGI3NGViOWYyNWQxLi5jYjQ5ZjY0ODFjMjIxZDIyOTIzNDNm
NjA2OGZhMTVhMjRkMDcyZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDgsNiArNDgsOCBA
QCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoiCisgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBhOWE0
ZjExMjI3NjYyZDM3ODNkMmE5MzI0MjJiZTMwOGMyYzY3MjQ1Li5iM2M0YzhhODFiZDVmYjVkYjNh
ZTE1MDEyYmY0YjYwZTczN2QzOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQ5
LDE1ICsxNDksMjQgQEAgSUYgKFdURl9VU0VfQ0FJUk8pCiAgIElGIChXVEZfVVNFX0ZSRUVUWVBF
KQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlIgorICAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6LyIKKyAgICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICApCiAgICAgTElTVChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKLSAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZsLmNwcAorICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAKICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAogICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAog
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlw
ZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJl
ZVR5cGUuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBl
ckJhc2UuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5H
RmFjZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdG
YWNlQ2Fpcm8uY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6
elNoYXBlci5jcHAKKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAg
ICAgICR7SEFSRkJVWlpfTElCUkFSSUVTfQogICAgICkKICAgRU5ESUYgKCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGRmN2NkMGE5MzVhM2M2ZjQ1ZTZkOGQyZjUyMzI1NDMwOWQ4ZThjMmIuLjI2OWUw
ZTAzOTY4OWFkMWQyZDk2YmU0MzQxOGY3OGE2MGNjYjk4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTM2NjAsNyArMzY2MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVkRNWFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZETVhQYXJzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvRm9udEVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9J
Y29uRWZsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZs
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ludFBvaW50RWZsLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9Db21wbGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZjNlMTliZjlkMWIyZjU5ZDVi
Y2Q2ZjUzNzY0NGMwZWEwZTZlYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9Db21wbGV4LmNwcApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250LmgiCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEu
aCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBG
b250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAoreworICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIEhhcmZCdXp6U2hhcGVyIHNo
YXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoJmdseXBoQnVmZmVyKSkKKyAg
ICAgICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZmZXIsIHBvaW50KTsK
KyAgICBlbHNlCisgICAgICAgIExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIGdseXBo
QnVmZmVyLiIpOworfQorCit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4g
Ki8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyog
cG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9y
Q29tcGxleFRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb250OjpjYW5F
eHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92ZXJmbG93Kikg
Y29uc3QKK3sKKyAgICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBpZiAo
c2hhcGVyLnNoYXBlKCkpCisgICAgICAgIHJldHVybiBzaGFwZXIudG90YWxXaWR0aCgpOworICAg
IExPR19FUlJPUigiU2hhcGVyIGNvdWxkbid0IHNoYXBlIHRleHQgcnVuLiIpOworICAgIHJldHVy
biAwOworfQorCitpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25z
dCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wpIGNvbnN0Cit7CisgICAgSGFyZkJ1enpTaGFw
ZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBlci5zaGFwZSgpKQorICAgICAgICBy
ZXR1cm4gc2hhcGVyLm9mZnNldEZvclBvc2l0aW9uKHgpOworICAgIExPR19FUlJPUigiU2hhcGVy
IGNvdWxkbid0IHNoYXBlIHRleHQgcnVuLiIpOworICAgIHJldHVybiAwOworfQorCitGbG9hdFJl
Y3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAor
eworICAgIEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIu
c2hhcGUoKSkKKyAgICAgICAgcmV0dXJuIHNoYXBlci5zZWxlY3Rpb25SZWN0KHBvaW50LCBoLCBm
cm9tLCB0byk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgdGV4dCBydW4u
Iik7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgzY2M3ZmZlMzM4ZTVkY2E4NTA3OTdmNDM1OTE1ZDNhYWQxYjczZTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRl
Y25vbG9naWEKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udC5oIgotCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJT
aW1wbGVGb250RGF0YS5oIgotCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi12b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGb250OjpkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4
dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZs
b2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25z
dAotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRm9udDo6Y2FuUmV0dXJuRmFs
bGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKQotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qLCBHbHlwaE92
ZXJmbG93KikgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwLjBm
OwotfQotCi1pbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiwgZmxvYXQsIGJvb2wpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4
VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCwgaW50LCBpbnQpIGNv
bnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAyMDY2NTNkZGY3Zjg3Y2RjMGMwZDdh
ZTFlZjk0YmQzOWQ2NzdmMmQ5Li42YTYyYzZjN2NjNDVjODljYmQ1YmUyMWViZTAxZjQ0MTE5OTU1
ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yOSwxMSArMjksMTUgQEAKICNpbmNs
dWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKICNp
bmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2lmIFVTRShIQVJGQlVaWl9ORykKKyNpbmNsdWRlICJI
YXJmQnV6ek5HRmFjZS5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAKIHR5
cGVkZWYgc3RydWN0IF9GY0ZvbnRTZXQgRmNGb250U2V0OworY2xhc3MgSGFyZkJ1enpOR0ZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiArNjcsMTAgQEAgcHVibGljOgogCiAg
ICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAorI2lmIFVTRShIQVJGQlVaWl9ORykKKyAgICBIYXJm
QnV6ek5HRmFjZSogaGFyZmJ1enpGYWNlKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaXNG
aXhlZFBpdGNoKCk7CiAgICAgZmxvYXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQog
ICAgIHZvaWQgc2V0U2l6ZShmbG9hdCBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KQEAgLTk4LDYg
KzEwNiw5IEBAIHB1YmxpYzoKICAgICBib29sIG1fc3ludGhldGljT2JsaXF1ZTsKICAgICBib29s
IG1fZml4ZWRXaWR0aDsKICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Cisj
aWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG11dGFibGUgUmVmUHRyPEhhcmZCdXp6TkdGYWNlPiBt
X2hhcmZidXp6RmFjZTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhGb250RmFjZShjYWlyb19mb250X2ZhY2VfdCosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgPSBG
b250RGVzY3JpcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAppbmRleCA5OGFlNWVkNjY0ZGM0MzU5M2ViM2RlODcxZjhkM2U0NDdjMjgyMDUyLi44MDNl
YzNmZTA5ODNiZGM0MTNhYTk4M2EwYzZkNGEzNWY3MTFjMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTE4NiwxNyArMTg2LDI3IEBAIEZvbnRQbGF0
Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBvdGhlcikKICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZv
bnQpOwogICAgIG1fc2NhbGVkRm9udCA9IGNhaXJvX3NjYWxlZF9mb250X3JlZmVyZW5jZShvdGhl
ci5tX3NjYWxlZEZvbnQpOwogCisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIG1faGFyZmJ1enpG
YWNlID0gb3RoZXIubV9oYXJmYnV6ekZhY2U7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsK
IH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikKICAgICA6IG1fZmFsbGJhY2tzKDApCiAgICAgLCBtX3NjYWxlZEZvbnQo
MCkKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisgICAgLCBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hh
cmZidXp6RmFjZSkKKyNlbmRpZgogewogICAgICp0aGlzID0gb3RoZXI7CiB9CiAKIEZvbnRQbGF0
Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIs
IGZsb2F0IHNpemUpCisjaWYgVVNFKEhBUkZCVVpaX05HKQorICAgIDogbV9oYXJmYnV6ekZhY2Uo
b3RoZXIubV9oYXJmYnV6ekZhY2UpCisjZW5kaWYKIHsKICAgICAqdGhpcyA9IG90aGVyOwogCkBA
IC0yMTcsNiArMjI3LDE2IEBAIEZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkK
ICAgICAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZGVzdHJveShtX3NjYWxlZEZvbnQpOwogfQogCisj
aWYgVVNFKEhBUkZCVVpaX05HKQorSGFyZkJ1enpOR0ZhY2UqIEZvbnRQbGF0Zm9ybURhdGE6Omhh
cmZidXp6RmFjZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhcmZidXp6RmFjZSkKKyAgICAgICAg
bV9oYXJmYnV6ekZhY2UgPSBIYXJmQnV6ek5HRmFjZTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8Rm9udFBs
YXRmb3JtRGF0YSo+KHRoaXMpLCBoYXNoKCkpOworCisgICAgcmV0dXJuIG1faGFyZmJ1enpGYWNl
LmdldCgpOworfQorI2VuZGlmCisKIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNo
KCkKIHsKICAgICByZXR1cm4gbV9maXhlZFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5H
RmFjZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODA0MjM0MGJkZWQwNzI0YzZmZWMyYzBiYmFlOWRl
MGYyZTdiM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKQEAgLTAsMCArMSwyMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJIYXJmQnV6ek5HRmFjZS5oIgorCisjaW5jbHVkZSAiRm9udFBsYXRm
b3JtRGF0YS5oIgorI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiSGFyZkJ1enpT
aGFwZXIuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNs
dWRlIDxmcmVldHlwZS9mcmVldHlwZS5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL3R0dGFibGVzLmg+
CisjaW5jbHVkZSA8aGIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2Fpcm9GdEZhY2VMb2NrZXIgeworcHVibGljOgorICAg
IENhaXJvRnRGYWNlTG9ja2VyKGNhaXJvX3NjYWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkg
OiBtX3NjYWxlZEZvbnQoY2Fpcm9TY2FsZWRGb250KSB7IH07CisgICAgRlRfRmFjZSBsb2NrKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9z
Y2FsZWRGb250KTsKKyAgICB9OworICAgIH5DYWlyb0Z0RmFjZUxvY2tlcigpCisgICAgeworICAg
ICAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91bmxvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAg
IH0KK3ByaXZhdGU6CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogbV9zY2FsZWRGb250OworfTsK
Kworc3RhdGljIGhiX3Bvc2l0aW9uX3QgZmxvYXRUb0hhcmZCdXp6UG9zaXRpb24oZmxvYXQgdmFs
dWUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGhiX3Bvc2l0aW9uX3Q+KHZhbHVlICogKDEg
PDwgMTYpKTsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgZG91YmxlVG9IYXJmQnV6elBvc2l0
aW9uKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aGJfcG9zaXRpb25f
dD4odmFsdWUgKiAoMSA8PCAxNikpOworfQorCitzdGF0aWMgdm9pZCBDYWlyb0dldEdseXBoV2lk
dGhBbmRFeHRlbnRzKGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGhiX2NvZGVwb2lu
dF90IGNvZGVwb2ludCwgaGJfcG9zaXRpb25fdCogYWR2YW5jZSwgaGJfZ2x5cGhfZXh0ZW50c190
KiBleHRlbnRzKQoreworICAgIGNhaXJvX3RleHRfZXh0ZW50c190IGdseXBoRXh0ZW50czsKKyAg
ICBjYWlyb19nbHlwaF90IGdseXBoOworICAgIGdseXBoLmluZGV4ID0gY29kZXBvaW50OworICAg
IGdseXBoLnggPSAwOworICAgIGdseXBoLnkgPSAwOworICAgIGNhaXJvX3NjYWxlZF9mb250X2ds
eXBoX2V4dGVudHMoc2NhbGVkRm9udCwgJmdseXBoLCAxLCAmZ2x5cGhFeHRlbnRzKTsKKworICAg
IGlmIChhZHZhbmNlKQorICAgICAgICAqYWR2YW5jZSA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlv
bihnbHlwaEV4dGVudHMueF9hZHZhbmNlKTsKKyAgICBpZiAoZXh0ZW50cykgeworICAgICAgICBl
eHRlbnRzLT54X2JlYXJpbmcgPSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRz
LnhfYmVhcmluZyk7CisgICAgICAgIGV4dGVudHMtPnlfYmVhcmluZyA9IGRvdWJsZVRvSGFyZkJ1
enpQb3NpdGlvbihnbHlwaEV4dGVudHMueV9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50cy0+d2lk
dGggPSBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLndpZHRoKTsKKyAgICAg
ICAgZXh0ZW50cy0+aGVpZ2h0ID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50
cy5oZWlnaHQpOworICAgIH0KK30KKworc3RhdGljIGhiX2Jvb2xfdCBoYXJmYnV6ekdldEdseXBo
KGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgdW5pY29k
ZSwgaGJfY29kZXBvaW50X3QgdmFyaWF0aW9uU2VsZWN0b3IsIGhiX2NvZGVwb2ludF90KiBnbHlw
aCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOworICAgIGNh
aXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQo
KTsKKyAgICBBU1NFUlQoc2NhbGVkRm9udCk7CisKKyAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXMg
PSBDQUlST19TVEFUVVNfU1VDQ0VTUzsKKyAgICBjYWlyb19nbHlwaF90KiBnbHlwaHMgPSAwOwor
ICAgIGludCBudW1HbHlwaHMgPSAwOworICAgIENTdHJpbmcgdXRmOENvZGVwb2ludCA9IFVURjhF
bmNvZGluZygpLmVuY29kZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oJnVuaWNvZGUpLCAxLCBR
dWVzdGlvbk1hcmtzRm9yVW5lbmNvZGFibGVzKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90ZXh0
X3RvX2dseXBocyhzY2FsZWRGb250LCAwLCAwLCB1dGY4Q29kZXBvaW50LmRhdGEoKSwgdXRmOENv
ZGVwb2ludC5sZW5ndGgoKSwgJmdseXBocywgJm51bUdseXBocywgMCwgMCwgMCk7CisgICAgaWYg
KHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQVNTRVJUKG51bUdseXBocyA+IDApOworICAgICpnbHlwaCA9IGdseXBoc1swXS5pbmRl
eDsKKyAgICBjYWlyb19nbHlwaF9mcmVlKGdseXBocyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBoYl9wb3NpdGlvbl90IGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSho
Yl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCB2
b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEgPSBy
ZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihmb250RGF0YSk7CisgICAgY2Fpcm9f
c2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRmb3JtRGF0YS0+c2NhbGVkRm9udCgpOwor
ICAgIEFTU0VSVChzY2FsZWRGb250KTsKKworICAgIGhiX3Bvc2l0aW9uX3QgYWR2YW5jZSA9IDA7
CisgICAgQ2Fpcm9HZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhzY2FsZWRGb250LCBnbHlwaCwgJmFk
dmFuY2UsIDApOworICAgIHJldHVybiBhZHZhbmNlOworfQorCitzdGF0aWMgaGJfYm9vbF90IGhh
cmZidXp6R2V0R2x5cGhIb3Jpem9udGFsT3JpZ2luKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBm
b250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIGhiX3Bvc2l0aW9uX3QqIHgsIGhiX3Bvc2l0
aW9uX3QqIHksIHZvaWQqIHVzZXJEYXRhKQoreworICAgIC8vIEp1c3QgcmV0dXJuIHRydWUsIGZv
bGxvd2luZyB0aGUgd2F5IHRoYXQgSGFyZmJ1enotRnJlZVR5cGUKKyAgICAvLyBpbXBsZW1lbnRh
dGlvbiBkb2VzLgorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfYm9vbF90IGhhcmZi
dXp6R2V0R2x5cGhFeHRlbnRzKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJf
Y29kZXBvaW50X3QgZ2x5cGgsIGhiX2dseXBoX2V4dGVudHNfdCogZXh0ZW50cywgdm9pZCogdXNl
ckRhdGEpCit7CisgICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9m
b250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBBU1NF
UlQoc2NhbGVkRm9udCk7CisKKyAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKHNjYWxl
ZEZvbnQsIGdseXBoLCAwLCBleHRlbnRzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGhiX2ZvbnRfZnVuY3NfdCogaGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVuY3MoKQoreworICAg
IHN0YXRpYyBoYl9mb250X2Z1bmNzX3QqIGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MgPSAwOworCisg
ICAgLy8gV2UgZG9uJ3Qgc2V0IGNhbGxiYWNrIGZ1bmN0aW9ucyB3aGljaCB3ZSBjYW4ndCBzdXBw
b3J0LgorICAgIC8vIEhhcmZidXp6IHdpbGwgdXNlIHRoZSBmYWxsYmFjayBpbXBsZW1lbnRhdGlv
biBpZiB0aGV5IGFyZW4ndCBzZXQuCisgICAgaWYgKCFoYXJmYnV6ekNhaXJvRm9udEZ1bmNzKSB7
CisgICAgICAgIGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MgPSBoYl9mb250X2Z1bmNzX2NyZWF0ZSgp
OworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9mdW5jKGhhcmZidXp6Q2Fpcm9Gb250
RnVuY3MsIGhhcmZidXp6R2V0R2x5cGgsIDAsIDApOworICAgICAgICBoYl9mb250X2Z1bmNzX3Nl
dF9nbHlwaF9oX2FkdmFuY2VfZnVuYyhoYXJmYnV6ekNhaXJvRm9udEZ1bmNzLCBoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UsIDAsIDApOworICAgICAgICBoYl9mb250X2Z1bmNzX3Nl
dF9nbHlwaF9oX29yaWdpbl9mdW5jKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0
R2x5cGhIb3Jpem9udGFsT3JpZ2luLCAwLCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19zZXRf
Z2x5cGhfZXh0ZW50c19mdW5jKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5
cGhFeHRlbnRzLCAwLCAwKTsKKyAgICAgICAgaGJfZm9udF9mdW5jc19tYWtlX2ltbXV0YWJsZSho
YXJmYnV6ekNhaXJvRm9udEZ1bmNzKTsKKyAgICB9CisgICAgcmV0dXJuIGhhcmZidXp6Q2Fpcm9G
b250RnVuY3M7Cit9CisKK3N0YXRpYyBoYl9ibG9iX3QqIGhhcmZidXp6Q2Fpcm9HZXRUYWJsZSho
Yl9mYWNlX3QqIGZhY2UsIGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEpCit7CisgICAgRm9u
dFBsYXRmb3JtRGF0YSogZm9udCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+
KHVzZXJEYXRhKTsKKworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQgPSBmb250
LT5zY2FsZWRGb250KCk7CisgICAgaWYgKCFzY2FsZWRGb250KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKHNjYWxlZEZvbnQpOwor
ICAgIEZUX0ZhY2UgZnRGb250ID0gY2Fpcm9GdEZhY2VMb2NrZXIubG9jaygpOworICAgIGlmICgh
ZnRGb250KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZUX1VMb25nIHRhYmxlU2l6ZSA9IDA7
CisgICAgRlRfRXJyb3IgZXJyb3IgPSBGVF9Mb2FkX1NmbnRfVGFibGUoZnRGb250LCB0YWcsIDAs
IDAsICZ0YWJsZVNpemUpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBGVF9CeXRlKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PEZUX0J5dGUqPihmYXN0TWFsbG9j
KHRhYmxlU2l6ZSkpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBG
VF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKKyAgICBlcnJvciA9IEZUX0xv
YWRfU2ZudF9UYWJsZShmdEZvbnQsIHRhZywgMCwgYnVmZmVyLCAmdGFibGVTaXplKTsKKyAgICBp
ZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKSB7CisgICAgICAgIGZh
c3RGcmVlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBo
Yl9ibG9iX2NyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCB0YWJs
ZVNpemUsIEhCX01FTU9SWV9NT0RFX1dSSVRBQkxFLCBidWZmZXIsIGZhc3RGcmVlKTsKK30KKwor
aGJfZmFjZV90KiBIYXJmQnV6ek5HRmFjZTo6Y3JlYXRlRmFjZSgpCit7CisgICAgaGJfZmFjZV90
KiBmYWNlID0gaGJfZmFjZV9jcmVhdGVfZm9yX3RhYmxlcyhoYXJmYnV6ekNhaXJvR2V0VGFibGUs
IG1fcGxhdGZvcm1EYXRhLCAwKTsKKyAgICBBU1NFUlQoZmFjZSk7CisgICAgcmV0dXJuIGZhY2U7
Cit9CisKK2hiX2ZvbnRfdCogSGFyZkJ1enpOR0ZhY2U6OmNyZWF0ZUZvbnQoKQoreworICAgIGhi
X2ZvbnRfdCogZm9udCA9IGhiX2ZvbnRfY3JlYXRlKG1fZmFjZSk7CisgICAgaGJfZm9udF9zZXRf
ZnVuY3MoZm9udCwgaGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVuY3MoKSwgbV9wbGF0Zm9ybURh
dGEsIDApOworICAgIGNvbnN0IGZsb2F0IHNpemUgPSBtX3BsYXRmb3JtRGF0YS0+c2l6ZSgpOwor
ICAgIGlmIChmbG9vcmYoc2l6ZSkgPT0gc2l6ZSkKKyAgICAgICAgaGJfZm9udF9zZXRfcHBlbShm
b250LCBzaXplLCBzaXplKTsKKyAgICBpbnQgc2NhbGUgPSBmbG9hdFRvSGFyZkJ1enpQb3NpdGlv
bihzaXplKTsKKyAgICBoYl9mb250X3NldF9zY2FsZShmb250LCBzY2FsZSwgc2NhbGUpOworICAg
IGhiX2ZvbnRfbWFrZV9pbW11dGFibGUoZm9udCk7CisgICAgcmV0dXJuIGZvbnQ7Cit9CisKK0ds
eXBoQnVmZmVyQWR2YW5jZSBIYXJmQnV6elNoYXBlcjo6Y3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNl
KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit7CisgICAgcmV0dXJuIEdseXBoQnVmZmVyQWR2
YW5jZSh3aWR0aCwgaGVpZ2h0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKaW5kZXggZDI1ZmI4MTI3NTEyOTJkYTRhNjQ0NmQ0NGY1MjYzOTUxNDg3MDg4MS4u
OTJmMmRiMmIwZWU0NTIxNTQ5ODg2YWJmM2EzNzAzZmY5ZThiMDllNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0CkBAIC0yOCw2ICsyOCw4IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL3NxbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBhZGZmODc2M2IwNjcxNWZmNjJkODI0
MDU4YTg5ODM3ZWQ0ZTRjOS4uNzNiY2IyYmRhNWMzNDliMjViM2NiMDMzOTBkYzc5ZTI1ODUwM2U2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTY4LDYgKzY4LDggQEAgU0VUKFdlYktpdDJfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3NxbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9G
aW5kSGFyZkJ1enouY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhhOTkwMTliNWNjNDY4ZjY5N2Y4M2YwZTQ1ODI1OWZhNTAxMjBlM2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlCkBAIC0wLDAgKzEsNDQg
QEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisjCisjICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisjICAg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlLAorIyAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyMgICBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkKKyMgICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisjICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
IyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyMgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyMgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisjCisjCisKK0lOQ0xVREUoRmluZFBrZ0NvbmZpZykKKworUEtHX0NIRUNLX01PRFVMRVMg
KGhhcmZidXp6IFJFUVVJUkVEIGhhcmZidXp6Pj0wLjkuMCkKKworUEtHX0NIRUNLX01PRFVMRVMo
UENfSEFSRkJVWlogaGFyZmJ1eno+PTAuOS4wKQorCitGSU5EX1BBVEgoSEFSRkJVWlpfSU5DTFVE
RV9ESVJTIE5BTUVTIGhiLmgKKyAgSElOVFMgJHtQQ19IQVJGQlVaWl9JTkNMVURFX0RJUlN9ICR7
UENfSEFSRkJVWlpfSU5DTFVERURJUn0KKykKKworRklORF9MSUJSQVJZKEhBUkZCVVpaX0xJQlJB
UklFUyBOQU1FUyBoYXJmYnV6egorICBISU5UUyAke1BDX0hBUkZCVVpaX0xJQlJBUllfRElSU30g
JHtQQ19IQVJGQlVaWl9MSUJESVJ9CispCisKK0lOQ0xVREUoRmluZFBhY2thZ2VIYW5kbGVTdGFu
ZGFyZEFyZ3MpCitGSU5EX1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoSGFyZkJ1enogREVG
QVVMVF9NU0cgSEFSRkJVWlpfSU5DTFVERV9ESVJTIEhBUkZCVVpaX0xJQlJBUklFUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKaW5kZXggMWJmNzFmODExYTEwMjg5NzNmMjdkMDExMjVhMWVjYjlkMTVlMGI2
Zi4uMWYyYTY3NDc2ZjU4ZThmYzY3NWRhZTg1NGU0ODBhN2JiOGVhNDI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UKQEAgLTExOSw4ICsxMTksMTEgQEAgRU5ESUYgKCkKIAogSUYgKEZPTlRfQkFDS0VO
RCBTVFJFUVVBTCAiZnJlZXR5cGUiKQogICBGSU5EX1BBQ0tBR0UoRnJlZXR5cGUgUkVRVUlSRUQp
CisgIEZJTkRfUEFDS0FHRShIYXJmQnV6eiBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfRlJFRVRZ
UEUgMSkKKyAgU0VUKFdURl9VU0VfSEFSRkJVWlpfTkcgMSkKICAgQUREX0RFRklOSVRJT05TKC1E
V1RGX1VTRV9GUkVFVFlQRT0xKQorICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0hBUkZCVVpa
X05HPTEpCiBFTFNFICgpCiAgIEZJTkRfUEFDS0FHRShQYW5nbyBSRVFVSVJFRCkKICAgU0VUKFdU
Rl9VU0VfUEFOR08gMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxYzAwZTMzNzBjZDE2NmM1M2JmZDljMjU0MjgxYTY2NGExODZmZjFmLi4yNzYw
ODVkMzdhYTYxYTcxYjg5MmY2YjU1ODU2NTU0ODRhY2I4MjJhIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDct
MjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKwor
ICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5H
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyaW5naW5n
IEhhcmZidXp6IHN1cHBvcnQgdG8gRUZMIHdpdGggdGhpcyBwYXRjaCwgc28gd2UgbmVlZCBIYXJm
QnV6eiBpbiB0aGUgcHVsbGVkIGluIGpoYnVpbGQgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDogQWRkaW5nIGFkZGl0aW9uYWwgaGVhZGVy
IGluY2x1ZGUgZGlyZWN0b3JpZXMuCisgICAgICAgICogZWZsL2poYnVpbGQubW9kdWxlczogQWRk
aW5nIHNvdXJjZSBmb3IgSGFyZkJ1enogcmVsZWFzZSB2ZXJzaW9uIDAuOS4wLgorCiAyMDEyLTA3
LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUXVhbGlmaWVkTmFtZSdzIEhh
c2hTZXQgc2hvdWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwgdGhlIHN0YXRp
YyBuYW1lcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggNGNjMDUwMTUw
MzQ3OWU1ZTJlMmFjYjljOTVkZTNiODQ2MzJlNzI1ZS4uYmFkYzJjNDcxZmE3ZTg0OTViZjU1MWRl
NDg5YzFkMGFiNGRhYjAxOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBA
IC0yNiw2ICsyNiw4IEBAIFNFVChXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0K
ICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcworICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6CisgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovbmcKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3Jr
CiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dAogICAgICR7V0VCQ09SRV9ESVJ9L3Rl
c3RpbmcvanMKZGlmZiAtLWdpdCBhL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9l
ZmwvamhidWlsZC5tb2R1bGVzCmluZGV4IGEyNjBmYTQ4ZmMwOTE3YjM0MThiNzViNTQyYTgyNzRm
ZDg4ZDA3ZmIuLjk0MjY0OGM1ZDFiYzBmN2YwMTI0YzI5MTdmYzYyNWIwYTNiYTNjNTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZWZsL2poYnVpbGQu
bW9kdWxlcwpAQCAtOSw2ICs5LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iZm9udHMiLz4KICAg
ICAgIDxkZXAgcGFja2FnZT0iZm9udGNvbmZpZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJmcmVl
dHlwZTYiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0iaGFyZmJ1enoiLz4KICAgICAgIDxkZXAgcGFj
a2FnZT0iZ2xpYiIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAg
ICAgIDxkZXAgcGFja2FnZT0ibGlic291cCIvPgpAQCAtMTU5LDYgKzE2MCwxNSBAQAogICAgIDwv
YnJhbmNoPgogICA8L2F1dG90b29scz4KIAorIDxhdXRvdG9vbHMgaWQ9ImhhcmZidXp6IiBhdXRv
Z2VuLXNoPSJjb25maWd1cmUiPgorICAgPGJyYW5jaCBtb2R1bGU9InNvZnR3YXJlL2hhcmZidXp6
L3JlbGVhc2UvaGFyZmJ1enotMjAxMjA2MjcudGFyLmJ6MiIgdmVyc2lvbj0iMC45LjAiCisgICAg
ICAgICAgIGNoZWNrb3V0ZGlyPSJoYXJmYnV6ei0wLjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJl
ZWRlc2t0b3Aub3JnIgorICAgICAgICAgICBoYXNoPSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4
Zjg3ZTg5OGY1ZjE4YWE5MThhNDFkYjYyYWRiYzE3ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAg
ICAgbWQ1c3VtPSIxOGU2YThkODQ3MjU5NDQxNzIzYTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5j
aD4KKyA8L2F1dG90b29scz4KKwogICA8YXV0b3Rvb2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5j
aCBtb2R1bGU9ImVpbmEiCiAgICAgICAgICAgICByZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMGZjODBlMGJjNDE2YTBiOTgy
MTlhM2M1MDE3ZWI5OTEyNmMyYzdjLi4zNmI4OWY2ODI0NmI5NjA0YjE1NzYwMjAxYWVlNTM5MjBl
NmI4ZjE2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVz
QGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1
c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvbmZpZ3VyaW5nIEZyZWV0eXBlIGJhY2tlbmQgdG8gdXNlIEhhcmZCdXp6IGJ5IGRl
ZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlOiBBZGRl
ZCBwa2djb25maWcgYmFzZWQgZGlzY292ZXJ5IG9mIEhhcmZCdXp6LgorICAgICAgICAqIFNvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBBZGRpbmcgSGFyZmJ1enogY29uZmlndXJhdGlvbi4K
KwogMjAxMi0wNy0yMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0dUS10gUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNwYWNlIGluIHRoZSBwcmV2aW91
cyBjb21taXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154338</attachid>
            <date>2012-07-25 06:30:20 -0700</date>
            <delta_ts>2012-07-25 13:45:31 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, v5</desc>
            <filename>bug-91864-20120725163228.patch</filename>
            <type>text/plain</type>
            <size>31602</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwY2ZmMDE0Njg2ZjQ0
ODA4ZDhjZDljMGM0MmYxYjE1NTViYTdjYy4uYzFmNTNiOWMxNzFmYjk5ZmIzZTIzNjAxZWRlZTUy
MmJlMjBhZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI1ICBTaGlueWEg
S2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBIHZhbGlkYXRpb24g
YnViYmxlIHNob3VsZCBub3QgYmUgbW9kaWZpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWVmZDc2YTI4MmRi
N2ZlNmNmYThlZjE5NTdiYjA4ZmFiNjBlMGQ4MS4uYmFlNDJmMzljZmFlYjYzNjYwYWYzMjgxYjkz
NDQyODVhMTViZmE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0yNCAgRG9t
aW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAg
IFtDYWlyb10gQWRkIGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGluY2x1ZGVz
IGZvciBoYXJmYnV6eiBmb2xkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIw
MTItMDctMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gQWRkIEZpbGUgQ2hvb3NlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkY2Q4N2Y1MzNlMzFj
ODYxOTE3MDU4Nzc2MWQ2MTYzY2UzYTliMGU5Li5jNWM3ZTUxOTJlNjUyZmMyYTFkNjBjMWFhZmE0
YTVjNjQ4MTY4MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIERv
bWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAg
ICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBpbmNsdWRl
cyBmb3IgaGFyZmJ1enogZm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAy
MDEyLTA3LTI1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXVtXSzJdIEFkZCBld2tfdmlld19jdXJzb3Jfc2V0IHRvIGNoYW5nZSBjdXJzb3IuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDI4YjY5ZTNhNTRhNWY1MmYxOWM1Mjk3MTczYmUwYjc0ZWI5
ZjI1ZDEuLmNiNDlmNjQ4MWMyMjFkMjI5MjM0M2Y2MDY4ZmExNWEyNGQwNzJmMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00OCw2ICs0OCw4IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGE5YTRmMTEyMjc2NjJkMzc4M2QyYTkzMjQyMmJlMzA4
YzJjNjcyNDUuLmIzYzRjOGE4MWJkNWZiNWRiM2FlMTUwMTJiZjRiNjBlNzM3ZDM5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNDksMTUgKzE0OSwyNCBAQCBJRiAoV1RGX1VTRV9D
QUlSTykKICAgSUYgKFdURl9VU0VfRlJFRVRZUEUpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUiCisgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovIgorICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L25nIgogICAgICkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAotICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ZvbnRFZmwuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9D
b21wbGV4LmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlLmNwcAorICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKKyAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmNwcAorICAgICkKKyAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgJHtIQVJGQlVaWl9MSUJSQVJJRVN9CiAg
ICAgKQogICBFTkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGY3Y2QwYTkzNWEzYzZmNDVl
NmQ4ZDJmNTIzMjU0MzA5ZDhlOGMyYi4uMjY5ZTBlMDM5Njg5YWQxZDJkOTZiZTQzNDE4Zjc4YTYw
Y2NiOTg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2MCw3ICszNjYwLDYgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVkRNWFBhcnNlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0nLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZsLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODZmM2UxOWJmOWQxYjJmNTlkNWJjZDZmNTM3NjQ0YzBlYTBlNmVhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyb0NvbXBsZXguY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkhhcmZCdXp6U2hhcGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgR2x5cGhCdWZmZXIgZ2x5cGhC
dWZmZXI7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNo
YXBlci5zaGFwZSgmZ2x5cGhCdWZmZXIpKQorICAgICAgICBkcmF3R2x5cGhCdWZmZXIoY29udGV4
dCwgcnVuLCBnbHlwaEJ1ZmZlciwgcG9pbnQpOworICAgIGVsc2UKKyAgICAgICAgTE9HX0VSUk9S
KCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgZ2x5cGhCdWZmZXIuIik7Cit9CisKK3ZvaWQgRm9udDo6
ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNvbnRl
eHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBt
YXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGlu
dCAvKiB0byAqLykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEZv
bnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBs
ZXhUZXh0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IEZvbnQ6OmZsb2F0V2lk
dGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxl
Rm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAoreworICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoKSkKKyAgICAgICAgcmV0
dXJuIHNoYXBlci50b3RhbFdpZHRoKCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qg
c2hhcGUgdGV4dCBydW4uIik7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBGb250OjpvZmZzZXRG
b3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9v
bCkgY29uc3QKK3sKKyAgICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBp
ZiAoc2hhcGVyLnNoYXBlKCkpCisgICAgICAgIHJldHVybiBzaGFwZXIub2Zmc2V0Rm9yUG9zaXRp
b24oeCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgdGV4dCBydW4uIik7
CisgICAgcmV0dXJuIDA7Cit9CisKK0Zsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50
IGgsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVy
KHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBlci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hh
cGVyLnNlbGVjdGlvblJlY3QocG9pbnQsIGgsIGZyb20sIHRvKTsKKyAgICBMT0dfRVJST1IoIlNo
YXBlciBjb3VsZG4ndCBzaGFwZSB0ZXh0IHJ1bi4iKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9Gb250RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNjYzdmZmUzMzhlNWRjYTg1
MDc5N2Y0MzU5MTVkM2FhZDFiNzNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGb250LmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgaW50IGZyb20sIGludCB0bykgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21p
Y1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAv
KiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVv
Z3JhcGhzSW5Db21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mbG9hdCBG
b250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgU2ltcGxlRm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDAuMGY7Ci19Ci0KLWludCBGb250OjpvZmZzZXRGb3JQ
b3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCwgYm9vbCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1GbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50LCBpbnQsIGludCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDIwNjY1M2RkZjdmODdjZGMwYzBkN2FlMWVmOTRiZDM5ZDY3N2YyZDkuLjZhNjJjNmM3
Y2M0NWM4OWNiZDViZTIxZWJlMDFmNDQxMTk5NTU4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
LmgKQEAgLTI5LDExICsyOSwxNSBAQAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaWYg
VVNFKEhBUkZCVVpaX05HKQorI2luY2x1ZGUgIkhhcmZCdXp6TkdGYWNlLmgiCisjZW5kaWYKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBGY0Zv
bnRTZXQ7CitjbGFzcyBIYXJmQnV6ek5HRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogCisj
aWYgVVNFKEhBUkZCVVpaX05HKQorICAgIEhhcmZCdXp6TkdGYWNlKiBoYXJmYnV6ekZhY2UoKSBj
b25zdDsKKyNlbmRpZgorCiAgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKICAgICBmbG9hdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUp
IHsgbV9zaXplID0gc2l6ZTsgfQpAQCAtOTgsNiArMTA2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
bV9zeW50aGV0aWNPYmxpcXVlOwogICAgIGJvb2wgbV9maXhlZFdpZHRoOwogICAgIGNhaXJvX3Nj
YWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisgICAgbXV0
YWJsZSBSZWZQdHI8SGFyZkJ1enpOR0ZhY2U+IG1faGFyZmJ1enpGYWNlOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aEZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFjZV90
KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiA9IEZvbnREZXNjcmlwdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDk4YWU1ZWQ2NjRkYzQzNTkz
ZWIzZGU4NzFmOGQzZTQ0N2MyODIwNTIuLjgwM2VjM2ZlMDk4M2JkYzQxM2FhOTgzYTBjNmQ0YTM1
ZjcxMWMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMTg2LDE3ICsxODYsMjcgQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgICAgICBjYWlyb19z
Y2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7CiAgICAgbV9zY2FsZWRGb250ID0gY2Fp
cm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKG90aGVyLm1fc2NhbGVkRm9udCk7CiAKKyNpZiBVU0Uo
SEFSRkJVWlpfTkcpCisgICAgbV9oYXJmYnV6ekZhY2UgPSBvdGhlci5tX2hhcmZidXp6RmFjZTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgIDogbV9mYWxs
YmFja3MoMCkKICAgICAsIG1fc2NhbGVkRm9udCgwKQorI2lmIFVTRShIQVJGQlVaWl9ORykKKyAg
ICAsIG1faGFyZmJ1enpGYWNlKG90aGVyLm1faGFyZmJ1enpGYWNlKQorI2VuZGlmCiB7CiAgICAg
KnRoaXMgPSBvdGhlcjsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6ZSkKKyNpZiBVU0UoSEFSRkJV
WlpfTkcpCisgICAgOiBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRp
ZgogewogICAgICp0aGlzID0gb3RoZXI7CiAKQEAgLTIxNyw2ICsyMjcsMTYgQEAgRm9udFBsYXRm
b3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9k
ZXN0cm95KG1fc2NhbGVkRm9udCk7CiB9CiAKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCitIYXJmQnV6
ek5HRmFjZSogRm9udFBsYXRmb3JtRGF0YTo6aGFyZmJ1enpGYWNlKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1faGFyZmJ1enpGYWNlKQorICAgICAgICBtX2hhcmZidXp6RmFjZSA9IEhhcmZCdXp6TkdG
YWNlOjpjcmVhdGUoY29uc3RfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odGhpcyksIGhhc2goKSk7
CisKKyAgICByZXR1cm4gbV9oYXJmYnV6ekZhY2UuZ2V0KCk7Cit9CisjZW5kaWYKKwogYm9vbCBG
b250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2goKQogewogICAgIHJldHVybiBtX2ZpeGVkV2lk
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
NTZmMmE3OTE2N2U0Y2I1OWYxOTEyZGE4MWViYmVjYzE5YjZlZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5H
RmFjZUNhaXJvLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhhcmZCdXp6TkdG
YWNlLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKKyNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgorI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8Y2Fpcm8tZnQu
aD4KKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ZyZWV0eXBlLmg+Cisj
aW5jbHVkZSA8ZnJlZXR5cGUvdHR0YWJsZXMuaD4KKyNpbmNsdWRlIDxoYi5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWly
b0Z0RmFjZUxvY2tlciB7CitwdWJsaWM6CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogY2Fpcm9TY2FsZWRGb250KSA6IG1fc2NhbGVkRm9udChjYWlyb1NjYWxlZEZv
bnQpIHsgfTsKKyAgICBGVF9GYWNlIGxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhaXJv
X2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIH07CisgICAgfkNh
aXJvRnRGYWNlTG9ja2VyKCkKKyAgICB7CisgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3Vu
bG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBjYWlyb19zY2Fs
ZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Cit9OworCitzdGF0aWMgaGJfcG9zaXRpb25fdCBmbG9h
dFRvSGFyZkJ1enpQb3NpdGlvbihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOworfQorCitzdGF0aWMgaGJfcG9z
aXRpb25fdCBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZG91YmxlIHZhbHVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7Cit9CisK
K3N0YXRpYyB2b2lkIENhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogc2NhbGVkRm9udCwgaGJfY29kZXBvaW50X3QgY29kZXBvaW50LCBoYl9wb3NpdGlvbl90
KiBhZHZhbmNlLCBoYl9nbHlwaF9leHRlbnRzX3QqIGV4dGVudHMpCit7CisgICAgY2Fpcm9fdGV4
dF9leHRlbnRzX3QgZ2x5cGhFeHRlbnRzOworICAgIGNhaXJvX2dseXBoX3QgZ2x5cGg7CisgICAg
Z2x5cGguaW5kZXggPSBjb2RlcG9pbnQ7CisgICAgZ2x5cGgueCA9IDA7CisgICAgZ2x5cGgueSA9
IDA7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyhzY2FsZWRGb250LCAmZ2x5
cGgsIDEsICZnbHlwaEV4dGVudHMpOworCisgICAgaWYgKGFkdmFuY2UpCisgICAgICAgICphZHZh
bmNlID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy54X2FkdmFuY2UpOwor
ICAgIGlmIChleHRlbnRzKSB7CisgICAgICAgIGV4dGVudHMtPnhfYmVhcmluZyA9IGRvdWJsZVRv
SGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50
cy0+eV9iZWFyaW5nID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy55X2Jl
YXJpbmcpOworICAgICAgICBleHRlbnRzLT53aWR0aCA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlv
bihnbHlwaEV4dGVudHMud2lkdGgpOworICAgICAgICBleHRlbnRzLT5oZWlnaHQgPSBkb3VibGVU
b0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLmhlaWdodCk7CisgICAgfQorfQorCitzdGF0
aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGgoaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZv
bnREYXRhLCBoYl9jb2RlcG9pbnRfdCB1bmljb2RlLCBoYl9jb2RlcG9pbnRfdCB2YXJpYXRpb25T
ZWxlY3RvciwgaGJfY29kZXBvaW50X3QqIGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBG
b250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0
Zm9ybURhdGEqPihmb250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9u
dCA9IHBsYXRmb3JtRGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsK
KyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKKyAg
ICBGVF9GYWNlIGZ0RmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKyAgICBBU1NFUlQo
ZnRGYWNlKTsKKyAgICAqZ2x5cGggPSBGVF9HZXRfQ2hhcl9JbmRleChmdEZhY2UsIHVuaWNvZGUp
OworICAgIHJldHVybiAhISpnbHlwaDsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgaGFyZmJ1
enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250
RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQ
bGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3Jt
RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0g
cGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOworCisg
ICAgaGJfcG9zaXRpb25fdCBhZHZhbmNlID0gMDsKKyAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRF
eHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAmYWR2YW5jZSwgMCk7CisgICAgcmV0dXJuIGFkdmFu
Y2U7Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmln
aW4oaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlw
aCwgaGJfcG9zaXRpb25fdCogeCwgaGJfcG9zaXRpb25fdCogeSwgdm9pZCogdXNlckRhdGEpCit7
CisgICAgLy8gSnVzdCByZXR1cm4gdHJ1ZSwgZm9sbG93aW5nIHRoZSB3YXkgdGhhdCBIYXJmYnV6
ei1GcmVlVHlwZQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRvZXMuCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMoaGJfZm9udF90
KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgaGJfZ2x5cGhf
ZXh0ZW50c190KiBleHRlbnRzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1E
YXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihm
b250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRmb3Jt
RGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsKKworICAgIENhaXJv
R2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoc2NhbGVkRm9udCwgZ2x5cGgsIDAsIGV4dGVudHMpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfZm9udF9mdW5jc190KiBoYXJmYnV6ekNh
aXJvVGV4dEdldEZvbnRGdW5jcygpCit7CisgICAgc3RhdGljIGhiX2ZvbnRfZnVuY3NfdCogaGFy
ZmJ1enpDYWlyb0ZvbnRGdW5jcyA9IDA7CisKKyAgICAvLyBXZSBkb24ndCBzZXQgY2FsbGJhY2sg
ZnVuY3Rpb25zIHdoaWNoIHdlIGNhbid0IHN1cHBvcnQuCisgICAgLy8gSGFyZmJ1enogd2lsbCB1
c2UgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgYXJlbid0IHNldC4KKyAgICBp
ZiAoIWhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpIHsKKyAgICAgICAgaGFyZmJ1enpDYWlyb0ZvbnRG
dW5jcyA9IGhiX2ZvbnRfZnVuY3NfY3JlYXRlKCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0
X2dseXBoX2Z1bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaCwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfYWR2YW5jZV9mdW5jKGhhcmZi
dXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfb3JpZ2luX2Z1bmMoaGFyZmJ1
enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmlnaW4sIDAsIDAp
OworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9leHRlbnRzX2Z1bmMoaGFyZmJ1enpD
YWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMsIDAsIDApOworICAgICAgICBo
Yl9mb250X2Z1bmNzX21ha2VfaW1tdXRhYmxlKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpOworICAg
IH0KKyAgICByZXR1cm4gaGFyZmJ1enpDYWlyb0ZvbnRGdW5jczsKK30KKworc3RhdGljIGhiX2Js
b2JfdCogaGFyZmJ1enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCogZmFjZSwgaGJfdGFnX3QgdGFn
LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhKiBmb250ID0gcmVpbnRl
cnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odXNlckRhdGEpOworCisgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IGZvbnQtPnNjYWxlZEZvbnQoKTsKKyAgICBpZiAoIXNj
YWxlZEZvbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fp
cm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7CisgICAgRlRfRmFjZSBmdEZvbnQgPSBjYWlyb0Z0
RmFjZUxvY2tlci5sb2NrKCk7CisgICAgaWYgKCFmdEZvbnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKKyAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xv
YWRfU2ZudF9UYWJsZShmdEZvbnQsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSk7CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZUX0J5dGUqIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RlRfQnl0ZSo+KGZhc3RNYWxsb2ModGFibGVTaXplKSk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0g
dGFibGVTaXplOworICAgIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZ0Rm9udCwgdGFnLCAw
LCBidWZmZXIsICZ0YWJsZVNpemUpOworICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhw
ZWN0ZWRUYWJsZVNpemUpIHsKKyAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGhiX2Jsb2JfY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIHRhYmxlU2l6ZSwgSEJfTUVNT1JZX01PREVfV1JJVEFC
TEUsIGJ1ZmZlciwgZmFzdEZyZWUpOworfQorCitoYl9mYWNlX3QqIEhhcmZCdXp6TkdGYWNlOjpj
cmVhdGVGYWNlKCkKK3sKKyAgICBoYl9mYWNlX3QqIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZV9mb3Jf
dGFibGVzKGhhcmZidXp6Q2Fpcm9HZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIEFT
U0VSVChmYWNlKTsKKyAgICByZXR1cm4gZmFjZTsKK30KKworaGJfZm9udF90KiBIYXJmQnV6ek5H
RmFjZTo6Y3JlYXRlRm9udCgpCit7CisgICAgaGJfZm9udF90KiBmb250ID0gaGJfZm9udF9jcmVh
dGUobV9mYWNlKTsKKyAgICBoYl9mb250X3NldF9mdW5jcyhmb250LCBoYXJmYnV6ekNhaXJvVGV4
dEdldEZvbnRGdW5jcygpLCBtX3BsYXRmb3JtRGF0YSwgMCk7CisgICAgY29uc3QgZmxvYXQgc2l6
ZSA9IG1fcGxhdGZvcm1EYXRhLT5zaXplKCk7CisgICAgaWYgKGZsb29yZihzaXplKSA9PSBzaXpl
KQorICAgICAgICBoYl9mb250X3NldF9wcGVtKGZvbnQsIHNpemUsIHNpemUpOworICAgIGludCBz
Y2FsZSA9IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKHNpemUpOworICAgIGhiX2ZvbnRfc2V0X3Nj
YWxlKGZvbnQsIHNjYWxlLCBzY2FsZSk7CisgICAgaGJfZm9udF9tYWtlX2ltbXV0YWJsZShmb250
KTsKKyAgICByZXR1cm4gZm9udDsKK30KKworR2x5cGhCdWZmZXJBZHZhbmNlIEhhcmZCdXp6U2hh
cGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICByZXR1cm4gR2x5cGhCdWZmZXJBZHZhbmNlKHdpZHRoLCBoZWlnaHQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkMjVmYjgxMjc1MTI5
MmRhNGE2NDQ2ZDQ0ZjUyNjM5NTE0ODcwODgxLi45MmYyZGIyYjBlZTQ1MjE1NDk4ODZhYmYzYTM3
MDNmZjllOGIwOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDggQEAgU0VUKFdl
YktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2Fu
aW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29y
ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3FsIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApp
bmRleCAyMGFkZmY4NzYzYjA2NzE1ZmY2MmQ4MjQwNThhODk4MzdlZDRlNGM5Li43M2JjYjJiZGE1
YzM0OWIyNWIzY2IwMzM5MGRjNzllMjU4NTAzZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
NjgsNiArNjgsOCBAQCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3Fs
IgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9GaW5kSGFyZkJ1enouY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE5OTAxOWI1Y2M0NjhmNjk3Zjgz
ZjBlNDU4MjU5ZmE1MDEyMGUzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5k
SGFyZkJ1enouY21ha2UKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIsIElu
dGVsIENvcnBvcmF0aW9uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyMK
KyMgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisjICAgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbgorIyAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorIyAgIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK
KyMgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQorIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMKKworSU5DTFVERShGaW5kUGtn
Q29uZmlnKQorCitQS0dfQ0hFQ0tfTU9EVUxFUyAoaGFyZmJ1enogUkVRVUlSRUQgaGFyZmJ1eno+
PTAuOS4wKQorCitQS0dfQ0hFQ0tfTU9EVUxFUyhQQ19IQVJGQlVaWiBoYXJmYnV6ej49MC45LjAp
CisKK0ZJTkRfUEFUSChIQVJGQlVaWl9JTkNMVURFX0RJUlMgTkFNRVMgaGIuaAorICBISU5UUyAk
e1BDX0hBUkZCVVpaX0lOQ0xVREVfRElSU30gJHtQQ19IQVJGQlVaWl9JTkNMVURFRElSfQorKQor
CitGSU5EX0xJQlJBUlkoSEFSRkJVWlpfTElCUkFSSUVTIE5BTUVTIGhhcmZidXp6CisgIEhJTlRT
ICR7UENfSEFSRkJVWlpfTElCUkFSWV9ESVJTfSAke1BDX0hBUkZCVVpaX0xJQkRJUn0KKykKKwor
SU5DTFVERShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK0ZJTkRfUEFDS0FHRV9IQU5E
TEVfU1RBTkRBUkRfQVJHUyhIYXJmQnV6eiBERUZBVUxUX01TRyBIQVJGQlVaWl9JTkNMVURFX0RJ
UlMgSEFSRkJVWlpfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAxYmY3MWY4MTFh
MTAyODk3M2YyN2QwMTEyNWExZWNiOWQxNWUwYjZmLi4xZjJhNjc0NzZmNThlOGZjNjc1ZGFlODU0
ZTQ4MGE3YmI4ZWE0Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtMTE5LDggKzExOSwxMSBA
QCBFTkRJRiAoKQogCiBJRiAoRk9OVF9CQUNLRU5EIFNUUkVRVUFMICJmcmVldHlwZSIpCiAgIEZJ
TkRfUEFDS0FHRShGcmVldHlwZSBSRVFVSVJFRCkKKyAgRklORF9QQUNLQUdFKEhhcmZCdXp6IFJF
UVVJUkVEKQogICBTRVQoV1RGX1VTRV9GUkVFVFlQRSAxKQorICBTRVQoV1RGX1VTRV9IQVJGQlVa
Wl9ORyAxKQogICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0ZSRUVUWVBFPTEpCisgIEFERF9E
RUZJTklUSU9OUygtRFdURl9VU0VfSEFSRkJVWlpfTkc9MSkKIEVMU0UgKCkKICAgRklORF9QQUNL
QUdFKFBhbmdvIFJFUVVJUkVEKQogICBTRVQoV1RGX1VTRV9QQU5HTyAxKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA2YjBlMzY3NTNhZWU4MDc2
YThiZDI3Y2E3ZDI1ZmRiNmM0ODYzZTIuLjYzMmMwMGNiZTc3MjBiZjY0MTZiN2FlMmYyZjhmNWI2
MGE3MjI0MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9t
aW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10gQWRkIGNvbXBsZXgg
Zm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnJpbmdpbmcgSGFyZmJ1enogc3VwcG9ydCB0byBFRkwgd2l0
aCB0aGlzIHBhdGNoLCBzbyB3ZSBuZWVkIEhhcmZCdXp6IGluIHRoZSBwdWxsZWQgaW4gamhidWls
ZCBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMu
dHh0OiBBZGRpbmcgYWRkaXRpb25hbCBoZWFkZXIgaW5jbHVkZSBkaXJlY3Rvcmllcy4KKyAgICAg
ICAgKiBlZmwvamhidWlsZC5tb2R1bGVzOiBBZGRpbmcgc291cmNlIGZvciBIYXJmQnV6eiByZWxl
YXNlIHZlcnNpb24gMC45LjAuCisKIDIwMTItMDctMjUgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFs
ZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dUUl1bRUZMXSBXaGVlbCBl
dmVudHMgYXJlIG5vdCBlbWl0dGVkCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApp
bmRleCA0Y2MwNTAxNTAzNDc5ZTVlMmUyYWNiOWM5NWRlM2I4NDYzMmU3MjVlLi5iYWRjMmM0NzFm
YTdlODQ5NWJmNTUxZGU0ODljMWQwYWI0ZGFiMDE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01h
a2VMaXN0cy50eHQKQEAgLTI2LDYgKzI2LDggQEAgU0VUKFdlYktpdFRlc3RSdW5uZXJfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICR7V0VCQ09SRV9ESVJ9L2VkaXRpbmcKICAgICAke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybQogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzCisgICAg
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enoKKyAgICAke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZwogICAgICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL25ldHdvcmsKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0CiAgICAgJHtX
RUJDT1JFX0RJUn0vdGVzdGluZy9qcwpkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2poYnVpbGQubW9k
dWxlcyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggYTI2MGZhNDhmYzA5MTdiMzQx
OGI3NWI1NDJhODI3NGZkODhkMDdmYi4uOTQyNjQ4YzVkMWJjMGY3ZjAxMjRjMjkxN2ZjNjI1YjBh
M2JhM2M1NCAxMDA2NDQKLS0tIGEvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29s
cy9lZmwvamhidWlsZC5tb2R1bGVzCkBAIC05LDYgKzksNyBAQAogICAgICAgPGRlcCBwYWNrYWdl
PSJmb250cyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJmb250Y29uZmlnIi8+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImZyZWV0eXBlNiIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJoYXJmYnV6eiIvPgog
ICAgICAgPGRlcCBwYWNrYWdlPSJnbGliIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWItbmV0
d29ya2luZyIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJzb3VwIi8+CkBAIC0xNTksNiArMTYw
LDE1IEBACiAgICAgPC9icmFuY2g+CiAgIDwvYXV0b3Rvb2xzPgogCisgPGF1dG90b29scyBpZD0i
aGFyZmJ1enoiIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSI+CisgICA8YnJhbmNoIG1vZHVsZT0ic29m
dHdhcmUvaGFyZmJ1enovcmVsZWFzZS9oYXJmYnV6ei0yMDEyMDYyNy50YXIuYnoyIiB2ZXJzaW9u
PSIwLjkuMCIKKyAgICAgICAgICAgY2hlY2tvdXRkaXI9ImhhcmZidXp6LTAuOS4wIgorICAgICAg
ICAgICByZXBvPSJmcmVlZGVza3RvcC5vcmciCisgICAgICAgICAgIGhhc2g9InNoYTI1Njo1NjJh
MTg3Yjg0YTJiNWJkMzhmODdlODk4ZjVmMThhYTkxOGE0MWRiNjJhZGJjMTdmNmZjZmQ4ZmExNzU1
NDg1IgorICAgICAgICAgICBtZDVzdW09IjE4ZTZhOGQ4NDcyNTk0NDE3MjNhMjZlMjk5NzkyZDU1
Ij4KKyAgIDwvYnJhbmNoPgorIDwvYXV0b3Rvb2xzPgorCiAgIDxhdXRvdG9vbHMgaWQ9ImVpbmEi
ID4KICAgICA8YnJhbmNoIG1vZHVsZT0iZWluYSIKICAgICAgICAgICAgIHJlcG89ImVubGlnaHRl
bm1lbnQub3JnIgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDEwZmM4
MGUwYmM0MTZhMGI5ODIxOWEzYzUwMTdlYjk5MTI2YzJjN2MuLjM2Yjg5ZjY4MjQ2Yjk2MDRiMTU3
NjAyMDFhZWU1MzkyMGU2YjhmMTYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9t
aW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10gQWRkIGNvbXBsZXgg
Zm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ29uZmlndXJpbmcgRnJlZXR5cGUgYmFja2VuZCB0byB1c2Ug
SGFyZkJ1enogYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kSGFyZkJ1
enouY21ha2U6IEFkZGVkIHBrZ2NvbmZpZyBiYXNlZCBkaXNjb3Zlcnkgb2YgSGFyZkJ1enouCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6IEFkZGluZyBIYXJmYnV6eiBj
b25maWd1cmF0aW9uLgorCiAyMDEyLTA3LTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbR1RLXSBSZW1vdmUgdW5uZWNlc3NhcnkgdHJhaWxpbmcgc3BhY2Ug
aW4gdGhlIHByZXZpb3VzIGNvbW1pdC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154433</attachid>
            <date>2012-07-25 13:45:39 -0700</date>
            <delta_ts>2012-07-27 01:39:48 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, v6</desc>
            <filename>bug-91864-20120725224529.patch</filename>
            <type>text/plain</type>
            <size>31786</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwY2ZmMDE0Njg2ZjQ0
ODA4ZDhjZDljMGM0MmYxYjE1NTViYTdjYy4uYzFmNTNiOWMxNzFmYjk5ZmIzZTIzNjAxZWRlZTUy
MmJlMjBhZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgSGFyZmJ1enog
c3VwcG9ydCB0byBFRkwgYnkgaW1wbGVtZW50aW5nIGl0IHdpdGggdGhlIGhlbHAgb2YgY2Fpcm8g
YW5kIGNhaXJvLWZ0LgorICAgICAgICBSZXVzaW5nIENocm9taXVtJ3MgSGFyZmJ1enotTkcgc3Vw
cG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvbXBsZXggZm9udCBzdXBwb3J0IGlzIGNv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
aW5nIG5ldyBjYWlybyBiYXNlZCBpbXBsZW1lbnRhdGlvbnMsIHJlbW92aW5nIGVtdHB5IEZvbnRF
ZmwuY3BwCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmluZyBGb250RWZsLmNwcAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwOiBBZGRl
ZC4gTmV3IGltcGxlbWVudGF0aW9uIHRoYXQgaW1wbGVtZW50cyBjYWlybyAmIGhhcmZidXp6LW5n
IGJhc2VkIGNvbXBsZXggZm9udCBkcmF3aW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRpbmcgYSBn
ZXR0ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcDogQWRkaW5nIGEgZ2V0dGVyIHRoYXQgcmV0cmlldmVzIGEgaGFy
ZmJ1enogZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6aGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcDogQWRkZWQuIENhaXJvLWZyZWV0eXBlIGJhc2VkIGFw
cHJvYWNoIHRvIGdldCBjb21wbGV4IGZvbnQgbWV0cmljcy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZh
Y2VMb2NrZXI6OkNhaXJvRnRGYWNlTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRG
YWNlTG9ja2VyOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvRnRGYWNlTG9ja2VyOjp+
Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRUb0hhcmZCdXp6UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdl
dEdseXBoSG9yaXpvbnRhbEFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRH
bHlwaEhvcml6b250YWxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlw
aEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb1RleHRHZXRGb250RnVu
Y3MpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpDYWlyb0dldFRhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhhcmZCdXp6TkdGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UpOgorCiAyMDEyLTA3LTI1ICBTaGlueWEg
S2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBIHZhbGlkYXRpb24g
YnViYmxlIHNob3VsZCBub3QgYmUgbW9kaWZpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWVmZDc2YTI4MmRi
N2ZlNmNmYThlZjE5NTdiYjA4ZmFiNjBlMGQ4MS4uYmFlNDJmMzljZmFlYjYzNjYwYWYzMjgxYjkz
NDQyODVhMTViZmE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0yNCAgRG9t
aW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAg
IFtDYWlyb10gQWRkIGNvbXBsZXggZm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGluY2x1ZGVz
IGZvciBoYXJmYnV6eiBmb2xkZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIw
MTItMDctMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF0gQWRkIEZpbGUgQ2hvb3NlciBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkY2Q4N2Y1MzNlMzFj
ODYxOTE3MDU4Nzc2MWQ2MTYzY2UzYTliMGU5Li5jNWM3ZTUxOTJlNjUyZmMyYTFkNjBjMWFhZmE0
YTVjNjQ4MTY4MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIERv
bWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAg
ICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBpbmNsdWRl
cyBmb3IgaGFyZmJ1enogZm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAy
MDEyLTA3LTI1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBbRUZMXVtXSzJdIEFkZCBld2tfdmlld19jdXJzb3Jfc2V0IHRvIGNoYW5nZSBjdXJzb3IuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDI4YjY5ZTNhNTRhNWY1MmYxOWM1Mjk3MTczYmUwYjc0ZWI5
ZjI1ZDEuLmNiNDlmNjQ4MWMyMjFkMjI5MjM0M2Y2MDY4ZmExNWEyNGQwNzJmMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00OCw2ICs0OCw4IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGE5YTRmMTEyMjc2NjJkMzc4M2QyYTkzMjQyMmJlMzA4
YzJjNjcyNDUuLmIzYzRjOGE4MWJkNWZiNWRiM2FlMTUwMTJiZjRiNjBlNzM3ZDM5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xNDksMTUgKzE0OSwyNCBAQCBJRiAoV1RGX1VTRV9D
QUlSTykKICAgSUYgKFdURl9VU0VfRlJFRVRZUEUpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUiCisgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovIgorICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L25nIgogICAgICkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAotICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ZvbnRFZmwuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9D
b21wbGV4LmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcAogICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHAKKyAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlLmNwcAorICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKKyAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmNwcAorICAgICkKKyAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAgJHtIQVJGQlVaWl9MSUJSQVJJRVN9CiAg
ICAgKQogICBFTkRJRiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZGY3Y2QwYTkzNWEzYzZmNDVl
NmQ4ZDJmNTIzMjU0MzA5ZDhlOGMyYi4uMjY5ZTBlMDM5Njg5YWQxZDJkOTZiZTQzNDE4Zjc4YTYw
Y2NiOTg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY2MCw3ICszNjYwLDYgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVkRNWFBhcnNlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0nLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZsLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9lZmwvSW50UG9pbnRFZmwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0NvbXBsZXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvQ29tcGxleC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODZmM2UxOWJmOWQxYjJmNTlkNWJjZDZmNTM3NjQ0YzBlYTBlNmVhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyb0NvbXBsZXguY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkhhcmZCdXp6U2hhcGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgR2x5cGhCdWZmZXIgZ2x5cGhC
dWZmZXI7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNo
YXBlci5zaGFwZSgmZ2x5cGhCdWZmZXIpKQorICAgICAgICBkcmF3R2x5cGhCdWZmZXIoY29udGV4
dCwgcnVuLCBnbHlwaEJ1ZmZlciwgcG9pbnQpOworICAgIGVsc2UKKyAgICAgICAgTE9HX0VSUk9S
KCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgZ2x5cGhCdWZmZXIuIik7Cit9CisKK3ZvaWQgRm9udDo6
ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNvbnRl
eHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBt
YXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGlu
dCAvKiB0byAqLykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEZv
bnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBs
ZXhUZXh0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IEZvbnQ6OmZsb2F0V2lk
dGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxl
Rm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAoreworICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoKSkKKyAgICAgICAgcmV0
dXJuIHNoYXBlci50b3RhbFdpZHRoKCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qg
c2hhcGUgdGV4dCBydW4uIik7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBGb250OjpvZmZzZXRG
b3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9v
bCkgY29uc3QKK3sKKyAgICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBp
ZiAoc2hhcGVyLnNoYXBlKCkpCisgICAgICAgIHJldHVybiBzaGFwZXIub2Zmc2V0Rm9yUG9zaXRp
b24oeCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgdGV4dCBydW4uIik7
CisgICAgcmV0dXJuIDA7Cit9CisKK0Zsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50
IGgsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVy
KHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBlci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hh
cGVyLnNlbGVjdGlvblJlY3QocG9pbnQsIGgsIGZyb20sIHRvKTsKKyAgICBMT0dfRVJST1IoIlNo
YXBlciBjb3VsZG4ndCBzaGFwZSB0ZXh0IHJ1bi4iKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9Gb250RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNjYzdmZmUzMzhlNWRjYTg1
MDc5N2Y0MzU5MTVkM2FhZDFiNzNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGb250LmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgaW50IGZyb20sIGludCB0bykgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21p
Y1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAv
KiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVv
Z3JhcGhzSW5Db21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mbG9hdCBG
b250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgU2ltcGxlRm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDAuMGY7Ci19Ci0KLWludCBGb250OjpvZmZzZXRGb3JQ
b3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCwgYm9vbCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1GbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50LCBpbnQsIGludCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDIwNjY1M2RkZjdmODdjZGMwYzBkN2FlMWVmOTRiZDM5ZDY3N2YyZDkuLjZhNjJjNmM3
Y2M0NWM4OWNiZDViZTIxZWJlMDFmNDQxMTk5NTU4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
LmgKQEAgLTI5LDExICsyOSwxNSBAQAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaWYg
VVNFKEhBUkZCVVpaX05HKQorI2luY2x1ZGUgIkhhcmZCdXp6TkdGYWNlLmgiCisjZW5kaWYKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBGY0Zv
bnRTZXQ7CitjbGFzcyBIYXJmQnV6ek5HRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogCisj
aWYgVVNFKEhBUkZCVVpaX05HKQorICAgIEhhcmZCdXp6TkdGYWNlKiBoYXJmYnV6ekZhY2UoKSBj
b25zdDsKKyNlbmRpZgorCiAgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKICAgICBmbG9hdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUp
IHsgbV9zaXplID0gc2l6ZTsgfQpAQCAtOTgsNiArMTA2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
bV9zeW50aGV0aWNPYmxpcXVlOwogICAgIGJvb2wgbV9maXhlZFdpZHRoOwogICAgIGNhaXJvX3Nj
YWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisgICAgbXV0
YWJsZSBSZWZQdHI8SGFyZkJ1enpOR0ZhY2U+IG1faGFyZmJ1enpGYWNlOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aEZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFjZV90
KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiA9IEZvbnREZXNjcmlwdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDk4YWU1ZWQ2NjRkYzQzNTkz
ZWIzZGU4NzFmOGQzZTQ0N2MyODIwNTIuLjgwM2VjM2ZlMDk4M2JkYzQxM2FhOTgzYTBjNmQ0YTM1
ZjcxMWMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMTg2LDE3ICsxODYsMjcgQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgICAgICBjYWlyb19z
Y2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7CiAgICAgbV9zY2FsZWRGb250ID0gY2Fp
cm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKG90aGVyLm1fc2NhbGVkRm9udCk7CiAKKyNpZiBVU0Uo
SEFSRkJVWlpfTkcpCisgICAgbV9oYXJmYnV6ekZhY2UgPSBvdGhlci5tX2hhcmZidXp6RmFjZTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgIDogbV9mYWxs
YmFja3MoMCkKICAgICAsIG1fc2NhbGVkRm9udCgwKQorI2lmIFVTRShIQVJGQlVaWl9ORykKKyAg
ICAsIG1faGFyZmJ1enpGYWNlKG90aGVyLm1faGFyZmJ1enpGYWNlKQorI2VuZGlmCiB7CiAgICAg
KnRoaXMgPSBvdGhlcjsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6ZSkKKyNpZiBVU0UoSEFSRkJV
WlpfTkcpCisgICAgOiBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRp
ZgogewogICAgICp0aGlzID0gb3RoZXI7CiAKQEAgLTIxNyw2ICsyMjcsMTYgQEAgRm9udFBsYXRm
b3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9k
ZXN0cm95KG1fc2NhbGVkRm9udCk7CiB9CiAKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCitIYXJmQnV6
ek5HRmFjZSogRm9udFBsYXRmb3JtRGF0YTo6aGFyZmJ1enpGYWNlKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1faGFyZmJ1enpGYWNlKQorICAgICAgICBtX2hhcmZidXp6RmFjZSA9IEhhcmZCdXp6TkdG
YWNlOjpjcmVhdGUoY29uc3RfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odGhpcyksIGhhc2goKSk7
CisKKyAgICByZXR1cm4gbV9oYXJmYnV6ekZhY2UuZ2V0KCk7Cit9CisjZW5kaWYKKwogYm9vbCBG
b250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2goKQogewogICAgIHJldHVybiBtX2ZpeGVkV2lk
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
NTZmMmE3OTE2N2U0Y2I1OWYxOTEyZGE4MWViYmVjYzE5YjZlZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5H
RmFjZUNhaXJvLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhhcmZCdXp6TkdG
YWNlLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKKyNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgorI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8Y2Fpcm8tZnQu
aD4KKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ZyZWV0eXBlLmg+Cisj
aW5jbHVkZSA8ZnJlZXR5cGUvdHR0YWJsZXMuaD4KKyNpbmNsdWRlIDxoYi5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWly
b0Z0RmFjZUxvY2tlciB7CitwdWJsaWM6CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogY2Fpcm9TY2FsZWRGb250KSA6IG1fc2NhbGVkRm9udChjYWlyb1NjYWxlZEZv
bnQpIHsgfTsKKyAgICBGVF9GYWNlIGxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhaXJv
X2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIH07CisgICAgfkNh
aXJvRnRGYWNlTG9ja2VyKCkKKyAgICB7CisgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3Vu
bG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBjYWlyb19zY2Fs
ZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Cit9OworCitzdGF0aWMgaGJfcG9zaXRpb25fdCBmbG9h
dFRvSGFyZkJ1enpQb3NpdGlvbihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOworfQorCitzdGF0aWMgaGJfcG9z
aXRpb25fdCBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZG91YmxlIHZhbHVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7Cit9CisK
K3N0YXRpYyB2b2lkIENhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogc2NhbGVkRm9udCwgaGJfY29kZXBvaW50X3QgY29kZXBvaW50LCBoYl9wb3NpdGlvbl90
KiBhZHZhbmNlLCBoYl9nbHlwaF9leHRlbnRzX3QqIGV4dGVudHMpCit7CisgICAgY2Fpcm9fdGV4
dF9leHRlbnRzX3QgZ2x5cGhFeHRlbnRzOworICAgIGNhaXJvX2dseXBoX3QgZ2x5cGg7CisgICAg
Z2x5cGguaW5kZXggPSBjb2RlcG9pbnQ7CisgICAgZ2x5cGgueCA9IDA7CisgICAgZ2x5cGgueSA9
IDA7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyhzY2FsZWRGb250LCAmZ2x5
cGgsIDEsICZnbHlwaEV4dGVudHMpOworCisgICAgaWYgKGFkdmFuY2UpCisgICAgICAgICphZHZh
bmNlID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy54X2FkdmFuY2UpOwor
ICAgIGlmIChleHRlbnRzKSB7CisgICAgICAgIGV4dGVudHMtPnhfYmVhcmluZyA9IGRvdWJsZVRv
SGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50
cy0+eV9iZWFyaW5nID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy55X2Jl
YXJpbmcpOworICAgICAgICBleHRlbnRzLT53aWR0aCA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlv
bihnbHlwaEV4dGVudHMud2lkdGgpOworICAgICAgICBleHRlbnRzLT5oZWlnaHQgPSBkb3VibGVU
b0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLmhlaWdodCk7CisgICAgfQorfQorCitzdGF0
aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGgoaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZv
bnREYXRhLCBoYl9jb2RlcG9pbnRfdCB1bmljb2RlLCBoYl9jb2RlcG9pbnRfdCB2YXJpYXRpb25T
ZWxlY3RvciwgaGJfY29kZXBvaW50X3QqIGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBG
b250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0
Zm9ybURhdGEqPihmb250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9u
dCA9IHBsYXRmb3JtRGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsK
KyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKKyAg
ICBGVF9GYWNlIGZ0RmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKyAgICBBU1NFUlQo
ZnRGYWNlKTsKKyAgICAqZ2x5cGggPSBGVF9HZXRfQ2hhcl9JbmRleChmdEZhY2UsIHVuaWNvZGUp
OworICAgIHJldHVybiAhISpnbHlwaDsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgaGFyZmJ1
enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250
RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQ
bGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3Jt
RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0g
cGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOworCisg
ICAgaGJfcG9zaXRpb25fdCBhZHZhbmNlID0gMDsKKyAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRF
eHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAmYWR2YW5jZSwgMCk7CisgICAgcmV0dXJuIGFkdmFu
Y2U7Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmln
aW4oaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlw
aCwgaGJfcG9zaXRpb25fdCogeCwgaGJfcG9zaXRpb25fdCogeSwgdm9pZCogdXNlckRhdGEpCit7
CisgICAgLy8gSnVzdCByZXR1cm4gdHJ1ZSwgZm9sbG93aW5nIHRoZSB3YXkgdGhhdCBIYXJmYnV6
ei1GcmVlVHlwZQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRvZXMuCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMoaGJfZm9udF90
KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgaGJfZ2x5cGhf
ZXh0ZW50c190KiBleHRlbnRzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1E
YXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihm
b250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRmb3Jt
RGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsKKworICAgIENhaXJv
R2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoc2NhbGVkRm9udCwgZ2x5cGgsIDAsIGV4dGVudHMpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfZm9udF9mdW5jc190KiBoYXJmYnV6ekNh
aXJvVGV4dEdldEZvbnRGdW5jcygpCit7CisgICAgc3RhdGljIGhiX2ZvbnRfZnVuY3NfdCogaGFy
ZmJ1enpDYWlyb0ZvbnRGdW5jcyA9IDA7CisKKyAgICAvLyBXZSBkb24ndCBzZXQgY2FsbGJhY2sg
ZnVuY3Rpb25zIHdoaWNoIHdlIGNhbid0IHN1cHBvcnQuCisgICAgLy8gSGFyZmJ1enogd2lsbCB1
c2UgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgYXJlbid0IHNldC4KKyAgICBp
ZiAoIWhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpIHsKKyAgICAgICAgaGFyZmJ1enpDYWlyb0ZvbnRG
dW5jcyA9IGhiX2ZvbnRfZnVuY3NfY3JlYXRlKCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0
X2dseXBoX2Z1bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaCwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfYWR2YW5jZV9mdW5jKGhhcmZi
dXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfb3JpZ2luX2Z1bmMoaGFyZmJ1
enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmlnaW4sIDAsIDAp
OworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9leHRlbnRzX2Z1bmMoaGFyZmJ1enpD
YWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMsIDAsIDApOworICAgICAgICBo
Yl9mb250X2Z1bmNzX21ha2VfaW1tdXRhYmxlKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpOworICAg
IH0KKyAgICByZXR1cm4gaGFyZmJ1enpDYWlyb0ZvbnRGdW5jczsKK30KKworc3RhdGljIGhiX2Js
b2JfdCogaGFyZmJ1enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCogZmFjZSwgaGJfdGFnX3QgdGFn
LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhKiBmb250ID0gcmVpbnRl
cnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odXNlckRhdGEpOworCisgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IGZvbnQtPnNjYWxlZEZvbnQoKTsKKyAgICBpZiAoIXNj
YWxlZEZvbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fp
cm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7CisgICAgRlRfRmFjZSBmdEZvbnQgPSBjYWlyb0Z0
RmFjZUxvY2tlci5sb2NrKCk7CisgICAgaWYgKCFmdEZvbnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKKyAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xv
YWRfU2ZudF9UYWJsZShmdEZvbnQsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSk7CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZUX0J5dGUqIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RlRfQnl0ZSo+KGZhc3RNYWxsb2ModGFibGVTaXplKSk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0g
dGFibGVTaXplOworICAgIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZ0Rm9udCwgdGFnLCAw
LCBidWZmZXIsICZ0YWJsZVNpemUpOworICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhw
ZWN0ZWRUYWJsZVNpemUpIHsKKyAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGhiX2Jsb2JfY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIHRhYmxlU2l6ZSwgSEJfTUVNT1JZX01PREVfV1JJVEFC
TEUsIGJ1ZmZlciwgZmFzdEZyZWUpOworfQorCitoYl9mYWNlX3QqIEhhcmZCdXp6TkdGYWNlOjpj
cmVhdGVGYWNlKCkKK3sKKyAgICBoYl9mYWNlX3QqIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZV9mb3Jf
dGFibGVzKGhhcmZidXp6Q2Fpcm9HZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIEFT
U0VSVChmYWNlKTsKKyAgICByZXR1cm4gZmFjZTsKK30KKworaGJfZm9udF90KiBIYXJmQnV6ek5H
RmFjZTo6Y3JlYXRlRm9udCgpCit7CisgICAgaGJfZm9udF90KiBmb250ID0gaGJfZm9udF9jcmVh
dGUobV9mYWNlKTsKKyAgICBoYl9mb250X3NldF9mdW5jcyhmb250LCBoYXJmYnV6ekNhaXJvVGV4
dEdldEZvbnRGdW5jcygpLCBtX3BsYXRmb3JtRGF0YSwgMCk7CisgICAgY29uc3QgZmxvYXQgc2l6
ZSA9IG1fcGxhdGZvcm1EYXRhLT5zaXplKCk7CisgICAgaWYgKGZsb29yZihzaXplKSA9PSBzaXpl
KQorICAgICAgICBoYl9mb250X3NldF9wcGVtKGZvbnQsIHNpemUsIHNpemUpOworICAgIGludCBz
Y2FsZSA9IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKHNpemUpOworICAgIGhiX2ZvbnRfc2V0X3Nj
YWxlKGZvbnQsIHNjYWxlLCBzY2FsZSk7CisgICAgaGJfZm9udF9tYWtlX2ltbXV0YWJsZShmb250
KTsKKyAgICByZXR1cm4gZm9udDsKK30KKworR2x5cGhCdWZmZXJBZHZhbmNlIEhhcmZCdXp6U2hh
cGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICByZXR1cm4gR2x5cGhCdWZmZXJBZHZhbmNlKHdpZHRoLCBoZWlnaHQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkMjVmYjgxMjc1MTI5
MmRhNGE2NDQ2ZDQ0ZjUyNjM5NTE0ODcwODgxLi45MmYyZGIyYjBlZTQ1MjE1NDk4ODZhYmYzYTM3
MDNmZjllOGIwOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDggQEAgU0VUKFdl
YktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2Fu
aW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29y
ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3FsIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApp
bmRleCAyMGFkZmY4NzYzYjA2NzE1ZmY2MmQ4MjQwNThhODk4MzdlZDRlNGM5Li43M2JjYjJiZGE1
YzM0OWIyNWIzY2IwMzM5MGRjNzllMjU4NTAzZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
NjgsNiArNjgsOCBAQCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3Fs
IgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9GaW5kSGFyZkJ1enouY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM0ODg3OTJhZDA1ZGNmNTIxNGU2
NTY4MDlkM2UzMmM2NzhkZTExZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5k
SGFyZkJ1enouY21ha2UKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIsIElu
dGVsIENvcnBvcmF0aW9uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyMK
KyMgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisjICAgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbgorIyAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorIyAgIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK
KyMgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQorIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgVHJ5IHRvIGZpbmQgSGFyZmJ1
enogaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KKyMKKyMgQWZ0ZXIgc3VjY2Vzc2Z1
bCBkaXNjb3ZlcnksIHRoaXMgd2lsbCBzZXQgZm9yIGluY2x1c2lvbiB3aGVyZSBuZWVkZWQ6Cisj
IEhBUkZCVVpaX0lOQ0xVREVfRElSUyAtIGNvbnRhaW5nIHRoZSBIYXJmQnV6eiBoZWFkZXJzCisj
IEhBUkZCVVpaX0xJQlJBUklFUyAtIGNvbnRhaW5nIHRoZSBIYXJmQnV6eiBsaWJyYXJ5CisKK0lO
Q0xVREUoRmluZFBrZ0NvbmZpZykKKworUEtHX0NIRUNLX01PRFVMRVMoUENfSEFSRkJVWlogaGFy
ZmJ1eno+PTAuOS4wKQorCitGSU5EX1BBVEgoSEFSRkJVWlpfSU5DTFVERV9ESVJTIE5BTUVTIGhi
LmgKKyAgSElOVFMgJHtQQ19IQVJGQlVaWl9JTkNMVURFX0RJUlN9ICR7UENfSEFSRkJVWlpfSU5D
TFVERURJUn0KKykKKworRklORF9MSUJSQVJZKEhBUkZCVVpaX0xJQlJBUklFUyBOQU1FUyBoYXJm
YnV6egorICBISU5UUyAke1BDX0hBUkZCVVpaX0xJQlJBUllfRElSU30gJHtQQ19IQVJGQlVaWl9M
SUJESVJ9CispCisKK0lOQ0xVREUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCitGSU5E
X1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoSGFyZkJ1enogREVGQVVMVF9NU0cgSEFSRkJV
WlpfSU5DTFVERV9ESVJTIEhBUkZCVVpaX0xJQlJBUklFUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5k
ZXggMWJmNzFmODExYTEwMjg5NzNmMjdkMDExMjVhMWVjYjlkMTVlMGI2Zi4uMWYyYTY3NDc2ZjU4
ZThmYzY3NWRhZTg1NGU0ODBhN2JiOGVhNDI3OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTEx
OSw4ICsxMTksMTEgQEAgRU5ESUYgKCkKIAogSUYgKEZPTlRfQkFDS0VORCBTVFJFUVVBTCAiZnJl
ZXR5cGUiKQogICBGSU5EX1BBQ0tBR0UoRnJlZXR5cGUgUkVRVUlSRUQpCisgIEZJTkRfUEFDS0FH
RShIYXJmQnV6eiBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfRlJFRVRZUEUgMSkKKyAgU0VUKFdU
Rl9VU0VfSEFSRkJVWlpfTkcgMSkKICAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9GUkVFVFlQ
RT0xKQorICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0hBUkZCVVpaX05HPTEpCiBFTFNFICgp
CiAgIEZJTkRfUEFDS0FHRShQYW5nbyBSRVFVSVJFRCkKICAgU0VUKFdURl9VU0VfUEFOR08gMSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNmIw
ZTM2NzUzYWVlODA3NmE4YmQyN2NhN2QyNWZkYjZjNDg2M2UyLi42MzJjMDBjYmU3NzIwYmY2NDE2
YjdhZTJmMmY4ZjViNjBhNzIyNDJjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2
dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9d
IEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJyaW5naW5nIEhhcmZidXp6IHN1cHBv
cnQgdG8gRUZMIHdpdGggdGhpcyBwYXRjaCwgc28gd2UgbmVlZCBIYXJmQnV6eiBpbiB0aGUgcHVs
bGVkIGluIGpoYnVpbGQgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9DTWFrZUxpc3RzLnR4dDogQWRkaW5nIGFkZGl0aW9uYWwgaGVhZGVyIGluY2x1ZGUgZGlyZWN0
b3JpZXMuCisgICAgICAgICogZWZsL2poYnVpbGQubW9kdWxlczogQWRkaW5nIHNvdXJjZSBmb3Ig
SGFyZkJ1enogcmVsZWFzZSB2ZXJzaW9uIDAuOS4wLgorCiAyMDEyLTA3LTI1ICBBbGV4YW5kZXIg
U2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtXVFJd
W0VGTF0gV2hlZWwgZXZlbnRzIGFyZSBub3QgZW1pdHRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01h
a2VMaXN0cy50eHQKaW5kZXggNGNjMDUwMTUwMzQ3OWU1ZTJlMmFjYjljOTVkZTNiODQ2MzJlNzI1
ZS4uYmFkYzJjNDcxZmE3ZTg0OTViZjU1MWRlNDg5YzFkMGFiNGRhYjAxOSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw4IEBAIFNFVChXZWJLaXRUZXN0
UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCiAg
ICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0KICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcworICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6Cisg
ICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcKICAgICAke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
dGV4dAogICAgICR7V0VCQ09SRV9ESVJ9L3Rlc3RpbmcvanMKZGlmZiAtLWdpdCBhL1Rvb2xzL2Vm
bC9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzCmluZGV4IGEyNjBm
YTQ4ZmMwOTE3YjM0MThiNzViNTQyYTgyNzRmZDg4ZDA3ZmIuLjk0MjY0OGM1ZDFiYzBmN2YwMTI0
YzI5MTdmYzYyNWIwYTNiYTNjNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVs
ZXMKKysrIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcwpAQCAtOSw2ICs5LDcgQEAKICAgICAg
IDxkZXAgcGFja2FnZT0iZm9udHMiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZm9udGNvbmZpZyIv
PgogICAgICAgPGRlcCBwYWNrYWdlPSJmcmVldHlwZTYiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0i
aGFyZmJ1enoiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgICAgPGRlcCBwYWNr
YWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGlic291cCIvPgpA
QCAtMTU5LDYgKzE2MCwxNSBAQAogICAgIDwvYnJhbmNoPgogICA8L2F1dG90b29scz4KIAorIDxh
dXRvdG9vbHMgaWQ9ImhhcmZidXp6IiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiPgorICAgPGJyYW5j
aCBtb2R1bGU9InNvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvaGFyZmJ1enotMjAxMjA2MjcudGFy
LmJ6MiIgdmVyc2lvbj0iMC45LjAiCisgICAgICAgICAgIGNoZWNrb3V0ZGlyPSJoYXJmYnV6ei0w
LjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJlZWRlc2t0b3Aub3JnIgorICAgICAgICAgICBoYXNo
PSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4Zjg3ZTg5OGY1ZjE4YWE5MThhNDFkYjYyYWRiYzE3
ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAgICAgbWQ1c3VtPSIxOGU2YThkODQ3MjU5NDQxNzIz
YTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5jaD4KKyA8L2F1dG90b29scz4KKwogICA8YXV0b3Rv
b2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5jaCBtb2R1bGU9ImVpbmEiCiAgICAgICAgICAgICBy
ZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCAxMGZjODBlMGJjNDE2YTBiOTgyMTlhM2M1MDE3ZWI5OTEyNmMyYzdjLi4zNmI4OWY2
ODI0NmI5NjA0YjE1NzYwMjAxYWVlNTM5MjBlNmI4ZjE2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cK
KysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2
dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9d
IEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbmZpZ3VyaW5nIEZyZWV0eXBlIGJh
Y2tlbmQgdG8gdXNlIEhhcmZCdXp6IGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvRmluZEhhcmZCdXp6LmNtYWtlOiBBZGRlZCBwa2djb25maWcgYmFzZWQgZGlzY292ZXJ5IG9m
IEhhcmZCdXp6LgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBBZGRp
bmcgSGFyZmJ1enogY29uZmlndXJhdGlvbi4KKwogMjAxMi0wNy0yMyAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHVubmVjZXNzYXJ5IHRy
YWlsaW5nIHNwYWNlIGluIHRoZSBwcmV2aW91cyBjb21taXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154877</attachid>
            <date>2012-07-27 01:40:00 -0700</date>
            <delta_ts>2012-08-02 06:28:31 -0700</delta_ts>
            <desc>HarfbuzzNG support based on cairo and freetype, final.</desc>
            <filename>bug-91864-20120727114208.patch</filename>
            <type>text/plain</type>
            <size>31844</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxNGM4OTQzMTQ1Y2Yw
YTU5ZWQ2ODM0YjNlMGQwNmNlNmExOGExMy4uY2NhY2I0YzkyMjAyNDc0MWZmZTlkZTlkNzIyOWE0
YjMwM2NkNmQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA3LTI0ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiBhbmQgTWFydGluIFJvYmluc29uLgorCisgICAg
ICAgIEFkZGluZyBIYXJmYnV6eiBzdXBwb3J0IHRvIEVGTCBieSBpbXBsZW1lbnRpbmcgaXQgd2l0
aCB0aGUgaGVscCBvZiBjYWlybyBhbmQgY2Fpcm8tZnQuCisgICAgICAgIFJldXNpbmcgQ2hyb21p
dW0ncyBIYXJmYnV6ei1ORyBzdXBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY29tcGxl
eCBmb250IHN1cHBvcnQgaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OiBBZGRpbmcgbmV3IGNhaXJvIGJhc2VkIGltcGxlbWVudGF0aW9ucywg
cmVtb3ZpbmcgZW10cHkgRm9udEVmbC5jcHAKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFJlbW92
aW5nIEZvbnRFZmwuY3BwCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENh
aXJvSGFyZmJ1enpORy5jcHA6IEFkZGVkLiBOZXcgaW1wbGVtZW50YXRpb24gdGhhdCBpbXBsZW1l
bnRzIGNhaXJvICYgaGFyZmJ1enotbmcgYmFzZWQgY29tcGxleCBmb250IGRyYXdpbmcuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21w
bGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3Jh
cGhzSW5Db21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpmbG9hdFdpZHRoRm9y
Q29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9y
Q29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZsLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxh
dGZvcm1EYXRhLmg6IEFkZGluZyBhIGdldHRlciB0aGF0IHJldHJpZXZlcyBhIGhhcmZidXp6IGZh
Y2UuCisgICAgICAgIChGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOiBBZGRpbmcgYSBnZXR0
ZXIgdGhhdCByZXRyaWV2ZXMgYSBoYXJmYnV6eiBmYWNlLgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXJmYnV6ekZhY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwOiBBZGRlZC4g
Q2Fpcm8tZnJlZXR5cGUgYmFzZWQgYXBwcm9hY2ggdG8gZ2V0IGNvbXBsZXggZm9udCBtZXRyaWNz
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDYWlyb0Z0RmFjZUxvY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlyb0Z0RmFjZUxvY2tlcjo6Q2Fpcm9GdEZhY2VMb2NrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6OmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm9GdEZhY2VMb2NrZXI6On5DYWlyb0Z0RmFjZUxvY2tlcik6CisgICAgICAgIChXZWJD
b3JlOjpmbG9hdFRvSGFyZkJ1enpQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkb3VibGVU
b0hhcmZCdXp6UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm9HZXRHbHlwaFdpZHRo
QW5kRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekdldEdseXBoKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbE9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmYnV6ekdldEdseXBoRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpoYXJm
YnV6ekNhaXJvVGV4dEdldEZvbnRGdW5jcyk6CisgICAgICAgIChXZWJDb3JlOjpoYXJmYnV6ekNh
aXJvR2V0VGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpOR0ZhY2U6OmNyZWF0ZUZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpOR0ZhY2U6OmNyZWF0ZUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OmNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZSk6
CisKIDIwMTItMDctMjcgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEluZGV4ZWREQjogaW5qZWN0IGluZGV4IGtleXMgb24gY3Vyc29yL29iamVjdHN0b3Jl
L2luZGV4IGdldCBzdWNjZXNzIGhhbmRsZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgzMTU5OTZmOGQ3YWFhMzA1
ODI1YmQxODY3YjcyMzg3MGY1YmY3NmMuLjhmODE2ODdkMWMxNTA0NGFiOTA2MTY0OTY5NDFlYmQ0
ODQxNzc5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fp
cm9dIEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uIGFuZCBNYXJ0aW4gUm9iaW5zb24uCisKKyAgICAgICAg
QWRkaW5nIGluY2x1ZGVzIGZvciBoYXJmYnV6eiBmb2xkZXJzLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisKIDIwMTItMDctMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEltcGxlbWVudCBOZXR3b3JrIElu
Zm9ybWF0aW9uIHByb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTY5ZGQ3NWRiY2ExNThmMTc3MWRmYWQw
MDhhNWJmYTU4Yjk4N2UxNS4uNGRmNzU5NDRlZTQxYTQ1NTUyZTNlNTU3NWQ0NTgyMWUyNDQxNzA5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA3LTI0ICBEb21pbmlrIFLDtnR0
c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAgW0NhaXJvXSBB
ZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubiBhbmQgTWFydGluIFJvYmluc29uLgorCisgICAgICAgIEFkZGlu
ZyBpbmNsdWRlcyBmb3IgaGFyZmJ1enogZm9sZGVycy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorCiAyMDEyLTA3LTI2ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgUXQgYnVpbGRmaXggYWZ0ZXIgcjEyMzc4Ni4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggN2UzNGMwOWRiODY3NWJmOTdmYjlmN2E3ZjlhNWM2ZDc2YzUyYjc2NC4uYzg1
MzYwMmJkYTViOTllOTk4MTBiNGQwYmFjYmZkOTk0YzRjYjI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTQ4LDYgKzQ4LDggQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9hcm0iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggYWU2MDI0ZGU2ODBmNDRiNGYxZTg0NTEwZjk4ZjdlMTcyNGZiNjEzNi4u
M2QzY2M3MGUwODY5ZjI1NmUzMDQ1YmZhMjhiY2Q1MWRkMWMxZWI2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTE0OSwxNSArMTQ5LDI0IEBAIElGIChXVEZfVVNFX0NBSVJPKQogICBJ
RiAoV1RGX1VTRV9GUkVFVFlQRSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZSIKKyAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei8iCisg
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCiAgICAg
KQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwCi0gICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVm
bC5jcHAKKyAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6Tkcu
Y3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5j
cHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ds
eXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCiAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3BwCisgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcAorICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuY3BwCisgICAgKQorICAgIExJU1QoQVBQRU5E
IFdlYkNvcmVfTElCUkFSSUVTCisgICAgICAke0hBUkZCVVpaX0xJQlJBUklFU30KICAgICApCiAg
IEVORElGICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzZWNlNWY1OTBlNjZjYmVjMDk3NzFiZWU2
OTU2NWNhYjA4ZjRiNjUxLi44MzdiYmE5ZjYwOTM5NTBlZDdkMTIxMzFiNmQxNDQyMzM3Mzc3NTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjU4LDcgKzM2NTgsNiBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbScsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRFZmwuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9JbWFnZUVmbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9JbnRQb2ludEVmbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZWExYTI3ZGVlMTcxMDU2YmI0N2FkY2Q5OTgxOWFkNDhlNmIzODEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENh
aXJvSGFyZmJ1enpORy5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgorI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgR2x5cGhCdWZmZXIgZ2x5cGhC
dWZmZXI7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1bik7CisgICAgaWYgKHNo
YXBlci5zaGFwZSgmZ2x5cGhCdWZmZXIpKQorICAgICAgICBkcmF3R2x5cGhCdWZmZXIoY29udGV4
dCwgcnVuLCBnbHlwaEJ1ZmZlciwgcG9pbnQpOworICAgIGVsc2UKKyAgICAgICAgTE9HX0VSUk9S
KCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgZ2x5cGhCdWZmZXIuIik7Cit9CisKK3ZvaWQgRm9udDo6
ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIC8qIGNvbnRl
eHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBt
YXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGlu
dCAvKiB0byAqLykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEZv
bnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBs
ZXhUZXh0KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IEZvbnQ6OmZsb2F0V2lk
dGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxl
Rm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAoreworICAgIEhhcmZCdXp6U2hhcGVy
IHNoYXBlcih0aGlzLCBydW4pOworICAgIGlmIChzaGFwZXIuc2hhcGUoKSkKKyAgICAgICAgcmV0
dXJuIHNoYXBlci50b3RhbFdpZHRoKCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qg
c2hhcGUgdGV4dCBydW4uIik7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBGb250OjpvZmZzZXRG
b3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9v
bCkgY29uc3QKK3sKKyAgICBIYXJmQnV6elNoYXBlciBzaGFwZXIodGhpcywgcnVuKTsKKyAgICBp
ZiAoc2hhcGVyLnNoYXBlKCkpCisgICAgICAgIHJldHVybiBzaGFwZXIub2Zmc2V0Rm9yUG9zaXRp
b24oeCk7CisgICAgTE9HX0VSUk9SKCJTaGFwZXIgY291bGRuJ3Qgc2hhcGUgdGV4dCBydW4uIik7
CisgICAgcmV0dXJuIDA7Cit9CisKK0Zsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50
IGgsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVy
KHRoaXMsIHJ1bik7CisgICAgaWYgKHNoYXBlci5zaGFwZSgpKQorICAgICAgICByZXR1cm4gc2hh
cGVyLnNlbGVjdGlvblJlY3QocG9pbnQsIGgsIGZyb20sIHRvKTsKKyAgICBMT0dfRVJST1IoIlNo
YXBlciBjb3VsZG4ndCBzaGFwZSB0ZXh0IHJ1bi4iKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9Gb250RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNjYzdmZmUzMzhlNWRjYTg1
MDc5N2Y0MzU5MTVkM2FhZDFiNzNlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVm
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDAg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4
IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQotICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJGb250LmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCi0KLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgaW50IGZyb20sIGludCB0bykgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21p
Y1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAv
KiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQoKQot
ewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVv
Z3JhcGhzSW5Db21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1mbG9hdCBG
b250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgU2ltcGxlRm9udERhdGEqPiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdAotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDAuMGY7Ci19Ci0KLWludCBGb250OjpvZmZzZXRGb3JQ
b3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCwgYm9vbCkgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1GbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50LCBpbnQsIGludCkgY29uc3QKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDIwNjY1M2RkZjdmODdjZGMwYzBkN2FlMWVmOTRiZDM5ZDY3N2YyZDkuLjZhNjJjNmM3
Y2M0NWM4OWNiZDViZTIxZWJlMDFmNDQxMTk5NTU4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
LmgKQEAgLTI5LDExICsyOSwxNSBAQAogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkZvbnRPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaWYg
VVNFKEhBUkZCVVpaX05HKQorI2luY2x1ZGUgIkhhcmZCdXp6TkdGYWNlLmgiCisjZW5kaWYKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBGY0Zv
bnRTZXQ7CitjbGFzcyBIYXJmQnV6ek5HRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02Myw2ICs2NywxMCBAQCBwdWJsaWM6CiAKICAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwogCisj
aWYgVVNFKEhBUkZCVVpaX05HKQorICAgIEhhcmZCdXp6TkdGYWNlKiBoYXJmYnV6ekZhY2UoKSBj
b25zdDsKKyNlbmRpZgorCiAgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKICAgICBmbG9hdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUp
IHsgbV9zaXplID0gc2l6ZTsgfQpAQCAtOTgsNiArMTA2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
bV9zeW50aGV0aWNPYmxpcXVlOwogICAgIGJvb2wgbV9maXhlZFdpZHRoOwogICAgIGNhaXJvX3Nj
YWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCisgICAgbXV0
YWJsZSBSZWZQdHI8SGFyZkJ1enpOR0ZhY2U+IG1faGFyZmJ1enpGYWNlOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aEZvbnRGYWNlKGNhaXJvX2ZvbnRfZmFjZV90
KiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiA9IEZvbnREZXNjcmlwdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDk4YWU1ZWQ2NjRkYzQzNTkz
ZWIzZGU4NzFmOGQzZTQ0N2MyODIwNTIuLjgwM2VjM2ZlMDk4M2JkYzQxM2FhOTgzYTBjNmQ0YTM1
ZjcxMWMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMTg2LDE3ICsxODYsMjcgQEAgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRmb3JtRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgICAgICBjYWlyb19z
Y2FsZWRfZm9udF9kZXN0cm95KG1fc2NhbGVkRm9udCk7CiAgICAgbV9zY2FsZWRGb250ID0gY2Fp
cm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKG90aGVyLm1fc2NhbGVkRm9udCk7CiAKKyNpZiBVU0Uo
SEFSRkJVWlpfTkcpCisgICAgbV9oYXJmYnV6ekZhY2UgPSBvdGhlci5tX2hhcmZidXp6RmFjZTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgIDogbV9mYWxs
YmFja3MoMCkKICAgICAsIG1fc2NhbGVkRm9udCgwKQorI2lmIFVTRShIQVJGQlVaWl9ORykKKyAg
ICAsIG1faGFyZmJ1enpGYWNlKG90aGVyLm1faGFyZmJ1enpGYWNlKQorI2VuZGlmCiB7CiAgICAg
KnRoaXMgPSBvdGhlcjsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlciwgZmxvYXQgc2l6ZSkKKyNpZiBVU0UoSEFSRkJV
WlpfTkcpCisgICAgOiBtX2hhcmZidXp6RmFjZShvdGhlci5tX2hhcmZidXp6RmFjZSkKKyNlbmRp
ZgogewogICAgICp0aGlzID0gb3RoZXI7CiAKQEAgLTIxNyw2ICsyMjcsMTYgQEAgRm9udFBsYXRm
b3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9k
ZXN0cm95KG1fc2NhbGVkRm9udCk7CiB9CiAKKyNpZiBVU0UoSEFSRkJVWlpfTkcpCitIYXJmQnV6
ek5HRmFjZSogRm9udFBsYXRmb3JtRGF0YTo6aGFyZmJ1enpGYWNlKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1faGFyZmJ1enpGYWNlKQorICAgICAgICBtX2hhcmZidXp6RmFjZSA9IEhhcmZCdXp6TkdG
YWNlOjpjcmVhdGUoY29uc3RfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odGhpcyksIGhhc2goKSk7
CisKKyAgICByZXR1cm4gbV9oYXJmYnV6ekZhY2UuZ2V0KCk7Cit9CisjZW5kaWYKKwogYm9vbCBG
b250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2goKQogewogICAgIHJldHVybiBtX2ZpeGVkV2lk
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
NTZmMmE3OTE2N2U0Y2I1OWYxOTEyZGE4MWViYmVjYzE5YjZlZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5H
RmFjZUNhaXJvLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhhcmZCdXp6TkdG
YWNlLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKKyNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgorI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8Y2Fpcm8tZnQu
aD4KKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGZyZWV0eXBlL2ZyZWV0eXBlLmg+Cisj
aW5jbHVkZSA8ZnJlZXR5cGUvdHR0YWJsZXMuaD4KKyNpbmNsdWRlIDxoYi5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWly
b0Z0RmFjZUxvY2tlciB7CitwdWJsaWM6CisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIoY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogY2Fpcm9TY2FsZWRGb250KSA6IG1fc2NhbGVkRm9udChjYWlyb1NjYWxlZEZv
bnQpIHsgfTsKKyAgICBGVF9GYWNlIGxvY2soKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhaXJv
X2Z0X3NjYWxlZF9mb250X2xvY2tfZmFjZShtX3NjYWxlZEZvbnQpOworICAgIH07CisgICAgfkNh
aXJvRnRGYWNlTG9ja2VyKCkKKyAgICB7CisgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3Vu
bG9ja19mYWNlKG1fc2NhbGVkRm9udCk7CisgICAgfQorcHJpdmF0ZToKKyAgICBjYWlyb19zY2Fs
ZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Cit9OworCitzdGF0aWMgaGJfcG9zaXRpb25fdCBmbG9h
dFRvSGFyZkJ1enpQb3NpdGlvbihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aGJfcG9zaXRpb25fdD4odmFsdWUgKiAoMSA8PCAxNikpOworfQorCitzdGF0aWMgaGJfcG9z
aXRpb25fdCBkb3VibGVUb0hhcmZCdXp6UG9zaXRpb24oZG91YmxlIHZhbHVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxoYl9wb3NpdGlvbl90Pih2YWx1ZSAqICgxIDw8IDE2KSk7Cit9CisK
K3N0YXRpYyB2b2lkIENhaXJvR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoY2Fpcm9fc2NhbGVkX2Zv
bnRfdCogc2NhbGVkRm9udCwgaGJfY29kZXBvaW50X3QgY29kZXBvaW50LCBoYl9wb3NpdGlvbl90
KiBhZHZhbmNlLCBoYl9nbHlwaF9leHRlbnRzX3QqIGV4dGVudHMpCit7CisgICAgY2Fpcm9fdGV4
dF9leHRlbnRzX3QgZ2x5cGhFeHRlbnRzOworICAgIGNhaXJvX2dseXBoX3QgZ2x5cGg7CisgICAg
Z2x5cGguaW5kZXggPSBjb2RlcG9pbnQ7CisgICAgZ2x5cGgueCA9IDA7CisgICAgZ2x5cGgueSA9
IDA7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyhzY2FsZWRGb250LCAmZ2x5
cGgsIDEsICZnbHlwaEV4dGVudHMpOworCisgICAgaWYgKGFkdmFuY2UpCisgICAgICAgICphZHZh
bmNlID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy54X2FkdmFuY2UpOwor
ICAgIGlmIChleHRlbnRzKSB7CisgICAgICAgIGV4dGVudHMtPnhfYmVhcmluZyA9IGRvdWJsZVRv
SGFyZkJ1enpQb3NpdGlvbihnbHlwaEV4dGVudHMueF9iZWFyaW5nKTsKKyAgICAgICAgZXh0ZW50
cy0+eV9iZWFyaW5nID0gZG91YmxlVG9IYXJmQnV6elBvc2l0aW9uKGdseXBoRXh0ZW50cy55X2Jl
YXJpbmcpOworICAgICAgICBleHRlbnRzLT53aWR0aCA9IGRvdWJsZVRvSGFyZkJ1enpQb3NpdGlv
bihnbHlwaEV4dGVudHMud2lkdGgpOworICAgICAgICBleHRlbnRzLT5oZWlnaHQgPSBkb3VibGVU
b0hhcmZCdXp6UG9zaXRpb24oZ2x5cGhFeHRlbnRzLmhlaWdodCk7CisgICAgfQorfQorCitzdGF0
aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGgoaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZv
bnREYXRhLCBoYl9jb2RlcG9pbnRfdCB1bmljb2RlLCBoYl9jb2RlcG9pbnRfdCB2YXJpYXRpb25T
ZWxlY3RvciwgaGJfY29kZXBvaW50X3QqIGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBG
b250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0
Zm9ybURhdGEqPihmb250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9u
dCA9IHBsYXRmb3JtRGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsK
KyAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihzY2FsZWRGb250KTsKKyAg
ICBGVF9GYWNlIGZ0RmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmxvY2soKTsKKyAgICBBU1NFUlQo
ZnRGYWNlKTsKKyAgICAqZ2x5cGggPSBGVF9HZXRfQ2hhcl9JbmRleChmdEZhY2UsIHVuaWNvZGUp
OworICAgIHJldHVybiAhISpnbHlwaDsKK30KKworc3RhdGljIGhiX3Bvc2l0aW9uX3QgaGFyZmJ1
enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlKGhiX2ZvbnRfdCogaGJGb250LCB2b2lkKiBmb250
RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIEZvbnRQ
bGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3Jt
RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0g
cGxhdGZvcm1EYXRhLT5zY2FsZWRGb250KCk7CisgICAgQVNTRVJUKHNjYWxlZEZvbnQpOworCisg
ICAgaGJfcG9zaXRpb25fdCBhZHZhbmNlID0gMDsKKyAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRF
eHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAmYWR2YW5jZSwgMCk7CisgICAgcmV0dXJuIGFkdmFu
Y2U7Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmln
aW4oaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlw
aCwgaGJfcG9zaXRpb25fdCogeCwgaGJfcG9zaXRpb25fdCogeSwgdm9pZCogdXNlckRhdGEpCit7
CisgICAgLy8gSnVzdCByZXR1cm4gdHJ1ZSwgZm9sbG93aW5nIHRoZSB3YXkgdGhhdCBIYXJmYnV6
ei1GcmVlVHlwZQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRvZXMuCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMoaGJfZm9udF90
KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgaGJfZ2x5cGhf
ZXh0ZW50c190KiBleHRlbnRzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1E
YXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihm
b250RGF0YSk7CisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRmb3Jt
RGF0YS0+c2NhbGVkRm9udCgpOworICAgIEFTU0VSVChzY2FsZWRGb250KTsKKworICAgIENhaXJv
R2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoc2NhbGVkRm9udCwgZ2x5cGgsIDAsIGV4dGVudHMpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaGJfZm9udF9mdW5jc190KiBoYXJmYnV6ekNh
aXJvVGV4dEdldEZvbnRGdW5jcygpCit7CisgICAgc3RhdGljIGhiX2ZvbnRfZnVuY3NfdCogaGFy
ZmJ1enpDYWlyb0ZvbnRGdW5jcyA9IDA7CisKKyAgICAvLyBXZSBkb24ndCBzZXQgY2FsbGJhY2sg
ZnVuY3Rpb25zIHdoaWNoIHdlIGNhbid0IHN1cHBvcnQuCisgICAgLy8gSGFyZmJ1enogd2lsbCB1
c2UgdGhlIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlmIHRoZXkgYXJlbid0IHNldC4KKyAgICBp
ZiAoIWhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpIHsKKyAgICAgICAgaGFyZmJ1enpDYWlyb0ZvbnRG
dW5jcyA9IGhiX2ZvbnRfZnVuY3NfY3JlYXRlKCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0
X2dseXBoX2Z1bmMoaGFyZmJ1enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaCwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfYWR2YW5jZV9mdW5jKGhhcmZi
dXp6Q2Fpcm9Gb250RnVuY3MsIGhhcmZidXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSwgMCwg
MCk7CisgICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfb3JpZ2luX2Z1bmMoaGFyZmJ1
enpDYWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEhvcml6b250YWxPcmlnaW4sIDAsIDAp
OworICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9leHRlbnRzX2Z1bmMoaGFyZmJ1enpD
YWlyb0ZvbnRGdW5jcywgaGFyZmJ1enpHZXRHbHlwaEV4dGVudHMsIDAsIDApOworICAgICAgICBo
Yl9mb250X2Z1bmNzX21ha2VfaW1tdXRhYmxlKGhhcmZidXp6Q2Fpcm9Gb250RnVuY3MpOworICAg
IH0KKyAgICByZXR1cm4gaGFyZmJ1enpDYWlyb0ZvbnRGdW5jczsKK30KKworc3RhdGljIGhiX2Js
b2JfdCogaGFyZmJ1enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCogZmFjZSwgaGJfdGFnX3QgdGFn
LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBGb250UGxhdGZvcm1EYXRhKiBmb250ID0gcmVpbnRl
cnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4odXNlckRhdGEpOworCisgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IGZvbnQtPnNjYWxlZEZvbnQoKTsKKyAgICBpZiAoIXNj
YWxlZEZvbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fp
cm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7CisgICAgRlRfRmFjZSBmdEZvbnQgPSBjYWlyb0Z0
RmFjZUxvY2tlci5sb2NrKCk7CisgICAgaWYgKCFmdEZvbnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKKyAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xv
YWRfU2ZudF9UYWJsZShmdEZvbnQsIHRhZywgMCwgMCwgJnRhYmxlU2l6ZSk7CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEZUX0J5dGUqIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RlRfQnl0ZSo+KGZhc3RNYWxsb2ModGFibGVTaXplKSk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIEZUX1VMb25nIGV4cGVjdGVkVGFibGVTaXplID0g
dGFibGVTaXplOworICAgIGVycm9yID0gRlRfTG9hZF9TZm50X1RhYmxlKGZ0Rm9udCwgdGFnLCAw
LCBidWZmZXIsICZ0YWJsZVNpemUpOworICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhw
ZWN0ZWRUYWJsZVNpemUpIHsKKyAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGhiX2Jsb2JfY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlciksIHRhYmxlU2l6ZSwgSEJfTUVNT1JZX01PREVfV1JJVEFC
TEUsIGJ1ZmZlciwgZmFzdEZyZWUpOworfQorCitoYl9mYWNlX3QqIEhhcmZCdXp6TkdGYWNlOjpj
cmVhdGVGYWNlKCkKK3sKKyAgICBoYl9mYWNlX3QqIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZV9mb3Jf
dGFibGVzKGhhcmZidXp6Q2Fpcm9HZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIEFT
U0VSVChmYWNlKTsKKyAgICByZXR1cm4gZmFjZTsKK30KKworaGJfZm9udF90KiBIYXJmQnV6ek5H
RmFjZTo6Y3JlYXRlRm9udCgpCit7CisgICAgaGJfZm9udF90KiBmb250ID0gaGJfZm9udF9jcmVh
dGUobV9mYWNlKTsKKyAgICBoYl9mb250X3NldF9mdW5jcyhmb250LCBoYXJmYnV6ekNhaXJvVGV4
dEdldEZvbnRGdW5jcygpLCBtX3BsYXRmb3JtRGF0YSwgMCk7CisgICAgY29uc3QgZmxvYXQgc2l6
ZSA9IG1fcGxhdGZvcm1EYXRhLT5zaXplKCk7CisgICAgaWYgKGZsb29yZihzaXplKSA9PSBzaXpl
KQorICAgICAgICBoYl9mb250X3NldF9wcGVtKGZvbnQsIHNpemUsIHNpemUpOworICAgIGludCBz
Y2FsZSA9IGZsb2F0VG9IYXJmQnV6elBvc2l0aW9uKHNpemUpOworICAgIGhiX2ZvbnRfc2V0X3Nj
YWxlKGZvbnQsIHNjYWxlLCBzY2FsZSk7CisgICAgaGJfZm9udF9tYWtlX2ltbXV0YWJsZShmb250
KTsKKyAgICByZXR1cm4gZm9udDsKK30KKworR2x5cGhCdWZmZXJBZHZhbmNlIEhhcmZCdXp6U2hh
cGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkK
K3sKKyAgICByZXR1cm4gR2x5cGhCdWZmZXJBZHZhbmNlKHdpZHRoLCBoZWlnaHQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCAyZmE5NTFlNTQzYWI0
NWU4M2NkYTE2NzRhYTU4NDZhNGNlZjZhYTQ0Li4wMzc5N2EzNzRmNmU0YmUyYmJiNWQwZGNkMzY0
NTllYjExMjE1NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTI5LDYgKzI5LDggQEAgU0VUKFdl
YktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2Fu
aW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29y
ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3FsIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApp
bmRleCAyNWNkMTM5YzE3ZTllNWQ2OGM4OTA1YjU0MGFiYmQ1NWEyYjI1YWZhLi5hOTVlYmExMTlk
ZDM0NTBlMDQxMWI4MzRlM2Q5Y2ZjY2I5ODE2ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
NjksNiArNjksOCBAQCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6IgorICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZyIKICAgICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3Fs
IgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRIYXJmQnV6ei5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9GaW5kSGFyZkJ1enouY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE5OTAxOWI1Y2M0NjhmNjk3Zjgz
ZjBlNDU4MjU5ZmE1MDEyMGUzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5k
SGFyZkJ1enouY21ha2UKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTIsIElu
dGVsIENvcnBvcmF0aW9uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyMK
KyMgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyMgICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisjICAgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbgorIyAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorIyAgIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK
KyMgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRQorIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQorIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMKKworSU5DTFVERShGaW5kUGtn
Q29uZmlnKQorCitQS0dfQ0hFQ0tfTU9EVUxFUyAoaGFyZmJ1enogUkVRVUlSRUQgaGFyZmJ1eno+
PTAuOS4wKQorCitQS0dfQ0hFQ0tfTU9EVUxFUyhQQ19IQVJGQlVaWiBoYXJmYnV6ej49MC45LjAp
CisKK0ZJTkRfUEFUSChIQVJGQlVaWl9JTkNMVURFX0RJUlMgTkFNRVMgaGIuaAorICBISU5UUyAk
e1BDX0hBUkZCVVpaX0lOQ0xVREVfRElSU30gJHtQQ19IQVJGQlVaWl9JTkNMVURFRElSfQorKQor
CitGSU5EX0xJQlJBUlkoSEFSRkJVWlpfTElCUkFSSUVTIE5BTUVTIGhhcmZidXp6CisgIEhJTlRT
ICR7UENfSEFSRkJVWlpfTElCUkFSWV9ESVJTfSAke1BDX0hBUkZCVVpaX0xJQkRJUn0KKykKKwor
SU5DTFVERShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK0ZJTkRfUEFDS0FHRV9IQU5E
TEVfU1RBTkRBUkRfQVJHUyhIYXJmQnV6eiBERUZBVUxUX01TRyBIQVJGQlVaWl9JTkNMVURFX0RJ
UlMgSEFSRkJVWlpfTElCUkFSSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNF
ZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAxYmY3MWY4MTFh
MTAyODk3M2YyN2QwMTEyNWExZWNiOWQxNWUwYjZmLi4xZjJhNjc0NzZmNThlOGZjNjc1ZGFlODU0
ZTQ4MGE3YmI4ZWE0Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtMTE5LDggKzExOSwxMSBA
QCBFTkRJRiAoKQogCiBJRiAoRk9OVF9CQUNLRU5EIFNUUkVRVUFMICJmcmVldHlwZSIpCiAgIEZJ
TkRfUEFDS0FHRShGcmVldHlwZSBSRVFVSVJFRCkKKyAgRklORF9QQUNLQUdFKEhhcmZCdXp6IFJF
UVVJUkVEKQogICBTRVQoV1RGX1VTRV9GUkVFVFlQRSAxKQorICBTRVQoV1RGX1VTRV9IQVJGQlVa
Wl9ORyAxKQogICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0ZSRUVUWVBFPTEpCisgIEFERF9E
RUZJTklUSU9OUygtRFdURl9VU0VfSEFSRkJVWlpfTkc9MSkKIEVMU0UgKCkKICAgRklORF9QQUNL
QUdFKFBhbmdvIFJFUVVJUkVEKQogICBTRVQoV1RGX1VTRV9QQU5HTyAxKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyOGRlOGEwN2NmZTRkZmMx
ZTkwYzk3MTAwZjJmMzkxZGU5NWEwYTkuLmI3ZDI4ZDcyOTcyMDZkNGViYzA0ZWY2NzkwOWEwOGVk
ZjI2OTMwNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yNCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9t
aW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorCisgICAgICAgIFtDYWlyb10gQWRkIGNvbXBsZXgg
Zm9udCBkcmF3aW5nIHVzaW5nIEhhcmZidXp6TkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4gYW5kIE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICBCcmluZ2luZyBIYXJmYnV6
eiBzdXBwb3J0IHRvIEVGTCB3aXRoIHRoaXMgcGF0Y2gsIHNvIHdlIG5lZWQgSGFyZkJ1enogaW4g
dGhlIHB1bGxlZCBpbiBqaGJ1aWxkIGRlcGVuZGVuY2llcy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGluZyBhZGRpdGlvbmFsIGhlYWRlciBpbmNsdWRl
IGRpcmVjdG9yaWVzLgorICAgICAgICAqIGVmbC9qaGJ1aWxkLm1vZHVsZXM6IEFkZGluZyBzb3Vy
Y2UgZm9yIEhhcmZCdXp6IHJlbGVhc2UgdmVyc2lvbiAwLjkuMC4KKwogMjAxMi0wNy0yNyAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBS
RUdSRVNTSU9OKHIxMTkxMjcpOiByZXNldHRpbmcgd2luZG93LmludGVybmFscyBzZXR0aW5ncyBi
ZXR3ZWVuIHRlc3RzIGRvZXNuJ3Qgd29yayBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01h
a2VMaXN0cy50eHQKaW5kZXggNGNjMDUwMTUwMzQ3OWU1ZTJlMmFjYjljOTVkZTNiODQ2MzJlNzI1
ZS4uYmFkYzJjNDcxZmE3ZTg0OTViZjU1MWRlNDg5YzFkMGFiNGRhYjAxOSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw4IEBAIFNFVChXZWJLaXRUZXN0
UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCiAg
ICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0KICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcworICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6Cisg
ICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcKICAgICAke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
dGV4dAogICAgICR7V0VCQ09SRV9ESVJ9L3Rlc3RpbmcvanMKZGlmZiAtLWdpdCBhL1Rvb2xzL2Vm
bC9qaGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzCmluZGV4IDdhNzkw
MjM1NDJjZmEyMjNkNjBiZTg0Y2E5MzQzNjE3MmNhNTlmYzkuLmM4ODM0ODhjN2M2Mjk0NmZmYjZk
OTkyNTI3MGI4MGRkN2Y4MTU4MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVs
ZXMKKysrIGIvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcwpAQCAtOSw2ICs5LDcgQEAKICAgICAg
IDxkZXAgcGFja2FnZT0iZm9udHMiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZm9udGNvbmZpZyIv
PgogICAgICAgPGRlcCBwYWNrYWdlPSJmcmVldHlwZTYiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0i
aGFyZmJ1enoiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgICAgPGRlcCBwYWNr
YWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGlic291cCIvPgpA
QCAtMTYwLDYgKzE2MSwxNSBAQAogICAgIDwvYnJhbmNoPgogICA8L2F1dG90b29scz4KIAorIDxh
dXRvdG9vbHMgaWQ9ImhhcmZidXp6IiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiPgorICAgPGJyYW5j
aCBtb2R1bGU9InNvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvaGFyZmJ1enotMjAxMjA2MjcudGFy
LmJ6MiIgdmVyc2lvbj0iMC45LjAiCisgICAgICAgICAgIGNoZWNrb3V0ZGlyPSJoYXJmYnV6ei0w
LjkuMCIKKyAgICAgICAgICAgcmVwbz0iZnJlZWRlc2t0b3Aub3JnIgorICAgICAgICAgICBoYXNo
PSJzaGEyNTY6NTYyYTE4N2I4NGEyYjViZDM4Zjg3ZTg5OGY1ZjE4YWE5MThhNDFkYjYyYWRiYzE3
ZjZmY2ZkOGZhMTc1NTQ4NSIKKyAgICAgICAgICAgbWQ1c3VtPSIxOGU2YThkODQ3MjU5NDQxNzIz
YTI2ZTI5OTc5MmQ1NSI+CisgICA8L2JyYW5jaD4KKyA8L2F1dG90b29scz4KKwogICA8YXV0b3Rv
b2xzIGlkPSJlaW5hIiA+CiAgICAgPGJyYW5jaCBtb2R1bGU9ImVpbmEiCiAgICAgICAgICAgICBy
ZXBvPSJlbmxpZ2h0ZW5tZW50Lm9yZyIKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCBmYzIxMzllYmI2YTk2ZDJiODUxY2ZmMWM4NmIyOWE3YzFhNWM5ODEwLi41NDQ2MzFl
MTc0MjlkNTU5MTY5MDJkZGE0ZWE1MjE3YjFhYzY0NTRhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cK
KysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMjQgIERvbWluaWsgUsO2
dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9d
IEFkZCBjb21wbGV4IGZvbnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uIGFuZCBNYXJ0aW4gUm9iaW5zb24uCisKKyAgICAgICAgQ29u
ZmlndXJpbmcgRnJlZXR5cGUgYmFja2VuZCB0byB1c2UgSGFyZkJ1enogYnkgZGVmYXVsdC4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kSGFyZkJ1enouY21ha2U6IEFkZGVkIHBrZ2NvbmZp
ZyBiYXNlZCBkaXNjb3Zlcnkgb2YgSGFyZkJ1enouCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNFZmwuY21ha2U6IEFkZGluZyBIYXJmYnV6eiBjb25maWd1cmF0aW9uLgorCiAyMDEyLTA3
LTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlbiBTYWZh
cmkgNiBpcyBsYXVuY2hlZCB2aWEgdGhlIFdlYktpdCBYY29kZSB3b3Jrc3BhY2UsIGl0IGRvZXMg
bm90IGxpbmsgYWdhaW5zdCB0aGUgYnVpbHQgZnJhbWV3b3Jrcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155271</attachid>
            <date>2012-07-30 05:40:30 -0700</date>
            <delta_ts>2012-08-02 06:28:40 -0700</delta_ts>
            <desc>Using cairo_scaled_font approach, cleanup for FindHarfbuzz</desc>
            <filename>bug-91864-20120730154233.patch</filename>
            <type>text/plain</type>
            <size>4183</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU1NjZmNjVmOWMzYzA5
NTZkNWYwMTRkMTc2YTZlOTJjYjkwZTE5ZS4uZDNhODE4ZGVjYmYzOWM4NDRlNGRlOWEyZmRiYjAx
ODk5YzQ4YzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA3LTMwICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IHRo
ZSBGcmVldHlwZSBiYXNlZCBhcHByb2FjaCB0aGF0IGF2b2lkcyBhbGxvY2F0aW9ucyBhbmQgVVRG
OCBjb252ZXJzaW9uCisgICAgICAgIGZhaWxzIHRvIHByb2N1ZGUgY29ycmVjdCByZXN1bHRzIGZv
ciBzb21lIHRlc3RzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXQgbGVhc3QKKyAgICAgICAg
ICBmYXN0L2RvbS81Mjc3Ni5odG1sCisgICAgICAgICAgZmFzdC90ZXh0L2F0c3VpLW5lZ2F0aXZl
LXNwYWNpbmctZmVhdHVyZXMuaHRtbAorICAgICAgICAgIGZhc3QvdGV4dC9hdHN1aS1zcGFjaW5n
LWZlYXR1cmVzLmh0bWwKKyAgICAgICAgZXhwb3NlIHRoaXMgcHJvYmxlbS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6IFJldmVydCB0byBpbml0aWFsIGNh
aXJvX3NjYWxlZF9mb250IGJhc2VkIGFwcHJvYWNoLgorCiAyMDEyLTA3LTI2ICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1v
dmUgU3RyaW5nSW1wbCBzaXplIGNhbGN1bGF0aW9uIHRvIFN0cmluZ0ltcGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdG
YWNlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
bmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKaW5kZXggOGM1NmYyYTc5MTY3ZTRjYjU5ZjE5MTJk
YTgxZWJiZWNjMTliNmVlMC4uMDQxNDk1MzdlNDYwZmNiNGYxZDZmZTdjNjg4MzQ2NzA0NjYxYzM1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
bmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VDYWlyby5jcHAKQEAgLTk1LDExICs5
NSwxOSBAQCBzdGF0aWMgaGJfYm9vbF90IGhhcmZidXp6R2V0R2x5cGgoaGJfZm9udF90KiBoYkZv
bnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbgogICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBs
YXRmb3JtRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KGZvbnREYXRh
KTsKICAgICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gcGxhdGZvcm1EYXRhLT5z
Y2FsZWRGb250KCk7CiAgICAgQVNTRVJUKHNjYWxlZEZvbnQpOwotICAgIENhaXJvRnRGYWNlTG9j
a2VyIGNhaXJvRnRGYWNlTG9ja2VyKHNjYWxlZEZvbnQpOwotICAgIEZUX0ZhY2UgZnRGYWNlID0g
Y2Fpcm9GdEZhY2VMb2NrZXIubG9jaygpOwotICAgIEFTU0VSVChmdEZhY2UpOwotICAgICpnbHlw
aCA9IEZUX0dldF9DaGFyX0luZGV4KGZ0RmFjZSwgdW5pY29kZSk7Ci0gICAgcmV0dXJuICEhKmds
eXBoOworCisgICAgY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7
CisgICAgY2Fpcm9fZ2x5cGhfdCogZ2x5cGhzID0gMDsKKyAgICBpbnQgbnVtR2x5cGhzID0gMDsK
KyAgICBDU3RyaW5nIHV0ZjhDb2RlcG9pbnQgPSBVVEY4RW5jb2RpbmcoKS5lbmNvZGUocmVpbnRl
cnByZXRfY2FzdDxVQ2hhcio+KCZ1bmljb2RlKSwgMSwgUXVlc3Rpb25NYXJrc0ZvclVuZW5jb2Rh
Ymxlcyk7CisgICAgc3RhdHVzID0gY2Fpcm9fc2NhbGVkX2ZvbnRfdGV4dF90b19nbHlwaHMoc2Nh
bGVkRm9udCwgMCwgMCwgdXRmOENvZGVwb2ludC5kYXRhKCksIHV0ZjhDb2RlcG9pbnQubGVuZ3Ro
KCksICZnbHlwaHMsICZudW1HbHlwaHMsIDAsIDAsIDApOworICAgIGlmIChzdGF0dXMgIT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChu
dW1HbHlwaHMgPiAwKTsKKyAgICAqZ2x5cGggPSBnbHlwaHNbMF0uaW5kZXg7CisgICAgY2Fpcm9f
Z2x5cGhfZnJlZShnbHlwaHMpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaGJfcG9z
aXRpb25fdCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90KiBoYkZv
bnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgdm9pZCogdXNlckRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlIGIvU291cmNlL2Nt
YWtlL0ZpbmRIYXJmQnV6ei5jbWFrZQppbmRleCA4YTk5MDE5YjVjYzQ2OGY2OTdmODNmMGU0NTgy
NTlmYTUwMTIwZTNlLi5hMzQ4ODc5MmFkMDVkY2Y1MjE0ZTY1NjgwOWQzZTMyYzY3OGRlMTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9GaW5kSGFyZkJ1enouY21ha2UKQEAgLTI0LDEyICsyNCwxNCBAQAogIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRQogIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICMKKyMgVHJ5IHRvIGZpbmQg
SGFyZmJ1enogaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KICMKKyMgQWZ0ZXIgc3Vj
Y2Vzc2Z1bCBkaXNjb3ZlcnksIHRoaXMgd2lsbCBzZXQgZm9yIGluY2x1c2lvbiB3aGVyZSBuZWVk
ZWQ6CisjIEhBUkZCVVpaX0lOQ0xVREVfRElSUyAtIGNvbnRhaW5nIHRoZSBIYXJmQnV6eiBoZWFk
ZXJzCisjIEhBUkZCVVpaX0xJQlJBUklFUyAtIGNvbnRhaW5nIHRoZSBIYXJmQnV6eiBsaWJyYXJ5
CiAKIElOQ0xVREUoRmluZFBrZ0NvbmZpZykKIAotUEtHX0NIRUNLX01PRFVMRVMgKGhhcmZidXp6
IFJFUVVJUkVEIGhhcmZidXp6Pj0wLjkuMCkKLQogUEtHX0NIRUNLX01PRFVMRVMoUENfSEFSRkJV
WlogaGFyZmJ1eno+PTAuOS4wKQogCiBGSU5EX1BBVEgoSEFSRkJVWlpfSU5DTFVERV9ESVJTIE5B
TUVTIGhiLmgKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyZDc2MTUy
YTAxOWEzOTA0NWVkOWRkMmUwNWY4YmEzMzNkOWQyYmI4Li43MjlhNTk3MzQ1OTFhMmJkMmIwMWFi
ZTA5ODBhNTM3NzM4YzM4M2YxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMzAgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWlu
aWsucm90dHNjaGVzQGludGVsLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIEFkZCBjb21wbGV4IGZv
bnQgZHJhd2luZyB1c2luZyBIYXJmYnV6ek5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTg2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENsZWFudXAsIGFmdGVyIGR1cGxpY2F0ZSBsaW5lIHdhcyBhY2Np
ZGVudGFsbHkgbGVmdCBpbiBhbmQgZG9jdW1lbnRhdGlvbiB3YXNuJ3QgYWRkZWQgYXMgaW50ZW5k
ZWQuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEhhcmZCdXp6LmNtYWtlOgorCiAyMDEy
LTA3LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJlc291cmNlIGFnZW50J3MgcmVmZXJlbmNlIHRvIGNhY2hlZCByZXNv
dXJjZXMgc2hvdWxkIGJlIHdlYWsuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156067</attachid>
            <date>2012-08-02 06:28:53 -0700</date>
            <delta_ts>2012-08-02 07:21:27 -0700</delta_ts>
            <desc>Using cairo_scaled_font approach, review comments addressed</desc>
            <filename>bug-91864-20120802163055.patch</filename>
            <type>text/plain</type>
            <size>47024</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhlMGYxMzI4YmE1YWJk
OTEyZTgzZGU3YTRhYWUyMDg1NDFmZTBlMS4uZTM2YmQ1NmZjZTBhNjg5MDAxMmMzMTIyMGRlNWY3
MTg3NDUzMGIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA3LTMwICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFyZmJ1enpORworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IHRo
ZSBGcmVldHlwZSBiYXNlZCBhcHByb2FjaCB0aGF0IGF2b2lkcyBhbGxvY2F0aW9ucyBhbmQgVVRG
OCBjb252ZXJzaW9uCisgICAgICAgIGZhaWxzIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGZv
ciBzb21lIHRlc3RzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYXQgbGVhc3QKKyAgICAgICAg
ICBmYXN0L2RvbS81Mjc3Ni5odG1sCisgICAgICAgICAgZmFzdC90ZXh0L2F0c3VpLW5lZ2F0aXZl
LXNwYWNpbmctZmVhdHVyZXMuaHRtbAorICAgICAgICAgIGZhc3QvdGV4dC9hdHN1aS1zcGFjaW5n
LWZlYXR1cmVzLmh0bWwKKyAgICAgICAgZXhwb3NlIHRoaXMgcHJvYmxlbS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6TkdGYWNlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aGFyZmJ1enpHZXRHbHlwaCk6IFJldmVydCB0byBpbml0aWFsIGNh
aXJvX3NjYWxlZF9mb250IGJhc2VkIGFwcHJvYWNoLgorCiAyMDEyLTA4LTAyICBUb21teSBXaWRl
bmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTog
QWRkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciBpbmZyYXN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0Zh
Y2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcAppbmRleCA4YzU2ZjJhNzkxNjdlNGNiNTlmMTkxMmRh
ODFlYmJlY2MxOWI2ZWUwLi4wZjliYjQzMmM1MWUyY2IzNmUxOWU2MWY2ZTIwZDljYTAxZjgxNDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZUNhaXJvLmNwcApAQCAtOTUsMTEgKzk1
LDE3IEBAIHN0YXRpYyBoYl9ib29sX3QgaGFyZmJ1enpHZXRHbHlwaChoYl9mb250X3QqIGhiRm9u
dCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2luCiAgICAgRm9udFBsYXRmb3JtRGF0YSogcGxh
dGZvcm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEp
OwogICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNj
YWxlZEZvbnQoKTsKICAgICBBU1NFUlQoc2NhbGVkRm9udCk7Ci0gICAgQ2Fpcm9GdEZhY2VMb2Nr
ZXIgY2Fpcm9GdEZhY2VMb2NrZXIoc2NhbGVkRm9udCk7Ci0gICAgRlRfRmFjZSBmdEZhY2UgPSBj
YWlyb0Z0RmFjZUxvY2tlci5sb2NrKCk7Ci0gICAgQVNTRVJUKGZ0RmFjZSk7Ci0gICAgKmdseXBo
ID0gRlRfR2V0X0NoYXJfSW5kZXgoZnRGYWNlLCB1bmljb2RlKTsKLSAgICByZXR1cm4gISEqZ2x5
cGg7CisKKyAgICBjYWlyb19nbHlwaF90KiBnbHlwaHMgPSAwOworICAgIGludCBudW1HbHlwaHMg
PSAwOworICAgIENTdHJpbmcgdXRmOENvZGVwb2ludCA9IFVURjhFbmNvZGluZygpLmVuY29kZShy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oJnVuaWNvZGUpLCAxLCBRdWVzdGlvbk1hcmtzRm9yVW5l
bmNvZGFibGVzKTsKKyAgICBpZiAoQ0FJUk9fU1RBVFVTX1NVQ0NFU1MgIT0gY2Fpcm9fc2NhbGVk
X2ZvbnRfdGV4dF90b19nbHlwaHMoc2NhbGVkRm9udCwgMCwgMCwgdXRmOENvZGVwb2ludC5kYXRh
KCksIHV0ZjhDb2RlcG9pbnQubGVuZ3RoKCksICZnbHlwaHMsICZudW1HbHlwaHMsIDAsIDAsIDAp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFudW1HbHlwaHMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAqZ2x5cGggPSBnbHlwaHNbMF0uaW5kZXg7CisgICAgY2Fpcm9fZ2x5
cGhfZnJlZShnbHlwaHMpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaGJfcG9zaXRp
b25fdCBoYXJmYnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90KiBoYkZvbnQs
IHZvaWQqIGZvbnREYXRhLCBoYl9jb2RlcG9pbnRfdCBnbHlwaCwgdm9pZCogdXNlckRhdGEpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNzgwYWVlYjc0ZjBjMjUzY2M0NmVhYTczZDIwMTJkZjg1YmRiODgxNi4uNzM5YWQ0MDQz
NDI5M2ZkODJhNmI4NGM5ZjdhZDk5ZDRkYjgxYzk3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEyLTA4LTAyICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5j
b20+CisKKyAgICAgICAgW0NhaXJvXSBBZGQgY29tcGxleCBmb250IGRyYXdpbmcgdXNpbmcgSGFy
ZmJ1enpORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE4NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
bnNraXBwaW5nIHRlc3RzLCBub3cgcGFzc2luZyB3aXRoIHZhbGlkIGNvbXBsZXggZm9udCByZXN1
bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vZWZsL2Zhc3QvdGV4dC9hdHN1aS1wb2ludHRvb2Zmc2V0LWNhbGxzLWNnLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvdGV4dC1zcGxpY2VkLWZvbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9lZmwvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGV4dC1zcGxpY2VkLWZvbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wOC0wMiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCwgbWFyayAzIDQw
NC1yZWxhdGVkIGFwcGNhY2hlIHRlc3RzIGFzIFRFWFQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVlMWUyZmM4NGY3ZDY0OGJiMjc2YTQ0MmVlZjU5MDhh
NDA5NTc2MDIuLmVlMjcxMzhhMjNjMmQ3NGQ2MTliMTg1MDBiZGMyZjQ5YTAwNmFjZTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTksMTMgKzM1OSw2
IEBAIEJVR1dLODQ1OTMgOiBhbmltYXRpb25zL2FuaW1hdGlvbi1hcGktMS5odG1sID0gVEVYVAog
QlVHV0tFRkwgU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiID0gUEFTUwogQlVHV0tFRkwgU0tJUCA6
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYiA9IFBBU1MKIAotLy8gaGFyZmJ1enpHZXRH
bHlwaCBpcyBwcm9kdWNpbmcgaW5jb3JyZWN0IHJlc3VsdHMuCi1CVUdXSzkxODY0IDogZmFzdC9k
b20vNTI3NzYuaHRtbCA9IFRFWFQKLUJVR1dLOTE4NjQgOiBmYXN0L3RleHQvYXRzdWktbmVnYXRp
dmUtc3BhY2luZy1mZWF0dXJlcy5odG1sID0gVEVYVAotQlVHV0s5MTg2NCA6IGZhc3QvdGV4dC9h
dHN1aS1wb2ludHRvb2Zmc2V0LWNhbGxzLWNnLmh0bWwgPSBURVhUCi1CVUdXSzkxODY0IDogZmFz
dC90ZXh0L2F0c3VpLXNwYWNpbmctZmVhdHVyZXMuaHRtbCA9IFRFWFQKLUJVR1dLOTE4NjQgOiBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNwbGljZWQtZm9udC5odG1sID0gTUlTU0lORwot
CiAvLyBRdW90YSBBUEkgaXMgbm90IHN1cHBvcnRlZC4KIEJVR1dLRUZMIFNLSVAgOiBzdG9yYWdl
L3N0b3JhZ2VpbmZvLW1pc3NpbmctYXJndW1lbnRzLmh0bWwgPSBQQVNTCiBCVUdXS0VGTCBTS0lQ
IDogc3RvcmFnZS9zdG9yYWdlaW5mby1uby1jYWxsYmFja3MuaHRtbCA9IFBBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3RleHQvYXRzdWktcG9pbnR0b29mZnNl
dC1jYWxscy1jZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC90
ZXh0L2F0c3VpLXBvaW50dG9vZmZzZXQtY2FsbHMtY2ctZXhwZWN0ZWQudHh0CmluZGV4IGU2MWI2
N2JkMTMxZTBiMTA2MjM0NTFlNGVmZDA4MDlhYTA0ZjliNjUuLmY5YTQ4MzdjMjFhYWQ3NWJkMGE1
ZjNmMjNmNmY5M2IxNTRlYjFiMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9mYXN0L3RleHQvYXRzdWktcG9pbnR0b29mZnNldC1jYWxscy1jZy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvdGV4dC9hdHN1aS1wb2ludHRvb2Zmc2V0
LWNhbGxzLWNnLWV4cGVjdGVkLnR4dApAQCAtMTYsNCArMTYsNCBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA2MjogImNv
ZGUgcGF0aCIKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MiwxOCkgc2l6ZSA2MzJ4
MTkKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjIsMTgpIHdpZHRoIDYzMjogIiBieSBjbGlja2lu
ZyB0aGUgWCBhbmQgdmVyaWZ5aW5nIHRoYXQgdGhlIGNvcnJlY3QgY2FyZXQgcG9zaXRpb24gKDEz
KSBpcyByZXBvcnRlZCB0byB0aGUgZWRpdGluZyBkZWxlZ2F0ZS4iCi1jYXJldDogcG9zaXRpb24g
MTEgb2YgY2hpbGQgMiB7I3RleHR9IG9mIGJvZHkKK2NhcmV0OiBwb3NpdGlvbiAxMyBvZiBjaGls
ZCAyIHsjdGV4dH0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RleHQtc3BsaWNlZC1mb250LWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNw
bGljZWQtZm9udC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q5ZTZkMmRlMmNiZjIzZmI2Y2Zl
OGZlZDQxYjgzY2M3NzZkNjAyMwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzU3MjgKemNtY0ck
MXo0OHQpLUIzc3FNey1xM0pNQVdxTGZtSzU9dSNUSCVOeWxBcUByP3BwPz1lZl47ezYwdjBHRzRi
bGNrCnpOciE7TTg0cWklZWZIVnNJQGtIbi11dGxEXj9+cmxeRkheeT1OeG00RzREcjtAPmxvbnJy
QXdHTGI2diVRY1JoSQp6V2F8a01rfWFCflRreEFobCFzMj8raTZFfU9+LTIlcnFgPztvTlAoPl88
NlhEdUpMZGdvQU1aJjdAM35zR0M2MCYKeiQ5TH1CYEUmZHhkPjhuNnVmRWFKJENHdiMlVWwmQiom
elArcUNEaigzQ1JmKERYfVo2RS19Q1JvSFojbUhpVENUCnplIXArWV8pNU49KlUhJXteI3FeVGxY
QW4oK2peSWAtfWBGKGBpVnI8aj1NQ0U4NVpmVHk8YHpyUW9WZHhrXkleXwp6NjZOak53dVJ+NCh1
eD1rVDwpOWVHcnl6UD1JaGZ0KXBAK3M+YE0mKWE2IVJmY2NBJX43JFlUMGFhO24pPCh0cGUKekN5
NV9PKUBfM2Z8R3teYkJOU31KenFnQ3QtSHZaQjM/Kn1rZV5RZHxxUWJZXmNqP358cEloLVBxYkJq
fC1TQFpjCnohTURycnstPlQ/ejVJSVg/TyRffmVWMmtJI1lsfGB4Jis8a212b0YtJllXcCFaJnk9
U1UpT1FsTmtVPmxjalZwNQp6YWp0OUNrR1hOPnswX2d+YHxlU0dwc2I+RHsoNWdqWGxRJWV4b3o5
RnZGVmttPHxrJW17Kz02ZF5zfW5XJmt2RGoKenp7Z3BhVkRuMkAmI3NWPm1SfEFAZGhvJXJyKzh4
RSY8NzBgN005ZlA/MmVYfW1nZVQ9KlZtVDBMPzcoKW9FPy1CCnp5X3pCKVloYE8mP21BfkM/aTN5
eU9HYHlue2Q7IVZCVkk4Z0R5c0pUaldWYjQ8Z35QIUFeVG5RZnlhZnYpWWs2YQp6d00kN3VWYEVY
Pyo0RFBDKnclZXZ0bGlFSSFTWEdtcmNgYHNXbm56fXl4cCYlcHxySEwkY1R1cUp2flJNc1NrKlYK
emg+RXRod3JYVlNGMCpAQG8wenpgeU1PeGwoWnRObU9YZ0FvOCRXK25MeFhNWXYoeChlYGZ8K2BC
SDZZLTQ7Pzt5CnpedkRyJTVpeTQ1QTY1Umw9IWJAZXt3X3xhWGxNLU5vN1I7UytTdTU8dkZZTTZg
LTN+UHxHMUVWYHl3MHQkTnY2KQp6eXYrUGF2ayFVQSNld1kxT2otSXpHJGJUJU9NKmZUXihzN0VL
THlhQHxKPikjSCNSaSU8ejBJYTVEQFY0PHc7SyMKelg2OWM8cFdhP3lgQDVlYC1+dXlxQD1TXiVX
dERNV01NNiVGUH5QPkVTTyZ8MWluYTU2T2VZekFiJGhEaz1IX3I2CnpvJGMqJTNKUjY+TCVacTRQ
TE9NQVg/MW1Wb2xmK20zcEJVMF5aeHhjdWsxbnA4YHB6Sms2IVh6YW9pclRKdn00Qwp6K1MwTm5P
ST1tZiNLSXlxUlVTKX5fJk1yY2sjJVF3RDYyLW1rI2gtWjhTMCpZN3hnTj0lRzEtJmMjZ0VDc2M7
JXAKeipvMlg4RyhJX2Nlc3kmPFlFSTFlZGBtPH0jZ0ZkWXo5TSVuUGRmJE1eYnxMfGR1S0V8U1gx
dSlYS3xZTiR9S0ZVCnotMGUkNEx1MWhTQWAhZGp4Y0JQS0BzMkZMKlNFNT12ZWNBVUhyQzFgQk98
cG1IT1oqQ2VCXiZxekpMNG4jWDBBZwp6NnVJYytSNjFQTFNQMVczSDclez5rPjsxVXB5c1hZZTAr
UzQlUk1EX2FsK28mKzFXeS13YT5uT3tmY2BZNWdxTWMKel8yYigmTHlxdipTUEclSTw0MkF9SmJs
Vi1UMSNuZEopV1d2WEolJTBZcUZSQl55JDtBdGFiMC04fj5gMFJJVilZCnpBQEB0enZVVGd2cEZi
QkM3SEUkaE9ZfnhIWkUza1IoUVJzRWJhU1pva2h7QShNPndrKm87S1J8K1N3PGxCVE1KYwp6Y3hU
fUF3UUlQMiMoOWhpQ2lZXn5OPWVEZExMTilHc2l+PVEoUn07JT9ZbnNLcUhfNWBrKl93bGwkQmZY
SnBOKz0KejFxQjdxcFZRR1o7e0FuJHlxMEgmbCNqRVlKbyQ1V3M3YDxgPWh+LSRKJT41IVlpZitO
eHB7Y2wmWVQlKk87TnlZCno7P3lmXmQramBSX3dKVUo/Jl8qNFF4bFc8KGJsVWhsPXBwblpqfGJw
bzE0NGtLMWZJbjNKUUFsPmNZTVVGTyFxMAp6anZSNFc3Kmt1Qm9ZMWk3JSUtSW0pNnQzVVV0OWs+
NiZmMSlHOWxzcS1sTDA3ZHNgNjIxP0coYmJiYF9iYkxaeykKejlWZElXKCZhMD8pKSpLVj8ldW1z
blJIVUJ5MUxyUTlrPGBZRU1GcW10UmMjMlpOLVV8SEE1dnVKflRYPmRub3BqCnp2KTcrVlRGP0Ml
JlF0dmxfUih0UjhIP1l6aygtfk45fmp2OUBXNHFBUHRXYUp1R3JoPiRId1lPTmxFNENtbHhYJgp6
UjNNIUFZYFleT0JlTSlEYEA2Ykl1UkRNRkBAMEt9VTB6O1pUVSRGVUVVYz1rRCYlVEdlIWppRXtl
QCF6MnN7NigKemJlKnBIZE56OWNjUXJMPjQjUXV7JUYxZUxZQ01EbitTKmpkI0ZEUjJFNzF6TndJ
S3Frcytqb3Ihc3kwUWRwX2YlCnpCX3QldyYoODxZVWFGM0hnQGBgSHN5O1kwQnFpfVlKbHk9K0hF
emNkI2x3ZmdBTThJKU1NKWBIWS1WS2llUFV1Xwp6WV49O31WYSkkOXI8SWl6UzclM1daKk5hZVBo
WCRsbktSUFpVSEVFZmN5aGg5cDwhYkJgLWklNCZOIXNPO0ZETEcKeldoMThCeUFKKEMoKSl5VDxo
e09uWFkwPEQjZmorMSRXbllfI0hxS195KSRSZCtgNHRrQHM8LSgpNW5oPXg5XzE2Cno2QkE9KFdU
ZDJgTj41RX5ZVlIoeDl2JlE9ZkFXc0l5ViRsVEA3aClJcTglaDgpMWomTkFCaU8ocjtVentRSGIj
SAp6QE9aNl5yaV9oUXR1KXpIdTk9eWJofWl8d0BZZVNBI3I2eGlPZERicU1rYTZ4NmU0dU9VYjBI
NnhaVGNeeTs5LSQKejkkalRAWUckVFA9YHtFYFNVJmNtNUBxUH49a2xia0dlNVRMVlcwNmA0V3RZ
OE9UcDQhNExCQzhxe1R3SElORUNkCnp7a2B3NVVBeDlSYjhfNGhwNTBHeVRiXmFvYkhSUmFhI3w+
Ul4wbTc9VGtteVB6bVZleXh4O0JMWnRmNTctelUxMgp6ZGFhY08yUD9fUj9lJnlmXjYoUFBHQnIw
cE9ocU5GdVR2QVNfYDluJE4jP0wkIWJqc2dLZmxAfW5lWSpOZ3MrWkgKelBnemBjSG9mVG1IbDZq
Kyl8Nz91Jml5bno1QnYyPnVKYCV3SVhwNmZ6Mm9sWSMrTipFVXNYLTV1aGlpYkxpRk5BCnpIKU5Q
XzRuNTw3dUVvWDBFcTZ7X3k3YzxHWFAjIWdqayYyUUdSd3FaJkNecnpHMURfTWp+K2I9PyY8c2Y7
bFhpMQp6SF52ZmUoUXVUYCVrKENGNDY1cXR7ZHcwdUNDZiNOaD19Wj95O3h7QkFqSEpQcUBiV2Nv
bm0yV3NpdlhQK0I0NWMKem0jNHw1VzxMR3g5aT0hRUd4TSNud253TEJyS0s1czcqQ3hfTmxIMihA
PUE5U1FBOUpBNmttJXE5e3YpRypnZUMtCnpMUHwjVj8wfnNtaCFXTyY5M04/VWNeU0smbXpPdFJL
fitQO1Q8OTd+OUhUSTAhfjZGTXVVQCUpZTBUdGZZYCZyNAp6ZSQtZX57SnFCa0ppTlQ0MGgoLTdZ
ZVVVTGMreD1yYiNzSmgyJFBJX29SRlRmYSE2PXMpJVAwLUZKSnpkPSgmMHYKemBQbWFvdWRBbVFk
R3cpeVUpQGxeYXBDOFUhK31UNno1bnRoSjNvSUc7ZmliOUwmZiRtRndsRXBFVlJ1ZTJZYzRHCnpE
Xz5rcU9edDw4ezwobEY/JmlFYDBOelM/YnlgJGp7ITZBLWZyKD1aQF5lbmtoRXFJbDhIP1lsdUxL
QCRVTFNHYgp6Jj4+I1NtUEJrU1B4bythNmB2cSUoOzUtQ2ZhMnVqPG4rejJ4VlFuNyFKfTRKQiEr
fU1TMlZTP2xNQHFoenJGTlMKemFmaGo+c0lYQnxJITlMQ0A3RDxZNV97PVdiIyt1ayMwN3FTJnAm
PDYqZk1MP0ozXm01SjRRPnBiPDM5Z2ZgWD97CnpwSEI2YiZhc3ojI2c2bl5VcDV5TntlVnskQEt8
ZDRAWm8xdXlsNmNjenAxR3lKOWAkT2d4IykpUGRgZ3Z5fkAtcgp6d1hYP2JzdGFTK0RZWntSS0Rt
RFZJJnc7MStDMTxMaWpyb287WEFDJFZSbWdYYX02Skl6RyVVbEtSelBRKT10WEUKeiRvU0phMEN6
MU50JnUoPEFTZjdWZFA8OGVFSDx7VTxrVV9kQHxCTUd5dTNVVUJjJGVDXmptazNTPTRXJXAkYDJz
CnorNHRJWT9wS2BtZEtZJTF6V3UxbyVRQz4xRF84RjE8Wnp9di1SPyF9bSV6cnhoN1lUdXVGaHZh
Q34wNllGeVFyZgp6OyVIQ3I4YHB4QHVVfVZJUnpeaT5EPUkyKHRnanQpPW0/QDBPX1oqIXRLO1Y4
LW5zOVhCcXthej5vSEhCSDF3Q2QKemtMbj4mKHVnWSFhQWt9KDNVODNALX5WVDMjPEQlVmVlTGZi
KyRtaFdEQkBYRV5yKkglZTA8RzlhND1GLXpfWSUtCnpMZChfKVByLWRzU084PkRyPz90RyMtSi01
am54eDlCfXx8ME9iJTJFZCN4X25PPnFJMHAlJkcxS2pKeGheZUFyWAp6IUJnXnxGRFBrZ01iZj50
TzBgIzJlUmxhbzFPZio4MyNJOSFLeS1EPypVemNqdyVrITxWZX5tJGFfTU43PGMlQkMKelc5PUQ5
bFZ8aSVQX1UoYSRaMlV+ejFDS21PWGdAPXdNREowdHh3NUNAaT5rJlFGRUtnTXg0RDxII0VEdlN7
P0piCnpjaiszb2N5cXpleCFHQXtpd3tIZ095UCtYeyNCRWNsVWBuNGo8dzIpaXI7P3hwckU4fFRU
PUEqX2podH4oI1g7OAp6T0lLcVJgSGNJT1pCWGUycSFzNzJsNkVkYj9IdTA0YFM7Zj1OXlBzbGJF
Y2lESG4qSmNNe0hIUDNwWlc+aHV2d3wKekxoYG1VPyh3bn5AKDFEOztRezEkbDsze3Y/KUUpclNY
b2N8YDh8OVhhcDdoe2FgRz9hYkwyV1JWYEYxZSg/Y3tnCnpRT308NzA4O0dUYHtkcnZ7YkF3Wjg/
JHdzS0lGJjszVU5YVTZGdHRqbWBsISt5NSgrOGpuNCZ0e2BrUy13fG1jPwp6cXJ6VHFpaT9aRyF3
KDAzZGhQbDVSeTNiJlc+eXhrXnlzJjVMQz5GYTlCUWwkV3p7TE47PkVBYjg9dHBsZDkxSDQKekJV
fXRoP1JedGNtekc/KHhlRVlFbnpgUkdETGt7dT9ONlBabj9xQF9HYyk1ZWRjVz1QO2xxNTxvfnVo
WVlhe0AwCnpxKjlFfW9qVyh4VW1rdFlEZ0ZOYT5NSC1rcn5SVk4rdEVHdnUpSCskKHVDODwkT3Qp
LTIjSXZINDIwIUtCVTV8Iwp6aSExbENefj12VisxbUJLZGduTWw5T28/YGIzcUI8QSlDMn4hVXdr
amZVZCVkZzNmOEFESVU/QDd8REdLaF5RZ0AKekpjQCopdEdhcHorNSo1UkNSWHAmcjkxJCYlSnIz
VDRNJDIhJTBnXzZLVGB2OSVkMD8qMG8yXlQwQU50JngjU1B7CnpSezw3V3khSERsRjVgTSVTJGwt
T1MkI3lGU3AhWEpJfUxZQC1VOyM7MG9SYSgpUHd8dmxffGphN3J9I1h7MXdAIwp6aEtHaWJvbEM0
Y0N3Mk5TOHlndiZ5SC11TWJMWS18NTNicVJeZnNMcE1IZ2BFUiZodjNOWlZkOT1FTD4xd0pue1UK
ekRMYUt0R3tTQnNecnJmVjd5KWV7VktTYWRKbTI8Xmt1TERoJStGNilWQ200LXo0b1FMVztFe0N3
NT1zPVpMe3YoCnp5WjdNMVJWP0NZSDd6WXxRRExGaSNAWmlGK2pNPD1WKDwwazZse2ReY0tVdDE5
aUFRQHhjb3poNHorKm9LPHZaYAp6eGApTlorMkp5KnRaSlZQfE42REV2aHdfcmIyaj4kaipnRE1m
MktPeStNWm9KRkNkXytxd15YZXtHP0prTG5EV2UKemklVDB3YD9wb1RMRVkhQzFjREx3cFhART1N
eld+KzF7YEskb2c2T01USVlneUR4ek1vZGdFPVRZQS1HIVFURjxeCnpPIWl7TWpxbVQodiRTMl4t
T3Iwb1FIc3hDS1Z7Q3pFMiZ5cVREclFISzYpZjI+SUI0eGNxT0lCPTJrTmRUMG92bwp6SVEpcG9D
bjYlRT9lOE1wWCVDQHxjbFVPQnVGTUJWZjgwdCFCQn1nViNvaXZeVntCezttXn5fcmhBK0MwT3B2
Y3kKem1eOzF0RUheaFJKTnNUeihqI1hMTiNZdiFAODBkVXd6Mj8zNz90OG88PV82ZldGJUxVJkN9
RGYlYnl1fG1gQnR+CnpUdCFXN0A3fSNAMmBYKnY/V29JTiNiKGUyUmNibXNIWTYlS0UyfUBidjU1
JX0lMjR1VGNKTytuNV51fEpWO21wXwp6cVAkYyR5Uj51fVk1dmZxKHhYVVA3MkAxfDRCUE8tKCFp
WnxQa2pJWHIhVzI9bihCenZaTDkoVXRBV0RuRklmREAKekxuMCMpKUQ2SHxlNGQ4SEM5b2d6e31N
eVBLPUI5dyhnYGliKFdCOWFJclJaYk41O29ISjM2WEFlbmppYXJ9SiN7Cnp1QDdTb1dkOHBCVGRU
bVY+KzRyPzVmMlpLOXM3PTxpemRKIXQ0MjFEakxZVzMwJU54TSpBMXp3dDViOzcqNEFGewp6ZSor
TCRZZ1FtOUR+b0MjI1V5fFMtNDQ2QGc8VkFDVk4jTVE+SVY4RGVNUUEtdzJoNSUhcXsyZTlVWnNP
V2klWFEKenooWChCRiRsa197cm5rXz0paTdZI01ALV4lTGtXRnBiNThWT0A0eWZHdmBCIWhjKUdZ
Uj4mUEleV059NlZfTnhsCnpAXnZ5UEAjX34hS1I7Kjl7MHRQbmZCKExwNyg9cDg8MW5nJlUwPDB+
Y2NHO21ITCkoMntUV1phVExJUHB2ZzVQKQp6YFhXMn4zbmp8XyE+Uyo+eX1FdTBuciFMXnVXcjc+
YF9IQX5ubzNJRjJMfkM4U1V6T3dscHF2O2VUblYpbjE/N1EKekRVYEdpdnV0Vzw7V35kbHtMQz52
bn4zOyRxbz07YWROPHxRIzB+YlJzaG1tXj9fcChTP2FiRW1LUzBuVng3fj19CnpxcVg+Rj5raTI8
TXJMTSEqT1ZGJmYrRGYjOGEkOypNQE5VPDZ2bFNiKGF7RE17TkcrSUB9NCtwYUJWaEYwZE5Dewp6
S31EfCN7cEpQTyVwU35pfDEmOHlYPHlvRjtKc0VmUz9gUk9CNigzJERVUXxyeVQwYUw2WX5FM2Rt
PkBBd1h4fEcKeitufXVgSWBhSCE7JGhsISVlJkIweDFvKGwrI05fS3NJOH5CaFJ6ayZjNEN2WTMx
YWspK2AtQTI8MjJzRXRINDclCnpWYEl6Z3UlWGp2aStGbHNlbSlsbU40RGg7O3lOczVhK19IMnty
MjZPeE8tXig3PmstTD9DclV6WGI0S2s7XkZHSAp6SSY+JTEpZWB3MUozQlFQRFJ7TGNAcH1eWD12
OTdBNm5KSChXQlgyQnhiVyZmdVFlRUdoP2RLJV90bmslPiF6a2QKejAwbXlGR29PK2w2T2BKRT9O
NWJrXnNaakxzLU9fcUhGVjx3TGF1VWNGKitiWHtAXkVjQXRYJTxINDNATmVhPmx9CnoyWiswUm5g
fCQkPTViKiFrRn1LfEsqVyNgV2hCZHg1RE5PbDteTUZiNzlAJXtTQlM/SUdBPTBDWj1uOSh7JTAk
YQp6KTZtR3MkazxwbikmaXgkZGJBfTgqYiYoVSRrK1o7SVVZezNacigwQG0pSGNqNGQmKjxEMDxl
YCkoUSVacnhjISgKelpvQTdRNlVLNy1iZ1luUGNWQ31wT1FLWjZhU2xBXnQrMnRHIWh2N0kxbCt3
Iy1jbiQkQW82KT49STYzVTEtazlMCnp5bVJ5KUozMUQ+PTNWPDJnRXBxTiE3aFNrb304M1hybWR8
X1QzVUshMCg8MmU0Wio4ajc5Q1RfdCM0PTtPJW40Sgp6cHtNdXhAY2w2VyU2cCQoQz5JPFk5Nnpn
e3NIbXR8Y2Jwe19NPn05OypzIzUkTG1UeG1Jdk9wR2tsVEZmaXgtISUKeipyPzxHe1BUfS1vPWJo
aUlrYUQ7LVd4KlViKytwZGlLbmY5cl9vSzAmJnxEb3FFY0V+aWRUSXBAZyhHOFJDSUprCnpQRU8j
PiYxZnpnPG00ZSVnflVLP3ozd15qdFopQVIzWjRIJiFjWUY+X31ZQXtMVVZLVFVScmltKjRKS1pa
c0BUbgp6REclVy1GN042MXkzSERtQjNENFJQS2k3dCNjMmpRe1E1VDR7dHtCKzUtNFRRP1Y8ez1H
Y0QtYVpNaGpUTiFPR3AKejdvMCFnUGJBWWhjWGZQLUE5aT03WnAoUH0zSUxxZmlIS2ExamVYY2tm
UyhgKzlucDlxVzNydyg2Q3pORUY4O0BsCnpBSSQhSEB0N0NsQShnV0NEbDBlOFFTWUxeZEdqVlZq
KiM8WU9odHRkSileTCZmdCp8ZV9ASjY9TDxYPT5MS3FXQwp6UWRsXlMrfVBJRWJGM3s1c0FScDhK
TUB7T2xoZnp+KS0tdn4wcGU5bmdFdUlSemBQKlBpKjMzbmZaQWVXUj44Q14KelBWfGhBalJDYilk
TXhMb2gwKjBHKEo4cXVgLTlrMik1N3hXcSshWClXLWN6VGlpKFBXb0l2JSYzMyhDLTEtPGR3Cnol
JXxnNkZ8WllZKzZKSUl4SVlyTnFLVjtpKyZ2SmJ6YX1SMWwjfnVvUVNvYEx4YDtlMUU0JTNWdSoj
VTRuaWBFKAp6bEk0R3twSFVPd1ZKazVHZyZRYTZLWjFqKmVvUEhxKEI5ZFpsYT0tNDtYYHVMWjZG
ckF5U3AxRyZmdnVfKlBSJXEKemBpPnF2YXNudW4ycl9oVDs0R0N1JSZzbXdBano5bFpVZHU4XjM2
TDRSUndoLUNNRXtXWX0wRVN6TWtnaC1+XlV+CnoyY00jQHF3OHA0eUAxRCZrY2ZVRT9SZXVsKk82
bWpwclVlOEQ8VXBWKnlpaDV6RyY+XmF3TWY+dmkqM19pPXA3Qgp6aE53M3twdzNgSE1ATDZ9JG4h
TWNwZzlCZEoxPThIeWJ5Y0hZNj5hKCp6fDtpKnxrM2R0I2pHZjxoKUt9WkR0UzIKemg/bnBVc2Nk
NCZEbFg8YmRHZj5DeDN7JipYXkNmendTVjJEdDRWMDIpfTwkWGc2YGhFbjtaYlpMR3NOJilhJE9B
CnpzX09oKXF3c21yZjUocUtNZHBWR2B+UXIhVG1TZ0BzTm88SEZtRWV3WFl5LTslPS1CJEZwaz9p
MDVxbVVePTVyWQp6RmJjVloyaSg1UFlxanxVMkBsPT5QOThtPGZ7aS1vSDAyfClkUWRzVjNAMH1X
JXkkemUmN2BFSGQ1TjFoXlY7R14Kek1sOSQ4dWk4RUVfMm1eZSFLSUx9S2ctO2ZAI2Y3TmFOKjwo
bClFPXA9TT41bVN0dXopY0k+NUBNPip4PENvJkpvCnpTLWM3fUdjIVdOQ2tQU3g7Szc1fG52UEFo
aDgmNTtKLTRMOT9tNWU1O3Z3Z00rS1d6MigoYn5BM3YzMXpGXiQ2bwp6VUI2TXpETVRiNUFEUVd+
dEtAYVBPfXIlZy1tOG03O09vQTlgekgwMm5WTjxzMDhBMGN3b2ppdil6el9yLT4kRWgKem02QUht
ITRjM25kfG59UV5DQD1gTFJmS08meX5YVF5mODNfSnpWQkY8QiFoOy05YkVMQl8lQ0BSelZMMXFC
SDF1CnpENndUb2MpfWhSOWtHfWlzM2NmJEI0MEs+cnpJelVrKE9wQFhnSDBpOzY2bWZwPSk3Z2hF
MiRZek1WT01fYEVOKwp6MlVSd3UxX3c4VG1seUowbW5BKiRORFMwQiUydnBzdVFyUGFfb1VzTT5D
KExCX2A3WmQ+JkhoMkwzTnlXXyQzPUcKek5sOEowTXpFPk8kdlhLaVQ0RHZed1lIQnBIX09jdGQq
KUt+Mkg8SmorfSFsdnhaREtrTz8lUHRtQitIWnVDQV89Cno2UipsSm5xOWVMakpTbCRHN1A4USZD
YmszcUFqOHFsYVUhbVQhV2xzS1hXRihzMzxBMCFnYTExcSQ4VEh3M25OaQp6PUwlTWNBJFgqPilG
SD45R1RHVjUoTlZ3TEVoIz8hJGBuMlRPNThCR1dqVlQmIzRHelZTY20rQDskM3RjZDZBUlQKemAw
USsjbndKO3g3O3E8N05MfHNUWD0hT2FtRHEqSEhyQFIhb3krMnZVdEZDMU0tZ29eQChvXkBscFlW
VEg/SmpqCnojcCtiaDkzXzM9ciZoRUtlY1IkMUhTbEdqaWEoSUJOMzVDPkowSW9Zdnc7T0FAbChh
O2EzKVE9e3g9WGhFRTUhbwp6LT5sUENvT3RJSzVZUyZ9Y2AmLStkWVElTUZTcH5EWEUtQEVQfG5L
ISZ4Z15WcUohYVNeKEFpUl53Znp7QDZaQVYKeiNXP2JVVWBKTUEtYlk7VjMpODFoNGJmRmRSbiFy
cjUlUlUlRiQoPHRhdmslamNqKT4ldWA0Nj53cjxffTxgODVmCnpsRk5Me0NwRlA0bmNMZDN0MXkl
amA8S0tDYVA3TGVkNVFhPD51I0A7bGtjTmstMjR9SShScnlLJUkmQEd2RmAhNQp6UmEre1c9dlFU
QmA+NDRSc1RxaHtWRyZPZ1lOJGwldkAkPTY3P2g3VllsUTBCSyl6WUo+d0xvbmlOfi1VKE89dzUK
ektMMlp5KnxEdyU9KndjQ0tBcm4/KypeP25YKXl+OzVXYXZFays1KCMtb0Y8U2lwelFWQCpvOThM
VlNGKXo9NiVoCnpgY05hNDNvMTd5RiVlUSlvK2Z9NGFzd0NfYWRHamVzMzsldWVHZ1FXbDtVNSR7
UDZ2PUMyQFBjZEdHOE9DJmRwaAp6Mz91Rmxge308Yl4mdUx1UjFIK2JpQGRHOHBTaThCenJVakUy
bVZFfSljS1pPZyF0alZzZllSZl5jS2QoVDtSTl4KejUyMX4pZ3hXSV9MXzkqOT9+T2s+ekYmVEs8
S04lXnJ6Rkp4ZCNqV0lOS2dJbXN8aX1qSEB8Y0YreFUxN3dyc3JPCnpFQm0yWkd5bHl7NWBXNWpf
WWdJOHNZUD1GZElzPmAjZmdjRFVCKlFDU3YyRGxxOFVYLVRuMWVMVmg7NV5udz1TYwp6eD1yOyZU
PE97NDUyIzdfRTRvP25PXzgpbygqOXFgZW8wdn5uTWZaMGxYfmQ/QEx+UjZsdnYmfkA2TWIpb3RC
d3QKelc4Jlo1LVZSWHdqNGRyU200JSZzP01LcktFZlo3SWIzTWordWtnN315UFhFSm1ZIzBxN2x4
fV96a151emVMJjw9CnotRiE0dDhgQl41ZkIqZyt8TG0+dy1UKyUyREdJKEFeZGtEX0FoeXctbEFI
dURnTz96RHJ2fkR9IWtFRihANVliRQp6c2lAUlR5cjhiZyVHTHt+dFp7fmJVWlNSIVFjXnV3cShH
V2lTb3FsQXw3OGhVckF4UGRONXNhO1A1RnI+PFg4fCUKejJLMC12RkI7U3NVaDlzTWs2NFZSeUY2
IyF7a1U7S15nZGJlOE0wbHdNdj5AMWskX1huUE1yNmk1V3VFe1NqSS0+Cnp8TEpFZXpYUCtOVX5I
OWZCdjMxdVUmYkU8Y2krfkF5fkBRRDR1S0YwM19iQDVVcyt3OVM8UyR9cGZXZU5zbDl5eAp6TUUt
YCk7eDJqdHkxQFIye3tFTXwqV1d5akxQRC1ZRF4wTSlVOSlIbk5hO281Jm9WRj1nSE9QPHEjYWQ1
VWRgUisKem13PiVER0JHYFUhYDYwVWFCdlZzamVySEN0OzZ7QzxhZDtqcjZvVD1PajxCLWpJRjha
TFhzVHJhaVFXOT4wSG8mCnopPmMtO3QyV2l0b0NhPSRqTjBgWlkhQ0VFMVppMW0+QTZ0Y1MyO08z
KGFvPkV6UF9veCpCN1lDUFc7Q1VmWCZQcAp6ZDhlSTs7P2VzTEFBcjZsekpKZHtzSj95cyo2b3Uj
MW51JVhATnk3Q2ZvSzY/KGVhaFpnbVhZciFfOVlKezJodDkKeil9fT0lelZOJU4wOEomcXEyMnM+
fE1BKFY+XjA7UFRtaW1OMXQ8SDxkd1AyWDFPI0hwa3htY14/Kj9AaUFpeihjCnpOcUBYTU04Q3FM
M3ZxI0ctJEl7PUZIekIjbGM3OVpUcj8tSEFQPzlobFJ4Y2A1T2lPfT9Fb3Z0PjNhUUlNSDtsUAp6
bUFgKXJHJjRWY3spYHM5T2lAYmVRSSt2SUNzZXZ7NWNIcS1CakdndCRmWVM7b0IhMWlqVjZtKzFj
aVBQd1hGSCYKeilxXjY/YlUteWckbSMqSGlUe0ZRRyQ/YkZHQkVIKTZGSUwxZkQ5TzxxQD81JTFt
MUhtNEcrdD9iMkRIQXV+cWt4CnprIUFNeVlxRzVgYlE8N2g0dUFXMDdVfnA3XytRKXVlMXU8dmdD
SXhTeVN1Z1g/SUFUcEBtZlJKMD4pa2Z1PWgpIwp6Oz94SlRQcG1VeTMkNURuTDMjaGN6fkxEZWg9
VHdfc0JWYiZOTVVhOyhhd2E/P3dzYFdEQTBldktae2NYY0Utak8Kek1+e3dBUFJmKFV2c2pAX0Fw
ZTRBd1BIIVBZKXlfOGE4KSlpaTBlUH1OUXxESXskSV5wTXVgYHNzXnx1SlM9c3I7CnpNSEYlWSlY
M0IhejxaRjMrM0QlaFR6Nnk/NndDe3tBVUp9eTMoeEcwdSM7dz8xV0VZbzhFT0l1KldtVEtRcz00
WAp6bzBLP0xZZipXNWN9an04Q18hV3QrQl80MFMzPHp5N2dAT3tiUmpAUHpYVU9jOzUmRXo1bSY8
MjNkdVpuPGo0fjYKelQ2NTJwRF83OTskVipGS0xgaSppVDRrKTVqaHZLT0tJV0MlZj5vWlR0UCYr
Q0hacm5BN0hLdnJRMH1VRmRWOzdaCnpXNnd9Z0srRXxoeENyekVtV3txZ0IlemZWYHRfQDAhZyVJ
SzZ9RHA3VStVPWlIOGNnRkU2ezBVMUltUUN5U2hTcAp6PWl9eTkkKUNvbWFzbnJ6Rk41SH1WP1cq
UnNWUSZ0WTJiI051Y0FgfVhpQWgxUkBLJVhgfVhZd0lqUEE1Pl53KEUKelZUQmpIbVdSVEREd18+
PFg5VythTEorS2VhJih+RntjMnAxKFREcmsjVnRKKjYmMDFNdndLPjxMOWBtdzx3VipKCnpsbHtX
fTl0cDBrcWwzJWdjNkgkSzRGRylARkYrTWlgRy1iRmtBTTYyUnk4ezw/YXx9TXpkTiNlemBUZilM
Y0Y2RQp6YmFSQV4wS3JHcWBTJTB6ZTlLbTV6bDQyczArTkNHbkt+dHRCP0RlM2VSOHtnenF9ZlZ5
SFdQKW1FczFpO290ZEQKejY7bzN0aFl9P35QVXpUbWIjPCsrNCE5QENzVXE+WSpBSFZvMFhDbVZA
a0V6LUxQbyUmQE9EbUpgS0JSNWgtKitmCnpIPVVkZ2sjM1h5NHBKTz93SWdCKTxPVFhQZXR2JVI/
UHh3QV9kfTU3PHJOZVpnb2NDP2x+UDhsTHxOb0N1NU0+JQp6U05nUjchWkNUTWtZeWM0NzhjLWc2
PjgjaEIpbjlQP0s4KGtLdWBob3BKWWRpYUJnOG89MHV6NV83QHk5MVBKU1QKemFSM1I2X3pVXl9I
JihgVEFiWnFMVnBCcS1MX1c9Yl8+ZmZPQT09VjNtNllEVHpSYGljN2NYQTA+bEVZQ3pJSnRDCnpi
dmUoUnV8bmVYQSVffFlGZ3BSYz0pP1dKU2JzK3E8UDV4KyFnQiM1ZHJtNVVRKV9EKHlOdU0tUnF6
MzVGSTwqcQp6UDB7QyRSNnMrLXteZytEeT94NmFXTCR7KFh3MCE0MnRDN1krQmgkd1ppdVVkKTZ7
d2xYJmprO2FCZG0mVF5RVG8KemowQDdLMTFiY0JBIUt4Mzl2KUo5e0g0TlNjcHRzVnlTdipfJFgt
fW1TeX09T3A9dWx5bk98N3clK2k3ND9LdDtLCnpFPWB7WnJ6YGglXnAoNFpmQXxpPHUobm5qPzRw
Y0pVRCp0bG1MU1l5fERtRiM/VFopUFk0KnB6QWBSM1Y2NG0xPgp6VzRzPG43eno9bmJPP1B0RWlM
I2x3cnRzPXRnUVNjUEl2PldCQjJrOD9SSj0/YGR5LVIwcG9oXkJyQ0w3ZmBFY2IKej1JWThYY3dB
UlEhP2BWMDJ7YVRLJng1O3Q1bFA4Yyo+O2N9JCN0STZNQF8mQWk7IypkO1lNPXZAZjh6dD5VMEZp
CnpkX1RZNDwlUnp8NihrbntefmsjWHNAR0BOS35qMztDZGEjb2piYXB2an5+Vk0/Q35jPTh6K0Rs
UjBOTnErRUJOagp6LWU3OUt5fVAlSTk8aFhLMFI8WlgwZWQkO3pvbns1K2BkP215SEo2Mnh6VCg1
V01vIyR2dURwKlQzZXckPl87UG0KejklODYyb2NqVCs0VUJQYkdCUHQwUmpCK0RlKkZCMndRfmJS
MXRNXnM9bmhUJElXJTxXKmZFYzlafEB2OURSSV5wCnpUTS1RYm1Oe3JGWUYmUlUzPzc7SmN9S0g5
R0xAJjFXcTBuVW9CIVJWIWFeQXA4OTYjV3VBYCZGJjBUJDtqTV5TcQp6MGhPWkQ7UipwKSpsQT5R
ZU1GI3EtYkJMPitLamxwQU5DN0Z5bGljNSZPQHZuSiUyc1hkdnE1KWVnc0piWlo/fE4Kem4oQz1D
WGJ3WSFIRTVITnkmVFk3enZkY1FjVnVjfFlvTzA4KSNkTyFgS2FQNDZYa0FAYnkoKWN3KTFEdEhs
ZnBiCnpiRkxGNkZLaHs1MU42bGJ4VUVgUnU0dn43P0V1QFV7T0x6e3hBdX5lTDgzQihCTDxncGJf
aSQ/NHd9cXBLMz5iZQp6VGtkPm8mKE0mTmtXaFh5P2VZYyE1O3szN1l8QXBzaHNNVW5mcX1UTGhQ
cGNJX1ZoI2FpQVYmOTlwdzhiZnF8Z3YKeiZDVlJWPW09SlAxbnFCI3VUS3pPMjV1aWEoQT5+bkx4
JEw+a1Fue2UmeTBAQ2RmJFQoeWtvfT4qJjt8eW9OTExyCnpUa3Riej08NUA8Zn5rdFhsbDc2QHBi
bVk0OzdDRm8pZU00SWA4SlN0P3FDcnBYWE10KiV1Rj1XbSV8YjhBV29WPQp6KlAha09oR2lOYyEy
fGxES0RxKG5xPVk9fVJaJigoZkZNJn1BPzBfU1d6PSl8eyhrJVp7cmhWcSMyNX1sSHpiRjUKem5M
dkFFNzd9e2kmJXcmTmhtMWAzalowb2RnOyUpfGEmbCk9USY2TT5KTCt+TjtedysqWWYmNjVGamlM
RENCTStGCno8STJhdkRxVXZZY1hlc3lmOSZtamxiZjV7RlVqSX01bXFLTmshYkpBdVYhVXRRWEQq
KHY+Ui1IWGkoNSl5RDQteQp6VTwmN05pSE4pPiNOKDY4MzNsbSlnXnRZJDsqe2RlOCVkWFRANzxl
fm89eVg4WHptbzY9Vj95eGc4bTdxPW5TSkgKekIwTl4rQU42TnRYUFolRSFtJExveH4zS1ozY2El
YXh+d2VPb1k/Y2tOTiNnMDNreDN+QTV+UlYkTUZ0IUt8I0lRCno1ZGEmZ3FyZl48JnEjZ1coX1hz
T1dfeSo5cVd2Z2JIKnROdnk8PWYke0U/JGNlTVFue25RaTBicklQNXgqKkd9aAp6XylJSFYheik2
R0twKzQmcUdZLSlzK0FpeEwzUm13YFY9fl5wSTxqbjNGeClpKzFVfE1iWlpEMzUyM2h6NU1vKVcK
eipOe2RMdHMhajQ5ZGNxfitZWld9dFZ9fksxdXkzMj5XWWpId0s2JjIhR2xqUSRLfmp+UnpFLWM8
QT9EfGpVMkwkCnpfZyt2bm1NOWw2Mmg3ZFNBQXw3I3NkViVKWkxsTyFNWnBSfD58eFcmX2VvbT9A
X35aXklqQEUpTGRQIXpXUSFvUwp6JClrZyhYc0Q/bm50cC1SJHpIYnNINElsMSFYMWVsMU02aUhs
QDVjPypATUdMJHA2UnE/WndnKzg3YzU/d2dWTTwKeiRvNkIzUG0zR1AzSXFpTmh5d1BqcDR6UzAj
bnA4ZzVVZXYoT1FtRURyMn5pKzcyPT0+Nmt3UHdnZ3Vye3hDe1A0Cnp5ZE0rK3gzUGU1MkFsJjsr
NSRmeC1XUX4kP3lEUSRwfGVEMkROPjR5aS19MUpRWkR+JElMYTNkKF9IO0N2U1N5NQp6XiEzNiNZ
Ui1xbyNkKDlTTG9pYnZJdDA0YktkcXpHVkhoNEdENU8lcHAzdmRaPm0/Xjh1XlV2cG5Qa1hEdWZg
dFEKek9VV2lFKndAZ0ltNisoMGtjdnYlKSFwNkUpYHM9bXk3Z1goLTJtKX1LYWUlK3Fvblc9TEJU
NHNxdHV2eW9MfUo2CnpTNVgwSnUhQGhfR3w+dSNtNjAoSE9jQGRWXyVVKUQ4T1NPbUFPTnR4cHhY
a0RAcnpYY1BDNXQzZ2UkNUpwbWhnPgp6ZTFEOWBAfj81OypNXjNNPlN7Q08oU002JFpEKStob1Nw
eVY9QUpjazIze29nPUNPS2ZOaHNhT08oUmpAVWFkTl8KemB4MiN8cUF3VkZKfkJHJGB0OXZNKVE0
eWA8VnMoXi1UK3cpVCEmU3E2YkledDs0PVhIVVJLcyFRKTd1ZFJ4aFZeCno9a256TlNOUXpPPzEl
aCVQYXclXmB8WiVNUGVCcDxnUDtiOEdFKjFkeT9fNkNlNFJaRCZIWX42Wjg0Tl5aU0FOdwp6Pi1i
JnREQ0lOcl5ORjNic1dLPFhyPFhtPClTVjxHc198cTN1e1VMbUZMfHNaTW98ZitXbl5HcXNpO2BU
Ty1XMzQKemtedT1RNTkwNjQ4NXF4QyV7KFVIYS0tYmVvPiU5dXVkZ3JnNWx8Rnp4VUJ7NnFGd04m
QiZwezFgTnJHWnxEMlJ+Cno5RiFNdj1eQkM9ZlpgfmhPXntNYkBJVntyeDVWVVJLQ3IkcGNyY3do
YiY4UXVIaXs8PTRiblZlRm9jK0o5Z0JvTwp6RkR4JFokMW5hblFUeHQwcU02VG53QHJxUDNPTFhh
T0VIPG5MKTJPeiQyeGRoPllvN3xWYns3JSZCRDZ9cTQ9dVIKejlsNTJlansqWCt2JEFOUkZfeFRI
KTZ8cUNNZEN6bnQqRGBxNjZmKE9Kcl5XMzBNZnFXTGZ9UylVOFl+NEpwbCRCCno9O3ROV0JBPUt8
JjUmZUMqPExAQztBfV8/Y0s9XnApd3ZRYF9xTVozJUZGTWc3ZW4oM01hTiZCNEwrRjZPcH03SAp6
YGl2dC1YRkNuTmZ3RG5VRHZiNEFEZysre007O3leayFgSn1zfClDa3Q3YVQlNmVZI297NjRwUVl+
S1VkRXpsJWgKekJ3NDg1I24hMEFeYFN0KHFAfHl+TkBSUkchSWpHNTMmJVY/KkZlLW1PX0NgSjNK
YXJ4VmdYYUVucClEIW0pRVNVCnprZExSYUEhVWwtVTltQVZZfDFlWnVGPmR8WUIjRW47Y28/I3lR
cX1iPzwqMXk1UjtaUmloYmZmS1NKTmAwJGgrUgp6OH5Ke0M0cUUpRT17fHI3XiZJXiojNzlzTmQw
N0JKIU0lSDtGIXNkNzlvS3tRTjBgRXRwT0F+SkZaflB6U3xLTW0Kelk5NjxGaTwoVjRuJHdrV0ZO
dVEoND8tcVBZbiVuc2hwdl5ZeW1LdSMxaXFMc0htJXc1b0p0UHVMZGpjbHJAPndsCnpKOCNkUHpp
XnY4d3UwRTx2YSMrN0l8TXZ6c0VPbjF4Vmc2KzlIT35Re2xkZTsrdjF5PW5xYnZMM3FtM0NUKndu
Qwp6dU1+XmAwbnIrd2MoYiZOdS1uMitoOHttQXYkTENtVGNOKGJvXiQweTIqTWc3OG1ucyZfVGRU
KSp9ITlmQHV5WGkKej1pJHhlc0p1MHlqbzYzeDBmR010OVhBPVphdFdgdXhBKDhjemZnZ14qQUA7
dHF5bVo2Wl91S3Fwb1Z4YSZuQUpLCnpmb1RUK1AjflJ8b2toaEJ1Xn09N3ojKXVyVWBya2MxVGch
TShPenRPX3dFWE1YPncmZko8b35tQXxJYl55dTN3ZAp6RzR+PF5AfUdscWNoZTxjMXEranRoV0l9
eTFVfVZsVk1WWVAwIXBVK2BRQWgpO0J1TD90SGpPI29eY2JDTEc8WkoKej1wRVU1YippYXBYPEQk
V01NaWNaPiUlb3ZTNmQ1czJUbWZLVH1RcGQ3ZEh3aEE0UFAydGJNJHp6PGdtNTZ6byN+CnpyYE1u
e3J1MmV1czxLaCNYeXpxPVhwbyUoVzxvQipNdllNWU5sWTg0KjgjMipnZyVjMmBKN3VNN1c7dDZ0
KlFRbwp6SCpLKVQ8PlF9X0FgPVdBc2d3aUBaPispcSZCZT5CbWlgakQqU1ljaGpgOSEpV3phWHIk
WWItUTdDRUJ0Kzw2Q1IKemEjVGc3N0RXbyE9O1heU2Z1Q1VWWGFMRT0maDgxVHV4UHVEdHU1Mldq
dzFrYEJpJSk7PCVGR0lQZnlRSHRfQEAjCnpKZzd6MipCfWpJKk5eJU9aRnlOJU1weV4xUG5GfFJ2
MDtJJVB7WkU2ZHh1Z0JKNSpCTC0tWW8lX15rTDdKVEdJQQp6O2deO3FkNTtgOUIxdmtySzg5dmVT
cDdYJXZyJjd1VTQlTFozbGIxVGI4VzMzJDlaXnlHd3FPRztMN2t6MENSaFAKenw4YWVVaE4+ISRN
YmlsK0VXWlR3VlgkTEJ4cm1MNmkrbEZXI0toI3x5Z1QlMVdWQXorbG8kIVBIUXVwelB2STdsCnpS
Y2BRb2dkaFRCeTRlNmR5RXFST1BVSkhSV24+Nkc3UCFDfTdYZGVDYlExNz8qU3BWSHBzckxeQ0I7
KzB2SHxDSAp6YXo7aXByWD5fKChhSFRmYit4KkFWfDc+PFZqbyVvV2dgZ0QyR3YoenUrK2pOKVhA
PnZsQHpXalhnflBTQm8/MVkKekE/ODl9elhYZzErfjd1LXl7S3VXPSNuJmtnUVFDX1N3XmBVUVFE
bz5aK2lDWlM7TmA7b0RBcFJOejJNSWBhQkJACno+dWBzVjwwbWg1UjV9LX4rc2h8amx6PEtjQXZp
amJFU1U+OU5JXmpYNz9kY35qTFpgYDBZNVdaZnI5SkhrYURvOwp6bXxmTU9UUj1OIUk+YDFiQm1C
cWotIV51M2psYmFsWCpta00hVkZFfkpNX254Qk1AZkBoR2FqLUZtZH1mMmBYTl4KenFHVitPJWNW
PXY5MFFmISFrKUM/OzRWM2krP2U/eFViWUcpMmpESTk/fGJDbHI1OyErQjRUMkNRTUl0K1UwcXlh
CnooQUtAWnZvKEpsbSs1ZmYqYjNoUk1WOSY1UyRObDt3LXdVeU1lRkBwS09tfjJMZyshQDF1PE8j
PSh4fjkmMSomMwp6S0R9Rml6OFJGIUAjQXJMRXklNz9ZOE08d2ZfXktedSl+SH00cEl7QTlEdX5T
eng7MklZUUBFaU5XeSZBZHEwMCkKenQ7e2hhVCRnK3tzZWt4Yj1veHU9N1o2R2FLaWxyWW4+VEo0
Q0pTUXAxTXZwcm5nJEM2WjIyamJgJFF5eDtESEFOCnpLVXVkWEh2anx4P19VeTtNQ0BRTUwkZTA2
OHhlTmVaI05tKVczJn5Xb3o2RklTT0FBdVRBbWlIenhBX3ZGRXx0Mgp6WmdNb0NCN2tBQXkyRjhF
WGg8fElxWnRpbTF5NGdsS25kMTt6WSFBfnlEJmRieExYaXRjb0d1YURyaHpJSXpCO3cKekZ3JE56
KmRZK2k0dk0lVC09cnVVUFpyP2dCV1M+MXprVjYjS19mKVYmWUBITXhOJiZyanZaaiRXRnh0JSZ7
PlN0CnpIZmZETUoqQUxYM3hGNzUzeWNOdVRRLUMhdHZ+ZFYoLSYxSkZpLSpjYiRwSEwkYjc+KVAh
P3lJOUpNNyNgSktpbgp6UllzPCFyYmIzU2Y0PyEzQztSS1FJdXduYXJ3eVFucktma0pMb2UkXiZQ
MkQyR0l3YVZGQ3gzJVJ1MURBPXlyZiYKelNCZ1Q+NUghK25vUExqOTRWTVJ9YnlyVzEhSylqMFQ+
clVJaigrRnsyI21jKWBJPFFJTkomY3JxNkViVnkoZTEyCnpXX2lNNj5wWm9OR35wSlF0eU9UcCUy
O1pCbj1+TDI4aHpaYTdOOTBxMHNab3Ytc2FaVXJfRnkkQjwxOHt4bEMmewp6T2YoOCVNP31TTGs9
akFlYzxJdW1eWEUmaEZUVEExRiYkfmYtKFNZWTx+T1g2NXdrR25iSEolRSlzT3RPRm57Y1gKeiRZ
O1JnKnd8UCFvaU1Jdz4rOCFhdTwzd3shcnU0fHYwcXBCcVZyXlo7V3krQys+cFYrTTdYZGxFd3ZD
QWlpIyZGCno5K0FAUGElaVpqZ184Z0hfM1BIc15tbnhHaldQVWxwTXleeFdSXjl3Pz9QSGJqNnVi
fmV5SCMyaVg/QnJkTGopcwp6QUkhYnpHXlZQZ2JrNDN7QVQ5N15YNjcrVU49N1B3ZnwkfGokQTFC
aXZvIU08RT9naStkX0h8TGhrRzJgMDNMWFYKengtZmh2Q0p3U0AtK31fI1hCYGJhO01sUEAjI090
TTJWdE4/MUQ1aHNOb3Z6QXt9KjhfVFoxaXVBcjBKRV54cjI+CnpvOzBaTiY/LUBoUzlDJFV1KENE
K3goWW9WSlI8UG1MZm44TnJ1WFV3ZVJ5NGFZd0pPJTs0JG5nY0JmQ0N5alAoSAp6U0N3X3k4X1de
LTFRaXcqPH1DZE52NzkqZ21AdnBsVCloZiRJRjNCdUBaRFlUOz1xYDQ1b2ZRWWNWaksjP3NnSC0K
eipWWE0hUmVCbG09PEJAV1hjPyFCQ0UzWjdGRlNKI1dXdGIlaEpoQSpmXmJpMDF6WiU8Z301Kk0x
eUsjfV88MF9sCnopcjlgaHpfLTZFSmVGciFDQUs0PDdobXNOTDgzJXIwPWQ1XnFqMVV4SUpCbSVa
NjVKNXpaNnRiQCgxfFdxeiEmcgp6Q2MkQWhfPW8yMF89dzRAYFQ4dCRCZEViaEA+JD5sdXUxcHEr
NzxzdjcoRj99c3BhbjxiXj4+Tnt3IUcqPFoyKj8Keio2e00+d3xFbS1TeV5uJjY1RjF8emYrWnt4
cCUkN3phVDR0T29aRzMzSk9EVipOX1pnWUJZTjkxSFU7Y0xAUFQxCnpQM1I4ZFpxNSRgQjRJd0l6
SHVTT0VsdiZLQ2s5Szc1MWRwQnF5aEV9RStwSmBYO1JTWns0VWNjMVM2eWF2KTdofgp6PEZORT0y
e0gpRHdXWFBCSFQybkZfNXQhaVQ9eWI/PGhTamoyam9PKjA5SyomdUw/PWcoYlJsWlNfKVBOTGxO
an0KejJ8ZkA+Vm1AbVNrdVZOSStTKztwYjN5cCVXTXBJfSl2MldQRmZKOUNINWx1UUF7NCklQ2lI
eSRgY056WkxkRG13CnpuailWO08ren54b3xxXkgyQEIzUElRUjxiX1piJi1iQFFLNjhrMVVlJkIq
dEdFOC10eSlXcURIcU1CTnslTTFmTwp6KzUtdTNAZ1hkdyk0QCF6bTYqUmZDPDFUPT5aVGRkakd6
Rl9sS343UkBZTEYmOzc0SyVZMG1UO1U/dj9+NiN3dkYKejUrUGsldy1oMHJHeWRofnpNcXM3KmZF
KCFUMVVxbkVvcl5vcH03TVY9dURSVUFePVVWVUF1LSZpSlg0SEBHU31FCnpOO3F1Kyhgd3E9b2Ut
WnVMbS1sN1dAZk5lTGFzMz8hPjc0YCE5ZUlYSyplcjU1QVdQZEJTeUBfYDE8KXQhenNXVwp6bTcw
P3kzYFBAfHIkbmpkOUs/RDBeZHNfK20+QWk+MEV9Skx5bmV0Izx1NSo5bWg2bj45QClibzRyRnRO
KkFrb2kKekR5QXZrQ3Q3ZUp2N0l4PnhQTn5LZVBYY1FTcmtidSVKMVB9JXlHUDxMPnA9a28qaE9Y
WXsyN2FXWTdmd2d1cyNtCno3Jj10T3s9MikjenBLSj1HejFSaENyfGRTPX0hPUBjMkhENDxYNWtM
TFhQUyFiTWtsWFJjNTRFVGtOciQ9ZjNBZAp6ZSZfTzh5ZCkrWFRET2AzYTNBNWZIdiE4OF4jZnBZ
eHtrQXdqODVQY2BudmcmPGIodGYxRVpCMEhNNXVmYnl6Tk0KelBYMWpUN18+bn44fTteZnhEVyRn
ZkJUTGRQK1J5TXtwSGx1b1o4ZFhrZ0VESDdLb3Zja3RGZ0ZweSlKRWpXUWVeCnptcjBlQmxAbV5h
eSlfdT9JRFhkZkUkU2RDSnlNVGpmSC1JQ2lHYHBJQVBHY1YwaWQ1eW9XWWNQWDYzXisrZ2tZMQp6
Rj9rcSE7VSl0PXpiaUhoU2JuRHpaPmhBYnRXWVp4M35nV3dVSU9zSnVRTV8tOXk/JWU2ZSQqODVg
bEU9ezFPYjAKeikqc0olU2N5RFR7ZXFQSSNXLSYpSkEjUnZsJDBLdz4tO0Q+V1RmIW1ecHtBM0JP
XiExJDxOdyslPn5OXjJBaFkrCnpERXBsOHdRRmNlRjtQbElNPCljZ2RDdjhlYjNQKjk7bSFiIXVX
RlohJmF4YWc4dXU2alNee3FLa19ya19FbER6aQp6bTBod0g3QSg7WFZRLUdna09GVyMoX3s7SF5l
Rno2QzlweTNFX0x0PUBQe0p9TVFqQGZPaHNpaU9SaHotRCtoKnIKemFOTyZLYjJ4fHxYZEAzRktF
JlhKajx6PH14TyZzQiRoNVQ2WVlZPTtVQ01sY3t0ay1kJHsjX0c4VSVrNmt+REEjCnoreV5tIzRS
QWZFcSk1TV5lSnRVMU5tb19NOTdpI1ZBZkVHYChZTTAzRWVRTSUwQn1kX09IbCZ3KDxlXnFpRjlL
aQp6MHdudGBkVDJTY0FtWXs+JVRZcUFSe3RFOCU2Y056K1NLJlFZd2NvT1Y7cndfU1pefjU7YHVa
UkckI2x5MVNFaCQKeiVsWHwkMj83e1hoWnN+ck1EUkxfVm9FaWYrfU8lV0k+bHxDRUFjVlhxdGI/
X2dmZkxFWFckbnRPVUc8QlEjPTd0Cnozfn5rbjhATFpBeTl3VXNVfjRlaWZee3E/YURlWXJxdldJ
cHN1cUFOYn1DfioyNWJ+SFZsaUpYeEMlVW4tQmVBagp6OVotLWNeWEx+dkIqOFBJeDVSRS1sVnkz
YlpqRTl9JGYzYGw+c3dpKzU3THxRY0w0ZXpCVDh9OWlWd3tHdkBmMEsKemgrUGowNFY5X19ufXNi
dTQmZWx4WkdNLUgqOypFZzJ5KXsmaHlIJl56UXV7RS0qcDFWa0BvcnlNb0Q4WUl3aFBFCno7Ymp5
ZXpNantScClwP3ZBRDNwNWlXSlNvbF47KXF7RCVnWTN1Q2p0Mz5GdVJzV3pVeTh5RkJxd1FYIXZ4
Wlk2aAp6YVB3eVRQSHRSbXFQbzUqTWpOM3RhYEV4MCZ2cTQtVkZyI1UjUCt6c2E2WjgyYUtBZH4k
ZCleb1N0dnY5UGtyY3IKemIoODM/YTFEUzwpOyt+cD0hT1NkISFhaEola2MtfGd8YSNQO1ozNDl4
eWxmZ3V7QFM3c053SnNveHtLZk18aj12CnpvYXQ1OHQrQnFwYF4jUyE3dkV9NG1OViFKdXRDaGhp
eVZvO2tBUSRMMXNmRVAjREt1Q2VAKVpqSG8hOVViYSE5eAp6RSokT2ZaZFJiZiZNKlF+a0JXbnZa
YU4wbjhXPmElVy0lWVdYS0xwQ3pAQmhpMkRBanNNK1pJOTJnSERCTCUtKmQKekB8YlptJmVNZDVI
aDxtMjt8K0ZLUUlRazRNYnl5fDVqVjlTQj5DSmY4JHJReHcxXyptWipQOHBpcCs8KnctUj57Cno7
NGlTeyt0ZVRNOSY0K3NYeXF9ZjZsdzRmRC1KZDRWXnROeGcmbUNPcj1RS14qSVlNRVQpXz15dS05
VHQpNVhuPQp6T1hVcWE4eWw5ajgwc3J9RmRaJGV3RGZjXmlHcDZNNSVQVT5mXkszWnh1eyY9bmVz
ST12N2AzKno2WVh5e3B3WkkKekp5fV49R3JCVEsjdmR+LWE2a0EyTDdoMiV7SjYtJiUxVXE4a2tP
a2wrTn5tZTIyUVJLJn0wWGhxTFB2bipsOVZyCno0ekd1YHxNM0RLd1ZXMW9AVTt7O2FwSEVCdjBV
dU0oOGdnWCt+SG9qU1V5ezVBUmQxdlY9RjYjPT9CNClxWFFKNgp6dnFPSHZZNjJ0PmQoR3F8dXB8
b3loZHk0MS1VTERqQXpVdms0OXpYV3F6KkM1RiY1MSQwZnlIcHYyNjJpPzh8KHkKemJgJDhxdShQ
bz5vYGRHXmArfGlTOXE9bDF7dU8qIzxURjRBUHpXWWluQGIlcSo/S0tjbFIlXkIpbkpjQkYrczxK
CnpkazBmSWc2LWFpPypKU35mOSgyaVVWKFEpaSRFI2ZmWkteeyNDNj9wYU0taEYmcjl6VlNBbCpN
MVoqTnMtQiY9agp6I3x8N1l2YXpXanZMfVd+NE5PRW4xMXZGdmUjQnIzYlZkTGg/dCl8fXBeeWpR
ay0mfS1WXjlMSWspZlcyTDFNZlYKeitHMV5GKyspWGQ7Z0xuamB8O3p3aGFXNWoldUd4ZVF2dXJv
ZDhIOG9iekBAPVVeKW5qR0tYUCNPVXR5OWtgaSFQCnomfUcjJlU5fC0xYHJeZTJ5MT9PfEtNUDxj
VCZXbnVFNCUlZldhb2UzMEA/O3AydDV+IXklP3MkNFlgRWBGdGZxNQp6b2JvKDRJNmZ1aUZnWkQ8
dE8jS1NicCh9byttMFI1VytLV01IO2NuPSNScjM0ISpTYC1VbGU0SjQpZE9LNUg/ejYKemo0K2hH
WlRvZnpoUnljfmRrK2RMNV9waEozaWI7b1cjaHlEJHcqNXBNT25xYHFXXm8xOV9zZSgrYnUyMVh3
PmtLCnpFWngjc1diajBWbllwPVdiaGRFQ1l9O34wTGdJZSFjTjI4S0k9THA5JTxWNG9xUTlVeTB9
I3klNDNxJlVWMz5iMgp6eSF7OWJqV2tfKVQzWTwhWkt4X01pPl52c1ppb0c9KDBuZ2NUKjthRlhu
YSMkOVdeP3ZFb0Rpa1kwcFV2VyEpKWwKelZBTyhYTEVEKylEPUBPRjA5YEVLeGxqaU9obl8tOVFI
M01zKEF+fDwlfl9FSTYlST8mST5CdT9KXmtWby03YTRkCnpQPG8mKjM0WiFxQFhubihGOz9JYEl5
aiMhcy0kfTUlMEdoVGs2Z1F6aVYyMVZRdz9rRyVzJFY7IUBiYzhCbEE5NAp6YzFLYUVjUVJ1aCt+
eGI4STFuSHozYz1BNFRhN1g2UGk2KENpTU8lZ3wwdjdlLU0oPjs7cDltV1N4big+K09LWEgKekF2
KWZhbXomMUhtU2smVjB9d3cxeG1kZDUzbjdzaXlqMD9KLTtyOFpVIVBmNiRhQ1VeQT1xYVJBej9e
eipxPk9jCnpWRH0kYmRHdWF7Qj8lJEpEO2ZoRHdfKlFEJkZLWHw7YlQtKG43KFFwdkluMEpwRzl8
c0lYQm9Xa1IxcGhpT1BsQAp6Z2IyNnUtO3s1U19oRVdHbSZEYDFmOSl1WnkmT0RleykkJTtQdWNq
MSEjdCFhOX5OaXQ9ek1wRW8heiRmVXpXTnoKem9idEtFLUBsQzs/angqO3w5ZW1DX14tTHM5P3Y9
TkItcyRkdTBXcWc0N2NfSFV7KjVTaFlrdnlpWldjOGdwcm9wCnpjNlNjMnJHQTE2aTJZQjlfdnB3
YVh7RmBsYGQ7MDwySjRLPEN2dE1+VCpwITZuaCszIyRmbTY2QFJDU2hkPDBFVAp6QGRBfiZsRDlN
MjJIYTd3dUtfazlgTEZsb3YwTnEhemYleis2WkwwK3dsMTYrSGR3JFJudXxuSjNteVJaZjtJZyQK
emJ8SW13Z2Z8VyZNU35hRV9uPFhQPVI5MGs5Tnt2WDdGb1ElcSRFdUFEPCNnTGtDMHFAa1NlfDBS
ZDdkQDJMfjhyCnpXbn1qMy1QP2M9TmwoWXxBP0o4YFhAeHZvMDNEKGtxVyppUElONzJ5NX4+OUZR
OF5HRmIjKW8xeVo3KGlpKEBqLQp6MmIhd3o9eGV+WDRNel5XNyRYSWVWZyRMZXpKM0xXVElecEdG
JU93SyFhTmVqZShlQEE7V1FkYTZjITIqQVl+fHkKejBIYm9HIUleVXRQKHZzflFsYTBwRnxvYyYm
JnR3K09sZX0wbjM2SUtsdkFvWk4lKm4hLXlBdTlvWTJJUUEwfnIhCnpoQitBRWFkfFBCI1NlOX4h
UFU0PTAlSEp9Jjs0cz5CUH01Yj1NTWdDUy1oPGQwMFJyQXA+YllOa2VEa1dWNz8mOwp6SGdvZm9w
aFpCWV43MXVnby1zTiV4RnxxazA1VGw5SyFyMF52U0IoYyhOPENsaipwS3x4Vlc5PF9RcnZIaWND
TzMKenkqRG0xKmhDPCRVJj4oUzNfU2B3e0ByWU9wNT5AciZ7JEFAZDN6cjF3bzUjaDF6NDFoK3da
UnBPOWIqMGZTdGpDCno4WX19UUAtVW9AdkpLKmhscGIkQGxuKFFVTDM3a0k7OF5Ibyp2UmxhQERp
JjE9KklhPU87OUlKa21HMCU2Tz1JMgp6PUMjRjFRaEtRN1BmOEM4K0lJNiRKSW1uS2prTyF6ZyR0
bmslXlJZQEhfX25YaSlNSEl6ezxybitxfWApQUE2dG8KekNoem5YVmZzNntjRHVGenNZPiRtQmM7
MDF0RUJUTVlqVjV1S1puPn04SUkzdD51aCh2bDIqKm5MMGduMXshZyZECnpRZkJKeTdxPmdNQDJP
PSNJfVN1eik0U2hjcHRTVEtpcmpuYm8qUnw+SigtRDxZQHxrPlJeb2Y5NjlqNm9laF8xIwp6JG42
bkZLLSo5dHJJVDlGQ0pWKD9xVHN8VTktKmQyTEFaZH5VclorPHpuNWMjMWwxSD1CUHM7T2grKzNx
VTZFdCoKelFLU1RNNUUmSlBkb342KTdNQUdvPEhzbTsyU3cxPXFZI2NmeCYoa1IocDdORUtAfG8j
PXJLNWEwe2NyQ19kX1VkCnpwazR4VztFeXw/ZyZwc21hcj13bUYtUkBJd2FEQEJra2RkI2pRKlpL
NiY0KFA2VVRnQDkqJk0kOFhKcHsqNUQ2dgp6YXlWNnt2XzxEalReJDtwbjlDPCVTZjdLcDU/XyVX
S3dGNGE+XnhrPmhZdWdYc0I1NW0lZ0RGe2U+Yzl+eWIlQzUKem1adTRxJHwwZStzbkpvWHtmbj9a
IT9XYDI4NnttezNjU3dMKVVJJEl6fD15dTdKN0M+Y240ZSFEPz0lOVVaXyklCno3PldqLXs5XyUm
OTR2YHBhX147U3FaTXd7Mn09K2UmJkkmPztqe359dDUtS2Q1MXZMZ3YycjFEcWRKZjRWSXhvfgp6
I0VqM0t0dyQkYElvPFExNypNVUpzfTM4fmdSd3pSZnJpMi0yej9ZU3lkK2hBaG9KVk0lcGxEYEpz
e2gra0xyO2EKelBMRHklZ044c1FDVThHcTBlckxKd1FFMHRnaG9mWnJwMkI9ZX53NTYjek5yWCow
WFNPbWdNQ0QtcHglPGs5MV4zCnohYDVQRW1hTkV2ekJ9V0c1KjhDRVQ3WFVndnQxdileSGQmNCs4
VmgtWkdJOF5BNlc/cDAtPXxQaDIhUSEhOWZ2eAp6UWJJOD5IbDhKaElkKSEkRjlNZns1ZHJuejFh
d0F8YkFLUTAqd0J5QEpfamJgc3lkSzdGdiRROFdueV5QZEdXVXYKelI2aiZVWXYpZUxXNWdmRSRE
e0ZqSGE1b35zWHVtRVVSb21iUyhIYl83SHFrWlhOfSZ3cj82SW9IejdDIyp3TyRpCno9QkVaV2ZM
alE9ODQ5V1VgUDhKT3B8TFVQbG5tcl5xIztodCshRnxZUlFTUnxSaCheKnoxViM5SUpveEpzeFJF
Ywp6V0R7VXh1e09jUlp6IyR3T19VNmYoalBjKkt1ISYzJFEqamAwciUqb0w0VFEoakh1e09BWmJl
UkN2PHx7b3RAelgKenZ0TmxVUUAjY1JmWExebSRfKSR+Z0cyfU5rX1pRbDgyUkQqODtAbm9ac1RB
WV53TnJ5RiEmKntGSE9feXIyc2VwCnpzZSF+e3F3NEFFViVMM2ptWXV5fVY0JCtPMHo7NVlqRXNZ
VkcpRFZXVFU2fnBOeytxPHRCWmp4Snt1RnpvTT9vVAp6Tzc8VlNVfSQ3PyNTWUV7M2BAJDd2SHtL
Jj1IPj5+bjlRM2FoZVRVdCFQLXoqSUZHajVrVmFMWThHeGtCY31pYUMKem5kK0pMbUtNOyhEUm80
dmB9aiFuJGY7eCM0Q19BJHRNdlRhRiktbFdeeTEyVjlsezM9PWxsS3BOSigqc2htSEpDCnp4d01R
N2VAc3dJTmBpVTx4bnU5KmF2ezdmbWRgZHlrYFg2O1NaRXJZM0ZZY1ImPTlJTV9CemhncGBvTzc5
UjVPRQp6bHlacTZAMFFaRlJnU31KZHdhSz5LMTFTUjd1OW9CcjxqPDA2SWpkK05uXipBPk9QTihP
Nk5JYVhsVkdCTT98M2AKelNVTzJzWlpEbGNMXyNXdkxFT0J2elFgfj5MRDtAQUZ+PndtO35IXj4k
RHolYzY/amZ5RmFvb09ReSRXUG9AOU5KCnpJcyo1SENtXmt8dTVMX2REQVVzIykjSXJkOEZnPnw7
QntDa3c0JXooSjwrSXZyaC0jLSlJVkJ8N21SaDw0PjFnPQp6JnAqMHdZfkxEaD5rd0R1QDBgcFlF
cDY+R2E0e2VYSEI/bXhobGw0fS1vWDd5STc4am4qNEVoQiszXkNBZG1nZV4KejRiSzU9YSNIUkY5
ITQjfUpmIT5kdzxgIVg5Qn44WVBzblJrKD14dmtpK0o5KUoyNU1ab3lzM1pXNVQreiFoQUpTCnpi
YGlUQU44ckUlRUtAWn5oUWNmLUg7fEtvJSNoQVlvaldvSnF9aSN1OWRaKD41eXdFJlQ9TUFxdSFP
KkBqMF9idgp6T2t3JHVMKUJpUDFqSE5iRlRZZT9fdk9vVjA3WW9lczglVDNYU0JfZGZ8SzJKRmxZ
PiNVfktIN1NeV3taS3dzWE8KeipHfVdOa2xAajF4eDJWNXtyd0JhIWZNc2ZTJEw0KXNsPj1SVDB1
d30yZiF5REpHUj1OZylRaFkqS2koazZZUzJBCnojb3NfbGY+JFVhKGc5ZnI9PiVUVERjVzM4YFlt
XmU8T0hMR0JqfHZFemhIU0ZOeTleWlI2WXFFQXx9YH1wbE4tMgp6YXhfS3IlYUE+fkUjaSEoX0o4
VXkrYkJNT3NrT148eXdyT1RyO34kJmxtYHl2Vkt5Xks1NCMtRm0wJnB1WSRRcGcKenJUcH1YZ0B3
PF5YVDlkIU1gUnUjNzVWdSg3UWtNPF9mIyNSMWozPis7NCR8RT1aJXpXRTMwVClDWl9kRWg+MFB3
CnpId0JCSXJtWjtjbXc/PSg1UEsxTkghcjRaVjErdkZ3ZSsye3hiKV52MzZNTlpPXlBfQjFMRm4/
TGQlSyNTTkJxTAp6aUtXM0N3fVErdkFNQHRzJnVTZDFnMTFxKj44QjVDMWkrdUVkaDJvVClkT2d2
YVVjaHYzKH1wcm5IaUJHTDl4UnIKem5ZS1V+NntRPThnSSVvSlNsVXlmO292bmUyb3pOazd4eldK
e29vRWUyOEleWGtLYVFjN3JAOVF2V0ZqbUcoaHxMCnoxYzU0cFE0fndsR3oxfFIzXmghN0JrcW4y
YUlGQUN6KXRBcml+ciNFPz4qY0w8Xj9uZEZzOUowLTxtRWlFLXk8JAp6RSNhKWFyb25GTyE9RD5q
NCN6aX50RShIRyVGKFRvaipmKjhkMFcpTEwyXlAmMl8oKVB6Jk9FV2dEPStkKV5mcGgKekxyPENJ
WHoqU0AjVz5qTT9lSlZRfEhzZHxPVkBDMkxHJFBgdW9HcX16UmZOQiR0WClEIUIwTWJXWSEjPGwk
aUp0CnpMdl5eZ1dqJUlJUERzditiOTM7PjNET2ghMV5FZSVfR3R8UiYtUiUxXmR0N0F0OGpmTXV+
QDsqblFvbVFvZWlnbwp6MmcoQzdJb2k+QHVXYXkrdEVIens7TkxjMjIoWVhAYEtCX14yNFFsNXR6
IW1jWWx9T1k/ZTxDI3ZFSlVvIW9yfXMKejBXd3U2NDs/KmZ5KlZGMmlRQC0/Z1U8bnxmUF9KeVZg
amA3Tjkqe0lAODJIP0xJNzVJWihKOFpIRzBrUSl8Q0IlCnpGSWhQX3VDRmY1cHVHZ0hmJTYjPGJQ
fEBNZmBVMmxfQ1VNIzRpMXBzYCspN1JsfnBLMTBkQjVjbj9vVHZfdypHdAp6ZzVDekZfTW5NQ0lV
R29rcHhtISZsaVM9K2JAO0lKU1gmTCRLc2JPPEhiSHxSQCVUTiM1cGhvZmpNMiFzO3RuOCUKekxF
cnJIVHU/QC00VEY5I1cmIUxfSGN9aXUrPS1xQUxTVXdMUUVoKn01SHZkQFlsMGxPQHFMVDk1O1A3
LWw1TCV4CnoxMz1fQjNhZEoxMWZDMXh4UiZeTWRPYk55Q1F7VEBSRXJ7JHU+SzdQNy0zOyhZcnVn
ZUlCZ0FfUlE9anNxLSU2TQp6dSRycjh0XiNyYmZfZFg/a0V4cHAqWntDelJKaEVEdXV5dWZFcCow
dEVfUSl3ZmBlU2A3KD1LdTI3RmRnPjllKHEKeiM9cl9VQERuNENTZnJRNSs3OFU2eyRkRzh8Qndz
UilnP0Nje3ZtbjBAeWJsbEtOcElfdDUtMCYhYHtjNVdoRjsrCnopcHV+QyQxRlNkTGklaXNJUUll
UGloY1R0JSpEJGFiMFdOTWJUTzNVTTdvNU1zK1NqeHlRYy0wbnBZKkI/TmphMQp6JDx4JTspQzZX
dnlGZyFfQ1BCR3QrZzs9JU5MWnEyRzFyM3tocT5kLTlraXxlYlVCPEk5Q1VFezRCX2FtTSN+TUcK
enRrP1NUYTJRe0VEJTNnUV4oOWU4M1VweVAtKVk4eXFIdV43SGp0SD5ITVNtRGVOR016PFQtVSt4
MGplPXheUTYkCno+d3tobmJFOE5gVz5tWTRLN1JVaWwhZ1pQdDdKSlkxVXQjc2NZQXM5IWA8bn1h
Yl5qTUFNOVBBWSRjeDFCbyR1QQp6VC0pbVlsXihpOVM8Y1EpTjYqbDJfViF9OEkhUjFoRUcjczlg
Qz14RyswZF5AOWwmaiN3K21EI2lTa3xXPCZ3QSgKemt9QnZIeEZGPShnQyFZcCNeZWN+JEYhSGlz
XnQwN3YkRiZBOE4tT19ANGteJWNmdCZjKSY9KFdxN2VmT2ohb05ECnp5KVU8JHkyMjJRO0pgNX1w
R34raGNUekdSenVje0VjTDtQVVBOQk4qPiZ0KWY7JT92ZlNaZnBgc0o8USUxP1hWUwp6Z3YxfHdf
Pk9acigpRD8rVT9PeUA3OzYtV1JkOEFVYDxtT15wO3M4UUVAMHJVSkVxY244IU9iTCVfKCNvS1pC
YF8KentSNE5YRU9wQSZXPGVnbGRpNHEoUEB5PXhQMX1Sd3R5OWlHU0M+Vi1kemdyXnl4WlFhbk8l
aE8+QEMrZVk7X1duCnpGblU5REtxUj9qe304OG0tWm14T0prKm0tXmVyKDVYR3B6OzBMbW5GPGVR
e3w9S2I1bWw7RDV1c2dXelU0Oz8/Zwp6MGJpQ2ZyOHVjOEpwTiowQUY7YyVFM1hrUlg/eTVfeXUy
SzRGWWRtZSk3VWVBfDJvKFBmTExZYTxjOTIqcCh+YyUKem5wazx+d21HTUlLYjg2JnopbDE+T24/
NzlebytuZypqM20/aGRGZEZ6PGp4TGxzR1FuYT9lWDxMeSZxZjc+RyFzCnomV01UbWwkNHdndVBl
ZlFZZypkIWk5WF9VVGUhRkJHQkVtKDlYYjIkc2UrSXomO21we0F7Jj54NC1YSFlIfiNuIwp6Q0M1
OTBnWlRKYD58PExBI0kyfHBxeylWeUleT3JYMWdIej00azA7I1YwYlhmdT0lekxMV2FESzViYT9x
X3J8ZG4KelM8TThpYkd0WW9yTU5vV3o+NjlpRklYfnlCM3t3TClVKmloNWFmVW92aklHV3E/P2lW
cEskPE5Pa0FPVTtSSD83CnotNXxGVWxgVmspI0ZkV2lPOV4hKyN4dDkkUSVsNyhSYUFhe3t+bGsr
TFkhfntMX3dUY1F0UD8taylGMSh3RjE4eAp6VDNjdFJVY2V3NCt+KEB6bmA1eSgkekNEdSprak1B
WSUkO3V7S1BKP3hzbyhWXyZ2UHpVfEEyenp+VnBnYD9xJE0KejN+QD1lKEpReCRBV3k+SSNUeGVO
Xj1vKUJPMD5nP3pqWDhRSXNqPSVrRVZrPUlkektRN3FVOC1AUTImUWEtTUlvCnpUMlZoX2d5TjlM
MkZ9TVVMKXljMV9DaCEqRyg+fHBGN2NZbStTKWpLTG1eVUBtP1hoWEt3PmtgPkpaI35gYz09agp6
TkNJdzQpQTdwUihGS28+a0U2aWd5cEQmUDtyMnB1amNZSUowJnloWWdWQkdfO0lIcyZnMDxIO2xh
YGV3Q25hU1cKenlIMzFjcHt3VFJCPVQrM3YwKzI+JH1IP1dhNHxtZWxeYE5LM2FmOz8oVEZMQkpW
dit8Nz1qRGBeU0tycmF2d2k9Cno1LUpUcGZUTkAxXyZoUHpgbDNOYWAwbWl1bHJaJCVVIzRofUJx
Y3YlRn10RzVpTzhfeyg1N0kyOSZHY3ViNEwySgp6RSZAMXkzdmxNJD1nK0MzZT9qcSlHJT1eYCpN
eU8rcHlsVzAwVCEyaW5ZVlR6Xzw9cFNqNmFnJUZlMDJRZ3o7QHMKemx6ZDlAbzI5K2BkIStFUity
XjE5UWo7TGc5Ml5+V2k+eUtrR1AlU1ZuUkk9MXU4fi1GWGwtTC1adG1fR3cxMEBwCnpTYys/M0F8
PlFnQFY2TDMhMnV4PD1Qfl5aXjl3dTBCZEE2d05IO09Ae1Z4XkdiN18peigmYCtxKkl9Y1pIKWxg
fAp6RileXytQdyg+PlpjcjlWWGhxc3VTX2R7S2BCN3lVSFdMRitgaXpXXmhtWmx6PE9zdk4hKFA8
WGdBNHE/THU4TkoKeiR2a3dxcCEjdVUyfWIrcUEpRkEpM1dFdkEtUmFwYDhYT3lrWkwpS004SVFm
KCk0WCh5NFU4MVQwYyZlJGtpXlVnCnpubz5Rekpge0RSS1Q9NjhqWTVDZmFRR35nYVN4JTU0fVhy
fVkyU2AjKk89MTRaaShhNmwrWChkNGVgUGhucDYoKwp6M2VIVkNAQGFFNUItY2I8Ozt9ZGtXOTww
bTA1JUV4LVR4MSU+aTszaj4ycl5KRjBeWXZYcCk9Mkxfd0wkajQ/YigKelQ0UzNobUteUXF5JHc7
QzxCJlQ+aUIxSmVlak9uV3VEQmZpSypvby02MUhvbmtjdkRZbHR+ayRBJkQoNWohQ1YyCnpPKzFF
VjxJRjJEVnEzcT5IYHxeJEo4T1VFYSNKX3pISX55XkBwdnZRU3ojUHs3bER6bk9IaGVVUHZUNVk5
YW1TXgp6ajBHYjBVJnR2fSU4Rlc4U2xxaEJONipOX1dRdmg0WS1IRmFuUzNZQEFCTH1ANVhodGI/
YEdhZVBDZm9eNEIraE0Kek9gSnMyKXdLKz1xI05GZjRNQW5tNGAwN1ZebjE7WkQyK1I5bz4qZTU8
aEBDVEFqfm9EMSlVbWF8RGdsRTxUTTY0CnowRTFad0VZUF83S0BlZFZHckpJJXlCZGZzbDlaREoz
PVlMN0diTj0yU0IjRE5nIWEtUi1mMEMhRjtIc1k+ViVnRQp6cFcqfm1rSn1aKlk4Q0ZuP25IWFZY
M1ItV1g4c3JTXkMyaDluVEg+SSRqaTxCVDQ8Pjx6UE5jK2EhTG50cD9gdWIKenlsfl4mV3MhJVY5
MDdTaVlKbDgyNkpDZSRjZ1FeO2RAOzFUYjlEMj5sQWFnOEQ4MilZTS1WNUxmSTcmNFhBVHF4Cnpp
WlI0N0orIUI0IXY4dDNCPGVzV1NnIXgweSl6SCVJcW1ual5ecHZjM1dYKztxRyU7Y2kkK3U7RHI3
ZTtSRis2Ywp6TnxyRXs1Um4kNXZ8M2B5UWI7cHROWVIzakM4Ymcram1sUWtkRUplOXt5NjhLXlBL
WnMqWkpwayYyYE84JWtUSTcKemVaVGtwUz5CKWJgK1lNNVgzKjkkQX5iajc9RlJie2NTfW1Wa1Zq
Q0NHKXJ+X3ZDUD56Sk40aX5RUzYzVSNAWDJ8CnpVT2JyKUowXjZNdi00RnhaKmtvfVF4QWJZcFMq
PSgyfCVXd1JIQUo8UGxEM1Y9VXw0b1U4Jn1eNFp+cENCdGVZaQp6X0VfWCFUWEBPITVmelMrYVh2
cnBSSEZLIVM1USVmYHhZX3xYdihvaSYlfEd5b083PnRNQGxaUnRleCpaKHZPWlIKemIoNHwhe1dp
VWFKPGJBVnhuK0UqPmdwajleUStQK0djelk1Y0k5S3o8OStfd09RZVRDJERWWlVHbXB2flY8SVJg
Cnp1an1pLURZWEtrY1BmYmMlZHc8V1puJDFmaGRXQW0tK3g7YlU/WTNNYzU+WThWWm9adXhfOXJz
YGxERW5DeGlHZAp6NHN8c190b3FtYFleKkxqdyFocFQ3YFE2dk04X1NQbGhrRCU5NDZjdmwlfWY3
MkAhK0dETFp2byYrQHZ9dXQqJVcKekpFez4pK3dTVD5gQWxhXyV2a3pSbHhyPypndyR5QTMmOTVl
TUFxLWVwWl9pIyFZYk9waGBjQ3IqTU1XMG9JMDNXCnp4cyhafmxzMEA3TGlWWGdsUjk9dkB0P0ww
bzd+OztzeUx6UmcxXzJSYThGamB1QU10U2c2ZkJieGl+bilvSGBZSgp6PW55dDRNd1pMTylzfVNB
OCpUXlNDO0RXOTd8al9oOSRqOG1eb3ZIQG9AWnZocUVIbipKMVIxUihXMVFTPFVDayoKemx+d14j
cyo0Ynx1YDlfdFZLN051LTRiO2F4dFQ0YVg3ZSs/d35YWTB7bj4hNERxblcmbjlqOFc8UyQqZzsw
ZlohCnp5R2JaWGBgQENuaDgxPE9PSzJ7cDxeSS02eW0pNTJgaUozbSlUNUY1PiZxRT5HYSp0N0hh
b3ZLalMtJngrT192Pgp6KlI1YXdyUz9xbiFuNyFIRW89NktvNCo0cW9NbU4mejhBLUVnZHErPEUz
RHlBT3RxRlIlWVYyOWg7Wn5+UUF3UUMKelU/LXdBcGooK1BwezEhUSNLRS04RnZSaEZuYkpUT055
SDVXYG9eTWI5bVQ/JFV5YDx1MnNWUmdqcTxVN09EdHxICnpmSTBNOSl1RThISnBYKlBCUGVMKm5O
UXoweG45bVVCKW5BbWdtbFpFaHRDSEQyQ2A/M0ZqbmpVX207eFVOVip9Rwp6dG4qSmlkd0E1eGsx
TT44OVdxM2F4Ki1tbG45LX0wZ2YpcyEpanNMcmI1bTYqMzJPWWc8Q1NEMlN4eVY7fEJCZGcKeity
bVV7PyZSRSRqVkE3XmFiVCtZYT5RPTdEdSp2dyZsZip4OD9zUjkwPWxnNnREal82eC1VdXxGVFVC
e01NSmBsCnpoSmNDc3h5UnpBdyleZ3Q+dm9wRGpFZTJqKChpeHh1LWpSdl99UyszWlE/QXwpWVZz
NGpfRnZeWWgxZT0tTFlkdwp6Y31nVjNlazQ1NnlHdUchKS0hJmUtbEdpJFR3WDJ7aT9ZTkhmMjU+
RCNvdDs7ejdfNWhZQClBPGZad1RpVnBQU3UKeitGRSVqc2lCX19KTzlsRUZtfXN6KUZ5Tk17Y188
UzUrYyNnMUMmOC16KUJ1TmBNIWcrRTRudVN6KVBHQWEtRWtNCnp0eSlWMlVfQ3x4PDVJakM4RDl9
RVVvdktMLTV+ekctTzJOYmpgK3NecX1jeUVnTCk9eVp2RkJfUiEkRTAmMTR4PAp6Mm4mZmtRb2V7
JnhLSlNQMHxpITxMMWVLYyZEfDdvUSYjZ3xOcSpNTSUkRGt5MUhmUHNOYHcyeyMlcjZ1VX19bjIK
ekR6YlUwLShTQmM7eG90YW9VQihiRjdqKGJXPWNuOFd3JlFTTXxrfTJidTVYSmJ9Ul9Sdng/JDEr
VTFrRjZocGw9Cnp3RUdAVSpaRThGP1NKK19IWG5ZTkxZejdFKTgzPjZET2Q8QVJ7WElrUlF6R2R4
WEIlY0NFSzA4Qy1RJG9GR2FtNQp6dUklTEJTMnB5Y3kwa3dPMjFZS35fVjFhIzhRRkYwKzdqS2wh
fGVkNjBfOExvcmhCK1JeI31NZHtPOFgpMTRPPiMKengyWFVyOHErUmJlQmF8T3Y9PDdLS1RmR3lX
V1U0MW1AYkBGYEZuTURJREVVdjlHeF9GfEs7Wk1GU1U0b0tsT2o1CnpKNnRzezZJeWtgeHBRaykx
WSZxa2JleUEoNmk5Zk90YmhEISpQWjxRbTZ2MCFUYDJFWE1GTVB7WDApUVdrWnQ/OQp6MlRNNU16
eVoqenRNPmwwUmxrLThqd1NOKl9pMjxJajVNe2N2MH5fRlVfe0V5WGhGP2UrXzF7c1UzQTE3K30m
ayoKemFURURae0JZJXFsTUBvSTBeP3k+QkRWI3BoYHMkVig+ZG9KOFkoI2c7S0lecy1iQSR6cXBw
e3ZXT2I7dEtsNmE9CnpPcmc+OFNlTVpodC1LZmhWU2JEN0VaTCh3ZGlpX0w+KTROfCRedHNaR0so
WEUwaz1JWV8+NS0+WF8lcSo7NkJzdwp6ayVlbXJlSiFnRCtqN1JxR3pJKC0qWl5BbnhDKFk2djJH
Y3EwQ3xmI0tCUDd4SmUoSnokYEB8I1EzWnpMSmNSLVUKenRfPDRCeWc0YXd3aXVCeFUwSjslN3N6
QyE5fH5SfmtGUmUjdWN9LTNoIyh2ekpHJW8wYT5IJjV5YWU8WkJEQ1VVCnomako8KT9kSEE3ZEpj
UzZYa1J3K0p6PWhhOyVsdElPcypxTDk3MUZ0d29odTlUcCVNPjBgWXt3ZUxgfnVeTmwkZAp6K15f
PSZgcjFHYU5+NSVhelJubDs1LWN0X2VYfWk+X2NtOFBeIWY4PVNTWS1VK3RYaTFLd3ZBcCpkR1lw
anJzM28KenBvIzAoencmfE1ofUY8PSEqUjUqeEM9clV2fk9SP3slRi1DS3Q4ME93VTNpYUxEa30t
NzB4fjAjPU16NCVvbzNHCnpZYG1SeTxMeTBKWHt3YyM4YDRoOG0jIWg4eCU0QSpaRCl0VE9VQFk/
MXhoVGVQTjNlPSYtNkFqWFpTZTFKOVM+Ygp6U2U5RSY1UmI0RiZ1ZWFDITBtQndCNUp1Qm4zYXMw
RUc8eihNKSFqTCVwfTYqNEdiIVhUS0J2fl59ZVEwZH02TVoKenhIekJJYVlffk55bT8wam9mU1ZR
UlI5KSU2WSZ3UXFAPXYxbVpNSWB6N09WKjtIPD98eFRvT3tYS2dMNVI2KF4xCnplclJFM0M1RHA1
Iz5Rfjd2cl4xcmk8bil0QG0/NH12eGNqaHpWSmojblRlclFxcGMmKSQmUUE5aFRkUXIzT049bgp6
TTNee0xTODlJMTVfc3JtJnp5TTs5QmZwVTNYMV59PygpbnwhMDQ9IzY7NGp+cUtzfVA9MHxAaE5r
O2FBTzl9YXgKeihJSVF3aGU4LT5wXiFTXzdAbF9jQEJAWXA7a0F6IzsyIyg9WCQyaDFuO35ZKCoh
JjZHWitNWTBBRHB4WWgyfXpBCnpDPFZSK3krfldVKTwlT3smPkN+VjVYejl2NTk9cys3bXBkUXFx
QmswTSE9RFhya1JMTjRXc2YwfEI2PXY4Sz1OXgp6MCY0XnxoK3dBOVYoXn1kZUAkRXErcSZUTG9M
V1NMTFE+UGIzMDZCNnFvI0FEe1pDVTQkKFM7N0hOTk4kTGYrVHQKenRGaGEzUSZVSjFgaGNqXkRJ
ezUhQyU+OTBoWGNCVDFLTiY/Um1CPkdWWG4yemgkOXZ0OSRYaCVyJnkwKUVMOUhZCnpJTGVwO1My
N2ZOdSR2JnVQZj9uPGRJb15QTUBgeTF0QTZYKFBXNVEtKj51SF5BTlQwaVA0eUA8NlRBI0FWS1FO
Pgp6JkxwdnN5RzxBRjEhND4+ZUp9OC1wQzZkPkB0MkRMV2h5SXFtdVJSZCZANiteUE4mYWMmQDA+
b1R3WXlrJGNXSCYKemteVUIyNWRMSyo5KmdNeTkjaHVEQUhacSg4Jl58UCZsbSppKk02NkVAUXom
IyRDNys1VGl6Uy1KTDctT21zISFMCnpmUHtWWE9IfkJKQGppZnE+a3h8Kno+blM0NHBaMEN4KEdL
OVo/bG1+NzJyPG5EOHhkWiZgUHJ8RHdeRWtmdk5fUwp6QWImRXJEO0AhYj9oZEtuRThUXmApMV83
TyRCckZhZCRhM21hcyhRNHJ9TmAjWWloKUoxIzNsM08+fFAoVjhOSXwKemwhPGN7ZmBXbn5gcyom
Yj1FRHg4QSFNfn4hPjEmbShtbC1eJUlDfE1GTlgjSHFCYTtVOH1CSEx8MDUkWWUmfiFsCnowNzU4
Jjg4cDlzIWZwZGhMaW0oVzVBUFdudD9KNlcwc2ckcnEjQSV7cFhTMnAySiZFNWl+PGduN3RHaFdz
VyRZJAp6NzA+dE9OYy0rcXkwO1hhIWkpMzhQOUNGMFoxWURoQWoydjVYcTdqR1BeVUZBUnYrR3A0
Rm9lYUZQRjAwbDg0MFEKejMzLXdmdmorPDU5SHp4PkZNPCUrckA5PHdQS2kzM3R7dStrKktnbD9E
dkAwMXY/TGBZPzlnYkBpQHZhaDlaYkd3CnprYmNpYEVJeDJ4SEN+R1ZXNnZhS0VXRUlNM2RXMF4y
am52Yk5kfG8jWW48bHxaISQ0KWtpNUxgcHlwUVZtMjY0MAp6ejVBdnFFSF5haSh4ejZ3Z1ROZ2ll
ezB2Q3ctWiVxYjJDWG4yZ3NIdntrRXAycFd0TFQqeE80ZXA7S0p2O2M8R0UKentKPz1zSSFQNExD
THAyMHJsaFFsYURVMzxDPHxwUkdoKV84PCRGKS1MPT9AJTlMUGMoQDc7PTVKJSMrc2Jeb3lBCnoj
MXJQP09+MEMhK0phU31lYVNDZDJOUiFpUWJ9MTt2akI/KU9tZWZ6e0M0anF1dEZuZkFxP085VEVO
WEw4OCl9YAp6VE9OPjVVYCg0dztPRC0hUVkpWT9fQTxPbUF3ZnNQKUQ/aHBgYkUzUmo1RUQle2Ej
cU9vPHZEezBnZXt1KnN1cikKekplM3N7c1lHJHw4bEVlS0daWnZ5YzFTaFdKPU12NlI+QEd5U1dy
YnliYD1DSSktNjY3a1AoYnBzKXdpVj1STjJHCnoqZFYzTz9PPXZsV0thX2Awd0g2Y3RCY1J1aiQt
dEI9Rz9ndGpnOGlrOHFKK2NNKjUqJVlAY0khTWkoITk5SHQ9dQp6VT1rMz9IbEArYUx4YGxESipr
MG9UWFYtYGp4QWdtMiZ7fnVvMCgoNSlZYVRiVSNDQ14hNnJnQXB9aWE0Q0Z+bT4KekB7WGQhbnVn
ZSkoYC1qa2RPMG48KyNJMjt0SUdzKDhmeXlgQk84S2hCXyV+aSQ2Kzs3RUZLTFIlZUE1X1JuK0d6
CnomZjNkYTZ4ZCQhTWomTmVPSDFJYDNgbT5uSGc5ZnRuRF93Y19SUkw4e3dBVjRzZFY+NnhnYjFZ
Zig1TEU+a3ExNQp6PiglUzx0MDZIajt4VWpHQVQ8MihybTNjdmRHaXI8PH1jVzVsaUBUIUpqM0tL
SVhUKCQ9bGpvfWRvd3Jfc2NGTlQKentscTFWQGA7WG9sNX1RNCg/PEdafDklOyNkWSZDRD00SWFS
eVc1O05kaTMoVHZmdVl5T3F9fntmZDVueSVIPDBlCnpYMWh7amdkOTEtaCs/cHpfcCRwaWA8Tns1
LW1eITBFYnomVDQ0PHRnV3trVkpPa3U2VV52JjclajslbXM7QUdQRwp6JUolQjFnenx4N2h1e1Zp
THVSWUxTKk1UV3JGcCkmQEJRWlNmKjQxS3F4RmNXeVJjO0BxNVUzeDZKalV3ODhoN1gKelk7PiYw
QiRTfW11I15KSTBMZF5hbmI3fGQ1QFowUiRqQ0BHbmB0UD9sSThpfThMJEQtWnE4WCFTVWFNbVR3
KzhlCnomc0p0KytEYSFVK0I1Xn5MOGFYNW9Aa34yJHlTNTZIKlluejQ5STRAIWU7KSNkKk5NQ1El
YEp5dlAlTnMofksqcgp6PWVJekx3S2tsV2cqYilyZ1JaKlVqZ1I3XjZEOz1WIUZuZmo2a2hsV0kx
UUk0VTw3cCMrZGsrY1VKK3olS0hEWWkKekd6eER9TTxKLVEqaUNgfnUjQ1lxd0tNflcmfSkqME1t
QDZjMDBXbzhAZjs8RTxLVkQ+PTw0Pk9rcFYkTEVOWn1CCnokMk5mKXdxPUxROz5TND1efnQ0NkFI
ZU51TGFBOVNHY0MtYDJXYytmWmVLfmRmTE50RG1JRnokbyhJUH02SDYjXgp6JGtaJiE4WSZ5Mk91
M2p+aW5FVEdSSDw+cTBtcG8tJD1ha1daNjQjcGZsMF5GUmMxOUphTmBVelIlJmVIeWZzbiMKelBn
YDZXMjZHd2pvJCkxWSslaVRHLU1VTytSQmZwZXZ2UWVVTnBFcDUyeiVVZzQkbDtnN0R4ZWd2KSt2
fShhe2o2CnpuTiR7eXQjc2Nxdm52SEtPWFpxPDQjWCo+eX5wbkJIYm8+UUN6bkZvQmcmYCtFS0ZJ
XitoISRZOF56Wio9RSg5Tgp6eG9lUmI4fFk3UC1AVHsyOE9+cktIQHIqTnVGeWdeUD9+Izlvanhx
TXVKbVIqaSViO0J6ZEg3YGA5anxmX2R5S2QKekg4ZXdJV1FRMVNeSldJaEtvJU8jITB+R3J2cVdX
WUtqS0JXb0Z4NmphRVJYMDU/Y2duXmZOaTstKCoxKDNCKCNBCnozMHNfX3E5QUxib0MoPTwkK2Va
cUNEKD15N3hiaT8hSl9Odz18YTxyNXNKJWBaRVIqTEpGPlFmNT09V3oxVlEkMQp6ZWRFTTZ5YkZ7
bnhGOFg8cHNrVzBBfGpzZ25vellkRUJUJEp1OWJwZ3psRTlFPn55dDhOKyt0TWk0KClzMkkwU2EK
ekJWRkFrWEZRJF8tVjlNR0ZoWStVO3J4ISFNRStjdUxKUjEzVj1Kc0xAKjN4SUV5KGNSbDRaSVdP
cmQxZHJHRHo7CnokM01QKEozY3lrWExKSFZae0kqSTZQM2dNKzJ0JW5GfU8kRk1GcTA1U1hsTEFo
Y25sO2pHWTU0QDBffG0leUp4RQp6aDQ1JnVmMW9Wd3xDY2NGU20zXlc7Nn1vJjFtRm93Tzw9Ymk8
V2p4JmhBdUFzYHVKLVFSZVUtOURYdW92d2JlVEQKekEmbXZlaGRqPXtYWTxXbFh1N1pMP09UTmIx
OCFnY082JCtfaV90JiFJMFJCUWpIV184Rn1QLTImJCVte0orYHpTCnpLeDdCMjI8aCZaKHZhbGpo
VUEtVl4wS21FIWRQcUNqLXZLeno8Kj0kdlNrZnJXbT5RKnMtbHozbCV0YTshJExnSAp6QXA+aGhp
bnxiP2Y/ZGZIZi1rPyQ3I19QNHkyQzQlRjBGWmR7eTNZblghfSZgZ0ojWHpVKnYjWTJ8RSM2Szxy
QUsKeiY2SzYjb01Uc2xRNCh2N05MPjBiPH1JZ2tQPCtCM0w4LVZtM3FKM1hsb2RmbXNjVEthRX4k
cGRtQj5ffT9oUyt2Cno3WmQzMmJLeFZIRzVkdGxoOHRiXyg2IUROZ1I/ZURfRytieyZAcXV4bEkt
JTFfdmBRP1BKPlAoeU85ITVPY01aKwp6U3BNK2VANCFyKkZAeVRobmpYSTkySSRhWTdBIVZpXlVn
MT5zakl0QXs1QjFnJWY1QU1wUysmTWBzS2hsQ3VncUcKelVlMSgrVHw8Nyt5JmZfUnFycUI9JSt7
KDF3YDA7X21NVCZiQDtCfV9GK01xVlkrIThuYWI9MWxDUU1pYENiWH1ACnp4VnElPWF+Q2VPa2tI
Y0JXYDQ7JElrdiZ1SHQ3T2crK1N1VGkmYlRpWGs7O0l6azliZklTT2FyU0JmVjBCcyVjYwp6KVI2
RyRtNHFpO2l+ck5HX307PUV5LUUlZTE1QUQpMC1abTxIbjB5dVl3WUV5NUEkTE1NbF5EYTNubn1o
Xnp+SEAKencoZ3c9NCFMWlo4fiExQThfI2pONVcwUSVMKi0zZEIkUXhKMD9wb2p0K258Xyg2TG42
ZHk7bF5VKHt5dTVNQyZQCnpXcGtNYjNUa0VoVzRReV5NK3VPZGNvaSMwWk5zY1dEMkYtTSVGKiM1
a0NZJHstKVRsLWNYKnhiMmwze0h3WCtpWQp6STFudkNSK0IhQkk9LVpYNG5jKiM1dlg0KlUpU2dH
dypjO098M3RJQ3c4fEpXa05vQHdMTXAtYSlMVzFHbDFHPlcKejtZdi1WPWBqUlRhfG9lb2RMfE5J
KmVCRWw3N35MZmZzYmk5JFhLMERQUFIoIVJyMDMrVHJ8ZGFxaT0qbFBANnQ9CnpzXiZfISZuc2tj
a3klTnBrSiNaR1Rtez81d3ZaVFpgbkk+eDhQZ151QndWSCgwWVNKXip+cnViLT43a0M1OHtqVgp6
YFpiM0xoSCN5dT5kNj9DQzRncm1scXZ8UzA3MnxxaEohfVBCTCN5UyFLbTZpX19yakZRZjNqdHhp
Zmx2RytIdVkKeillI1cma3JnYEIoM0BHWjE0c0EzKENOe21OQlVSaG4kJT00eDVxKGJod2d4U1B5
UjklRm43T2hwKzk9WlVVYn4jCnopMGlfZHVZQ3laNld0fXRncyU0O2VmcmxnTytBJXB3KkBWM14q
dXJZdT96fHlxRCNgVy0kODA9SldqRnZsYF9GSwp6TGxpdXFfSD9MM0xXcTxIQ3VsTkRyem5Ec001
eWlrLUw5a3h5QXNrUzZ1OChvV2QmPVdVITVaSGx5OSlsYDQmZSoKekVQfigxfDcqKVNZQ2k/KUxj
emdOUiMmKVRCejQrZ2hNalo+ZGFJUnEqZ3lXNVN5R1p0SGV7MiFITEh0K3l6Tl4kCno3KUh9YFM9
cF96KS1gYkVDez9vfjRUY1lRVjEpQHQjOHRSTjxoaDJLb0xXYkBQMTl+YWJabkZHKilUSVU/JGs2
cAp6NmZBK0s0LSsrZm9BUnV6WH5NNkQ8MjhnPnZ1M0sleDkwdlNWXihFWjltOzxiOFdOJmZBS2dF
cXtPTWVfKiRjOG4KemdwRXhPc1IoeFAkPl5RTktOYmBoazVOfT16aiQtKHNMZG1RXmkhWTVYSlMo
fmg1RF8hOXdMeXVnMklEVShRSjAlCnpQU3BHRFVPenQlajZxREBjRmUmQzczdTxCOG5LJWxTRllT
bGckNFFyUyk0JXhKJDZ3Z3dIUDBFOH52Y1llS2J+VAp6UCNDT3RRTjtMM1JWNTNtbTRodEktaCpT
fUx0a09pX0tBYEs2MlM0dSRaQl85R1B7TFprdDdoVWROKFZ9MHErMkkKekNsUWM0ZiUpSmBSU1Q4
RlkzYj4zcmw2WThqbCleb0lsJkZrMTItUzI2IWJNamNLX31SSjlsYWVxbnckeGZBRSV5CnpKTi08
fCRjO3RrRzNKcG47Ukw7NyFtZmxXUWxlWHptUCQtQ1M3Q1pHZEI2ZGNCTmh+VjtqWDdSMXAjIytK
VzRubwp6R2FvXklVQjFvVHcoZVdMWjx+WCZ2ej90PyFvenlOP2xZZGZwYWMpWjUjXlZEY3s5QXNB
N0x6JUp1JTk9Rl40Q3AKenUlPzFsTXFYWG5sM1lHRFV+NyUrQiZ6OCt5RVo8JlNCT2JYLTYjZzdg
KlY3ME0yfWtAOHowfV9ndSNAO2kkKE0yCnpQb0d7QypYNXx+RDJSS19ORm1gKCM5bW82ZF50UTwo
aEIpTj9NNGlFa0lwan5UKVlBMDZzcnc/VTdQbV9TWlJRKQp6amB8MEZDRypRYFk5PklhdVgwK3dU
SyZkRk0jcGpacWNJOyEkakRlYUVaQ1ZOOXtVI2M+RDNFa2IrcSEkSSlSZCkKempnMmh2MlR7QjV4
PUJxSEMlNyhRSzNobldHflc5YThTaVdUISkzI3U7bnJidSZQV0xfQl89O1ByMkI7UFpxKHppCnot
JmZ9aj1HK2YoOFBjKiVjcmlfKCFjcnI5NHZrVWRnaTNnREsqRHI2TEIpZCV5bVRLbVZfNVElOFhV
R1ZRJXBnWQp6bWBnI3d5PnwyYWBHT3d7QDFEKzFBWDxUYTAweW93VjE/ckxuUSsoUys1WUx3UXgq
K3JNJlpUfTc3fDt5TkM7aHcKemYqPnh3cztjX0theDNvYzsjOCpBan5ycl5DNjRtKTlwWlA4JHQ1
cilCTVg4OG5xRDg2R0N+Sj1PQmZ0bWVuaiZjCno9TSlmKU9iWnFSTHxqO1ooOEtZVkZ6PWZwV2Fn
cT5zTEU2Rjw2dTNXI09+WCM1c09acEhjaWEoK0VNfGVhMzJHNgp6KyVvd0BlMDtwV2UtMEdeVzJU
ZFQkcU9LMj14QXNKTnVqaGBvUEVXSHlATUh5aTVZPCNJbHszPCU4ZC1LNUJUMjkKejgrOFBubCN7
fUVxQTFFfTVVNmpsSmtnJnRYfCN7RiQwKj54JWhxNHUodVVRT1NVM2MxeSF6diFCNn54dm1LZUA4
Cno+TTFFSDRvIV9JP1hvTEYtOz5GRG9abyZZemtgNGZ7JVZrbW5KIX1eKy0jQFB2O19IaTtqUiFO
bmwzS0JvU0okJQp6N3VwbCpgKndRZDR3QnVTI2w7PypIcj56OV9pZTgzX3c5KVZ0PnY1OXo1fmln
Mio1d01DNGR4ZiFYJUByYjdtMEgKej5rKH1YQ0IyblZIeD05fkBIPCVGQkptVTVrP0FBPnJtfFhp
SXRua1lWSEw7O3QpS2ZSczJVbyEwWUBVNlZIQyVTCnpBMz11aDQyLTVgS1d6Xkh1UipDKVg7Mzcp
MkhgeSp5dkxtJXtXd0hUaEM+JUVgfGV7bUV5NCtOJU5BX25IWnpSMAp6TD9udl9AJiFqOEx6U2Aw
Pz54KjhfPzRjMTE3ZjM+RkpJRClIUSYrKG5JPzdQJnc9VVg4N2Y9TFVqSjFQZnghVj4KekZoNDA9
P1Ayc3Q7Rk4mIyM0RE82KUc+cGtyTF8/cXRLX319Jns5KiZ4cGtgb1RfYUc2dkw2UEdBYG1vcEo0
PXduCnpfJCk3Q3lqNHYteTk+XztEa2JfeHdXQTA7OF87KSpvX0Noe0Z1bU9tbDlLWkg2TDRDcm5l
eUdkSmpfd2dCX3d6cgp6dW9Be0JXaCt9Kio2PmBRRGA8fE9pWFVqU1pTcyg1Z28wPj5wRn52YzVs
XjIhOVR1RGIzUFVJJHtxbiFQdHd6Wk8KelZ2I2goTmImZ1gqQlQyYHQwODlzKEJTPGcjNGlLSjtD
dXhAQkpKLU5tU1duamZudXBKRz5JJTsoP31VRVdrTHpfCnpeN1cwYm9zNz58PitGUHZ6JWgjOHZA
PDBaa08ofElKI2k/WkM9NXlCUkJ1b2xVYCtOQU5rcGdyI2hSTDstaWsreQp6UCNuclpZTS1QMmw7
QV51RTFATDE1ZDsjfUs5SSZDLUJGQVpIV3FxcFlTR1hmMyNYJmghUz1ffHFsTEJ3V3Rjd0UKejhs
WWozbSVmckN3al57YzIwfUdwJGEkbjAqc35gamFINnc/KlptSzhEXiE9UkV9X1AkNHFHSDkrIVNV
RWdNbVk/Cnp0YlBoOVVEb1RYMTUxV0dMVGdsbHlCSzRZQzNodyNze2w1dHRKaEpLdkRrVTs7MmRB
KitVSzlPbl9ASSRDQ2h7JAp6NTFoJWI1VlFGdGU5QD9JUjREel9ARH5pZ3gqRGhgQUYtJnBzWXA7
ejhINjktdzEmQkNmJHg/ak5BQSlnR2dnTCMKekw7KzxmUUNMKmUwZWZ+Pm1jU25YIyNtRTBlRj93
YDh0Qm58KV5qPXNDb1JeNDsmTHE+UXAkZEs8UCtBOTgqRjlzCnpqfmNvYldiZ0hCOVBoI2JtNGt6
Ky0hKkJjVEM1d25oY3UzQ1YtUXlZPER9YCtyZkVDYWBXPEFWRElsQiFyPUhYMAp6OyhXKFdycT4x
b0JiNGA0MDtPS2koRzw3aHZYTlB+NHUhNnU+WXdEO2lFWFhUN2RgVHZ7IXZEeTlyZUA5JXllQWgK
emFEfTRjPzVVKDNNclpKcmBfYTI9RjxZSH5yYiE/Sm5GUjVQNzhKaW5oRVJaeDxgUmo/JC1XMHBt
QDctaXUya30rCnp4JHRteV9LWF4kPGhRTCZTSUtYUz03eU0rZVF8TmklUjgtbHgxZUFoPCtIRlhr
I21PZj90UT9KS3EoQWJiOTNMcQp6KGNJK1dGPDhyZj5Xb0YweSM0dns8NUtMNVEzQGxoWFk5Jk9E
SWUmNmkwYWFDT1hGI2hKXil3WVpgcVZhe1kpcSgKejUmVTRZcFRBRnF0e2gzNTRsZVQxMzQzO1Zm
MHZDfGRVK3R4OUtGPXdebTs2e3Z+fDgmc35qIz15YkFBWU52dn5HCnoybnJvKVJoQG5feU1xeHx0
LXs9QXhTd3Y1JXN3PEJnZisjOTkoUHs4SmZTdk5YYT9yUTBPfl54SCQ+QDA3fEMlSQp6a3AmRCVa
PyFOOCZEJXJgMCRVTSs9KG9sNyRyJnZJZUQ7JDk2PWQjKmItYUp0MytyTFFVcGVXWiojTzZxVV44
OFcKejBnIXNVR0ZPOVo7WFgkIXM0Rjs/Q0hVOGZzYVlZPSROayVpZmszT1JqJUR+OWRGdEhrKDQq
NyNvMXgqYEhffVEjCno7MyNad3Q5dEpWV2p8b3dLRllZJndiQnRoTFVoJiRiPCpJcXZOOCYxQz42
QX50eGNxO1J+MyNXZyNgc0N3Pkd9bQp6VCZpfiM2RHhnfUI0cmJ0TXRVQjxTblZWcXZiSiM8Pl9g
K3RuODxMJWZgWlRmamUpOTU7KUlfcmooMXx5PiomRFgKeklnRkhpb2xOaFkzP1VfN25OT1chK1kl
fWJvJCVvdSUrQzNIcGNtLUxwc01HfXBQLTJwTjRDcz0lPXx9bmYzUndGCno+MlFPbmFIOzUhMXpA
UVkyRzdjcE9+SiVoSTg4PHdla0MhcFlVZHxHYlNab0habTY2Yml9bkh8MlY0KjFSUHl3MAp6XkZ5
SypCVUkrRE15Kyl6cFZyMXR4TWx5STc2NUdqcHxkc2ZzT0xiMSs7NGJVSztjZHA7dHc0PHQxViYk
RWdCYkMKens+YVljNG9EPHJIPzJ2dmA5ZFAwTWBrU3d4RSh2RCUkcTBJfEFQNEY2ZHg7K2FJdHok
OWg+cEZ5ak0jbEFCKmY1CnpiP340anhIK1leQ2d2cU8mUWVvMT9AQVReSCp6I1coPE9lSl8la0RZ
PER7elAxWnk2PjU2I0FnX0VsaFdfN15gQgp6aG0jY1dJY1JwYTtQT1BGc31+dGs1RT5NWXI7Y0ZZ
QDdkclg2YzVVTnk0Tmt0NnRvPl9YVnNLV15Dfm9gJWBaTCMKekZjTkdreT1tc00jeGs2biYlKWVv
UWlkUFIhfkhLMj0lXm15NG5kV3JSfm48T2VKRXIwbE1vPFpXKD5lfSFufGJUCnpsJDM7b1UhO25k
eWlCWXUlc3JAMGMoblRWWHtmbnJeUUZsWFE7TXFiX0Mjal5HSnJ+dWUkemk3en0zP3dgM29AKAp6
aTZmWGhmLSUlUHJQcWNDb2okelp3flU7UW9kO3IrLUtCcUFBRzM1MHl7N1B8Q3haMn0zRWEjQ283
ajF6Vyo7OHwKekExaCZBIWdQeVdhRH5ETVMlYmBHdD14LUR4KWQzJnQpRFpkPCZhYGplKkNoY19u
ZEBpayhmezRoQkVfJTl3NWd+CnpvVml3OSVHZkluQ24yM1RhS3pkcyptZ2ZsalghIXhaPEl6ZkJm
U2p6QzheUTteSlNeNjVCckhSPEJ7S0lHaUhRfAp6Wj09QzExTThVejtrRG85Ukkway15X0dENEst
TXZpOy1AZEtYcmgpVislPD4+ISh3IUBIZTdkQjBQPzZNKjtebVQKek9IMXgldGtecjM8NHN2Knc5
RGMwcTR2S185bWJnaTtUZTVlUUwhTXsxMGBeeFF7YjxqVSkhOHF7dnM0UkNJbTl7CnotMTheaSZD
Y0ZFR3s5IVBZdWFLJVBLPjdQeWlmVzw0RmE4MlJWTH0oSVl8JTZvKVF1OyFUfGp8OCNkVztzXzNg
Ngp6bD5FM14kNmF4M1lgO2spWFoqbVJGM2dwSmdiSWB3PWdxUVcrb0t5TUdjcG9ocmNUO1ZOZTV2
cWZLNXl2RFVjfWcKekNeaHRiVDZDQVJMNDZ8NXojd2pecjJQfWNSbGEzQilBUk5FaylTXjxQQl9W
YysyYyl2Oyt2elFKTTJyU2xoJnMjCnoyNGJNP297WlZ8JU1VUSR5dmFKdk1rNTYoNlByYG96fXR3
KF97U2VBKmhfeGRqYUhCJkQ/eTM1JF8ya1ZgczF8dAp6XyVffnVxSzYzMGgwPipnRkJjd0xhaHtr
ZlAjTzQ9YG8lUHVxYkd9dEA4eyV2ZndOc3hqUlRvUmBmalhxYWdhSEwKemZPNn1uUz9ZNEljeygx
XlU7WlY7aWpEKX57MD5ybVZUV08yPUltVX1pZWhedmR6UihAX1MrN19SO3V0SjltbXlECnoqRHo+
RmcqKUxAQ0hjVjkmVGlufHRUNT0wdnNJYjdrTXl9IyVxUHgoQ2pfdnxMey1gWjh+eT4xeHRMPEZ5
Z3dLcwp6Y307d2pRMDgzPjxfJjxTSWVRe1JOXyRuWXh7PVhNRVheXnJwfTF4MG50cT5eamtWb1JI
djw4cHlwflJRQGpMQXEKekZ1Xm0qVVRReCNWenRMNGM3MlIqWWZYeUltMlQxfDsmMlA2VClDfVZU
WnZNQGRzSz9oN2RVenlWS3c9TEt5YTMoCnoxa3BSND4xIU17aFlBbFNHeS1BXkF0RSVMTHc5aWtO
aH1lVyNZc0dARV9LO3F5cEQ+VFl7VTJRaWN3S2tyZ3VTJQp6ITJLKiMpSztvc3hwSDN7Tm4oJmAh
QzNDKGdgK3BWaU9iZzFWTDc/RWhzfjc1YUduK28rfS0jYGk0TiFHMTZVMj8KellSSk00NElSKWxo
UE13NTR1O2JQbFlgSyorfEE3d1Zga1BNQylUVH5zS0J2dT1rRy1YVjduMCp4aUZAU0cxMVlXCnpg
NWFrPjhDTGIlTHI0dTZSTjQlbGVJMVdsZDs0OzM1fithVTQpeHFzWnBYdVI+I3NLWDlSMDFPKXN4
IWMtbzFMQgp6KXw0cn52RStDLXZXRXshbFV2Qnh1bW5IQlF5WmhJZGd1T3FxR1ZpaDFRNllrcklI
KjRXcnp0YSQpeCN9SnZ0fjEKelVkVHU/JnVVbTBXQFp2TWVtR3tTYSpkST9YZVRNcU5LU0NTKEpV
Y3BmY0NuRSMmZy1XRkMlPkp1d0MmKXoyVyszCnpSSW5MSiU9a19FdSstWSoyRnNvPypIaVI0NEJ2
cEQ3V2R9TUh+Xm56JFZRQ0xhJTd0MmBjUUB6MUdAMSVLZmk1Pwp6d3ZBamU+SWoxIXlfUmtfcyti
PnhDTHIzZ1hlZjdeR0lwUCVpJVpWcDcxcnYhJXYkfVBiPShOcHNRWUpIUnpmPXkKel87fis2MkR6
dFEkOTQ5bnBMVjVQbzkmVmV2YDtyeDwzQWwmUnBeKVNKODVtIyZkVFFpcFpKKigjWUgoYT1PQjRR
CnpZNGBII3p1YClaSTRwKiE9PEBsS3IzQmIwU1BWemxJYztiPTVvQGoxRyhvMy1CUTdmVktVa2B+
PHFsYEwpR0ApVwp6YSEoc0k+Xz1NdDgmNylMe2J8SVJIaWV3N3g7YC07KnA4WGJIWGQoTVV2Klgw
MyV+d34wbSpYYG0jcEYmKUN6d2wKejdvT2N+JntmeWIhTkYkMWY8YmF9Um5eckw1SWxNVzJle3xR
ZTlWTjkmKGpxdUJDMiU3bFkmZDhJQ1I+RFNLc0w1CnpuV2RjUDtMUTl0KmZhNlRRenZ7e2ZtYkt3
YSR0P2Ercm5XWFg1UUBrVD96RWlzRHR7fVg8QGcyOCYmdiF1UW1GZwpvNVloaHNVSD1zfCpaPDhP
ZSVqdS1yJVltQ2B8Zn50RkBHPk9vaSs4bSQ/fjI1MGE+YzJ3RXpHQgoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3RleHQtc3BsaWNlZC1mb250LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNwbGljZWQtZm9udC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc3Y2YwYWE3YWYxZjBkYjg1NGU4NzY1MWFjYWMzNTk5
MjY0NGVlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0
L3RleHQvaW50ZXJuYXRpb25hbC90ZXh0LXNwbGljZWQtZm9udC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0NCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg1MjIKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDUyMgorICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDE2KSBzaXplIDc4NHg0OTgKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTB4
MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTA6ICJTaW1wbGUgdGV4dCBw
YXRoOiAiCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNjN4MTkK
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDExMCwwKSBzaXplIDE2M3gxOQorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDExMCwwKSB3aWR0aCAxNjM6ICJzdHJpbmdceHszMDBDfVx4
ezMwNDJ9XHh7MzAwMX1ceHs1OTA5fVx4ezMwNjN9XHh7RkYwMX1ceHszMDBEfVx4ezMwMDJ9Igor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzg0eDIwMgorICAg
ICAgICBSZW5kZXJCbG9jayB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxOHgxNjMKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOXgxNjMKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE2MzogInN0cmluZ1x4ezMwMEN9XHh7MzA0Mn1ceHszMDAxfVx4
ezU5MDl9XHh7MzA2M31ceHtGRjAxfVx4ezMwMER9XHh7MzAwMn0iCisgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDE4LDE0OCkgc2l6ZSAweDE5CisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0g
YXQgKDAsMCkgc2l6ZSAyMjB4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MTY2KSBzaXplIDIyMHgxOQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTY2KSB3aWR0aCAy
MjA6ICJceHs5MENBfVx4ezU5MTZ9XHh7MzA2RX1ceHszMDRFfVx4ezMwODl9XHh7MzA0RX1ceHsz
MDg5fVx4ezMwNzJ9XHh7MzA0Qn1ceHszMDhCfVx4ezgzNDl9XHh7MzA2RX1ceHs2Q0UyfVx4ezMw
MDJ9IgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyMjAsMTY2KSBzaXplIDB4MTkKKyAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDMxNHgxOQorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxODQpIHNpemUgMzE0eDE5CisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxODQpIHdpZHRoIDMxNDogIkFCQ0RFRkdISUpLTE0gYWJjZGVmZ2hpamtsbSAx
MjM0NTY3ODkwIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzMTQsMTg0KSBzaXplIDB4MTkK
KyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMjQ0KSBzaXplIDc4NHgyIFtib3JkZXI6ICgx
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMjYyKSBzaXpl
IDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTkK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJDb21wbGV4IHRleHQgcGF0
aDogIgorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTYzeDE5Cisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMjQsMCkgc2l6ZSAxNjN4MTkKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgxMjQsMCkgd2lkdGggMTYzOiAic3RyaW5nXHh7MzAwQ31ceHsz
MDQyfVx4ezMwMDF9XHh7NTkwOX1ceHszMDYzfVx4e0ZGMDF9XHh7MzAwRH1ceHszMDAyfSIKKyAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDI5Nikgc2l6ZSA3ODR4MjAyCisgICAg
ICAgIFJlbmRlckJsb2NrIHtTUEFOfSBhdCAoMCwwKSBzaXplIDE4eDE2MworICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE5eDE2MworICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTYzOiAic3RyaW5nXHh7MzAwQ31ceHszMDQyfVx4ezMwMDF9XHh7
NTkwOX1ceHszMDYzfVx4e0ZGMDF9XHh7MzAwRH1ceHszMDAyfSIKKyAgICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoMTgsMTQ4KSBzaXplIDB4MTkKKyAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDIyMHgxOQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwx
NjYpIHNpemUgMjIweDE5CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNjYpIHdpZHRoIDIy
MDogIlx4ezkwQ0F9XHh7NTkxNn1ceHszMDZFfVx4ezMwNEV9XHh7MzA4OX1ceHszMDRFfVx4ezMw
ODl9XHh7MzA3Mn1ceHszMDRCfVx4ezMwOEJ9XHh7ODM0OX1ceHszMDZFfVx4ezZDRTJ9XHh7MzAw
Mn0iCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIyMCwxNjYpIHNpemUgMHgxOQorICAgICAg
ICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMzE0eDE5CisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4NCkgc2l6ZSAzMTR4MTkKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE4NCkgd2lkdGggMzE0OiAiQUJDREVGR0hJSktMTSBhYmNkZWZnaGlqa2xtIDEy
MzQ1Njc4OTAiCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDMxNCwxODQpIHNpemUgMHgxOQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>