<?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>31106</bug_id>
          
          <creation_ts>2009-11-04 00:56:15 -0800</creation_ts>
          <short_desc>Sanitize web fonts using the OTS library</short_desc>
          <delta_ts>2009-12-03 15:10:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Sato">yusukes</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>agl</cc>
    
    <cc>bdakin</cc>
    
    <cc>bksening</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>ifette</cc>
    
    <cc>jdaggett</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>jshin</cc>
    
    <cc>levin</cc>
    
    <cc>paulirish</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160362</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 00:56:15 -0800</bug_when>
    <thetext>On Chromium, we have to transcode a web font before handing it over to rendering libraries such as FreeType2 and t2embed.dll, for security reasons.

Chromium bug: http://crbug.com/17818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160421</commentid>
    <comment_count>1</comment_count>
      <attachid>42480</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 06:12:20 -0800</bug_when>
    <thetext>Created attachment 42480
transcode_webfonts_by_ots_v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160422</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 06:18:11 -0800</bug_when>
    <thetext>[+cc: levin@chromium.org, agl@chromium.org, jshin@chromium.org]

David, Adam,
Could you please review this change?

This change depends on a patch on Chromium side which is under review (http://codereview.chromium.org/363001). So please do not cq+ for a while even if it&apos;s r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160436</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-04 07:27:04 -0800</bug_when>
    <thetext>How is this chromium only?  Would this not be useful for other ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160442</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 08:07:01 -0800</bug_when>
    <thetext>Yes, it should be useful for other ports. However, since the transcoder is kind of experimental, I would like to test it with Chromium&apos;s dev channel first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160443</commentid>
    <comment_count>5</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-11-04 08:21:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; How is this chromium only?  Would this not be useful for other ports?

I haven&apos;t been following this since the initial exploratory patch, but as I recall the transcoding involves stripping important font information like hinting tables.  So even post-experiment this code may be a regression on other ports that already offer fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160444</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-04 08:25:19 -0800</bug_when>
    <thetext>There&apos;s no reason why hinting code cannot be sanitised and passed through, but it&apos;s not in V1. The current thinking is that it&apos;s a lot of code and @font-face is mostly used for large, heading test rather than for the main body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160462</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 09:17:50 -0800</bug_when>
    <thetext>Actually the transcoder now supports font hinting in glyf and CFF tables, but it still does not support glyph substitution tables. As a result of the lack of the GSUB support, web browsers that use the transcoder can&apos;t handle web fonts for some complex scripts.

&gt; this code may be a regression on other ports

So it is correct at present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160485</commentid>
    <comment_count>8</comment_count>
      <attachid>42480</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 10:14:10 -0800</bug_when>
    <thetext>Comment on attachment 42480
transcode_webfonts_by_ots_v1

Hum... Maybe eventually we would want to wrap this in some sort of platform abstraction and have the OpenTypeSanitizer be a back-end only used by chromium at the moment.  All others would just have a pass-through filter for now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160712</commentid>
    <comment_count>9</comment_count>
      <attachid>42542</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 20:58:14 -0800</bug_when>
    <thetext>Created attachment 42542
transcode_webfonts_by_ots_v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160714</commentid>
    <comment_count>10</comment_count>
      <attachid>42543</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 21:05:37 -0800</bug_when>
    <thetext>Created attachment 42543
transcode_webfonts_by_ots_v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160715</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-04 21:09:14 -0800</bug_when>
    <thetext>I&apos;ve created a new patch that introduces platform/graphics/opentype/OpenTypeSanitiser.{cpp,h} class. Can you please take another look?

(and please ignore the v2 patch. I forgot to add ChangeLog to v2.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160893</commentid>
    <comment_count>12</comment_count>
      <attachid>42543</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-05 11:25:13 -0800</bug_when>
    <thetext>Comment on attachment 42543
transcode_webfonts_by_ots_v3

LGTM. (I am not a WebKit reviewer. You need a real review also.)



&gt; +        handle web fonts in a secure manner

This ChangeLog entry should be more descriptive:

Add support for OpenType Sanitiser (OTS). This is experimental code that is Chromium only for the moment. It parses OpenType files (from @font-face) and attempts to validate and sanitise them. We hope this reduces the attack surface of the system font libraries.

&gt; +    // This is the largest web font size which we&apos;ll try to transcode.
&gt; +    static const size_t maxWebFontSize = 30 * 1024 * 1024;  // 30 MB

This is pretty huge, but looking around it does seem that some fonts are nearly this large!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161023</commentid>
    <comment_count>13</comment_count>
      <attachid>42610</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-05 17:23:10 -0800</bug_when>
    <thetext>Created attachment 42610
transcode_webfonts_by_ots_v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161024</commentid>
    <comment_count>14</comment_count>
      <attachid>42611</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-05 17:25:29 -0800</bug_when>
    <thetext>Created attachment 42611
transcode_webfonts_by_ots_v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161025</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-05 17:31:02 -0800</bug_when>
    <thetext>Uploaded v5 patch (please ignore v4. it&apos;s accidentially uploaded, sorry.).

- Revised WebCore/ChangeLog as agl suggested.
- Added a patch for WebKit/chromium/DEPS following Yaar&apos;s comment in http://codereview.chromium.org/363001 .

The code is not changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161028</commentid>
    <comment_count>16</comment_count>
      <attachid>42611</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-05 17:40:37 -0800</bug_when>
    <thetext>Comment on attachment 42611
transcode_webfonts_by_ots_v5

LGTM.

(I am not a WebKit reviewer. You also need a real review.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161224</commentid>
    <comment_count>17</comment_count>
      <attachid>42611</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-11-06 12:24:12 -0800</bug_when>
    <thetext>Comment on attachment 42611
transcode_webfonts_by_ots_v5

Minor quibble, but you should use American English spelling rather than British English spelling, e.g., we don&apos;t call Colors Colours. :)

This means changing sanitise to sanitize, and OpenTypeSanitiser to OpenTypeSanitizer.

Can you explain more the motivation of this patch?  Have you run into specific attacks/exploits?  How do other browsers like Firefox fare?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161237</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-06 13:23:05 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Can you explain more the motivation of this patch?  Have you run into specific
&gt; attacks/exploits?  How do other browsers like Firefox fare?

These questions are difficult to answer publicly.  We can either talk off-bug (e.g., in email) or we can create a security-sensitive bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161251</commentid>
    <comment_count>19</comment_count>
      <attachid>42611</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-06 14:47:50 -0800</bug_when>
    <thetext>Comment on attachment 42611
transcode_webfonts_by_ots_v5

This is a feature, and there should be queried off an ENABLE(), not a PLATFORM().  There is nothing platform specific about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161336</commentid>
    <comment_count>20</comment_count>
      <attachid>42691</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-07 01:39:23 -0800</bug_when>
    <thetext>Created attachment 42691
transcode_webfonts_by_ots_v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161337</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-07 01:44:01 -0800</bug_when>
    <thetext>Thanks for the review! Uploaded v6 patch. Changes are as follows:

- Fixed class and method names: s to z.
- Removed #if PLATFORM()s. Use #if ENABLE(OPENTYPE_SANITIZER) instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161384</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-07 17:21:52 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Can you explain more the motivation of this patch?  Have you run into specific
&gt; &gt; attacks/exploits?  How do other browsers like Firefox fare?
&gt; 
&gt; These questions are difficult to answer publicly.  We can either talk off-bug
&gt; (e.g., in email) or we can create a security-sensitive bug.

Adam, please email webkit-security with the details if you don&apos;t feel comfortable discussing them here. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161411</commentid>
    <comment_count>23</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2009-11-08 05:21:16 -0800</bug_when>
    <thetext>One small nit, if you&apos;re basically reconstructing the font, you really should remove the DSIG table, as it will no longer be valid for the reconstructed font.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161412</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-08 05:33:14 -0800</bug_when>
    <thetext>(In reply to comment #23)
Yes, the sanitizer always drops DSIG table from a reconstructed font. It recalculates  checksums for each table as well. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161461</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-08 16:57:35 -0800</bug_when>
    <thetext>(In reply to comment #22)
I believe there was a similar discussion about half year ago. Can you please check the bug 25245 which is marked as security-sensitive?
https://bugs.webkit.org/show_bug.cgi?id=25245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161505</commentid>
    <comment_count>26</comment_count>
      <attachid>42691</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-08 22:27:25 -0800</bug_when>
    <thetext>Comment on attachment 42691
transcode_webfonts_by_ots_v6

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2009-11-07  Yusuke Sato  &lt;yusukes@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        handle web fonts in a secure manner
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=31106
&gt; +
&gt; +        Add support for OpenType sanitiser (OTS). This is experimental code that is
&gt; +        Chromium only for the moment.

It isn&apos;t for chromium only anymore.


&gt; diff --git a/WebCore/platform/graphics/chromium/FontCustomPlatformData.cpp b/WebCore/platform/graphics/chromium/FontCustomPlatformData.cpp

&gt;  #include &quot;FontPlatformData.h&quot;
&gt;  #include &quot;NotImplemented.h&quot;
&gt; +#if ENABLE(OPENTYPE_SANITIZER)
&gt; +#include &quot;OpenTypeSanitizer.h&quot;
&gt; +#endif

The &quot;if enable&quot; should be in the header and then the include should be be done with no &quot;if enable&quot;.

&gt;  #include &quot;SharedBuffer.h&quot;

&gt;  
&gt;  #if PLATFORM(WIN_OS)
&gt; @@ -245,6 +248,14 @@ FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer)
&gt;  {
&gt;      ASSERT_ARG(buffer, buffer);
&gt;  
&gt; +#if ENABLE(OPENTYPE_SANITIZER)
&gt; +    OpenTypeSanitizer sanitizer(buffer);
&gt; +    PassRefPtr&lt;SharedBuffer&gt; transcodeBuffer = sanitizer.sanitize();

Use RefPtr not PassRefPtr in functons.

&gt; +    if (!transcodeBuffer)
&gt; +        return 0;  // validation failed.

One space before end of line comments.

&gt; +    buffer = transcodeBuffer.get();
&gt; +#endif

&gt; diff --git a/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp b/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp

&gt; +#if ENABLE(OPENTYPE_SANITIZER)
&gt; +    OpenTypeSanitizer sanitizer(buffer);
&gt; +    PassRefPtr&lt;SharedBuffer&gt; transcodeBuffer = sanitizer.sanitize();

Use RefPtr not PassRefPtr in functons.

&gt; +    if (!transcodeBuffer)
&gt; +        return 0;  // validation failed.

One space before end of line comments.

&gt; +    buffer = transcodeBuffer.get();
&gt; +#endif

&gt; diff --git a/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp b/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp
&gt; @@ -0,0 +1,80 @@
&gt; +/*
&gt; + * Copyright (c) 2009, Google Inc. All rights reserved.

Use a capital c
no comma after the year

&quot;Copyright (C) 2009 Google Inc. All rights reserved.&quot;


Add &quot;#if ENABLE(OPENTYPE_SANITIZER)&quot; in the file right before &quot;#include &quot;config.h&quot;&quot;. Put the endif if at end of the file &quot;#endif // ENABLE(OPENTYPE_SANITIZER)&quot;

&gt; +#include &quot;config.h&quot;

&gt; +namespace WebCore {
&gt; +
&gt; +PassRefPtr&lt;SharedBuffer&gt; OpenTypeSanitizer::sanitize()
&gt; +{
&gt; +    if (!m_buffer)
&gt; +        return 0;
&gt; +
&gt; +#if PLATFORM(CHROMIUM)

I know you did this if PLATFORM at Eric&apos;s suggest, but I think it turned out in a form that no one would use.

So I would just get rid of *all* &quot;if PLATFORM(CHROMIUM)&quot; in this file. If others want to use it in the future, it can be adjusted then to meet their needs.


&gt; +    // This is the largest web font size which we&apos;ll try to transcode.
&gt; +    static const size_t maxWebFontSize = 30 * 1024 * 1024;  // 30 MB

One space before end of line comments.

&gt; +    if (m_buffer-&gt;size() &gt; maxWebFontSize)
&gt; +        return 0;
&gt; +
&gt; +    // A transcoded font is usually smaller than an original font.
&gt; +    // However, it can be slightly bigger than the original one due to
&gt; +    // name table replacement and/or padding for glyf table.

I&apos;ve typically seen glyph instead of glyf but I did see glyf in one place on the web.

&gt; +    static const size_t padLen = 20 * 1024;  // 20kB

One space before end of line comments.

&gt; +
&gt; +    unsigned char* transcodeRawBuffer = new unsigned char[m_buffer-&gt;size() + padLen];

Use OwnArrayPtr.

&gt; +    ots::MemoryStream output(transcodeRawBuffer, m_buffer-&gt;size() + padLen);
&gt; +    if (!ots::Process(&amp;output, (const uint8_t *) m_buffer-&gt;data(), m_buffer-&gt;size())) {

Use c++ style cast. (reinterpret_cast). instead of &quot;(const uint8_t *)&quot;.

&gt; +        delete[] transcodeRawBuffer;

This goes away when you use OwnArrayPtr (and then the &quot;if&quot; will have one line so the {} will go away on the if clause.)

&gt; +        return 0;
&gt; +    }

&gt; +    const size_t transcodeLen = output.Tell();
&gt; +    return SharedBuffer::create(transcodeRawBuffer, transcodeLen);

I think this leaks but once you switch to OwnArrayPtr, it won&apos;t.

&gt; diff --git a/WebCore/platform/graphics/opentype/OpenTypeSanitizer.h b/WebCore/platform/graphics/opentype/OpenTypeSanitizer.h
&gt; + * Copyright (c) 2009, Google Inc. All rights reserved.

Use a capital c
no comma after the year

&gt; +#ifndef OpenTypeSanitizer_h
&gt; +#define OpenTypeSanitizer_h

Add the if enable here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161518</commentid>
    <comment_count>27</comment_count>
      <attachid>42738</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 00:58:59 -0800</bug_when>
    <thetext>Created attachment 42738
transcode_webfonts_by_ots_v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161519</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 01:08:44 -0800</bug_when>
    <thetext>Thanks for the review. Uploaded v7 patch which addresses all the comments except this one:

&gt; &gt; +    // name table replacement and/or padding for glyf table.
&gt; 
&gt; I&apos;ve typically seen glyph instead of glyf but I did see glyf in one place on
&gt; the web.

OpenType fonts can have two glyph tables, &quot;CFF&quot; and &quot;glyf&quot;, and the comment refers to the latter.
Please let me leave the comment as is to make it less ambiguous.

Thanks,
Yusuke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161582</commentid>
    <comment_count>29</comment_count>
      <attachid>42738</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-09 08:18:29 -0800</bug_when>
    <thetext>Comment on attachment 42738
transcode_webfonts_by_ots_v7

&gt; diff --git a/WebCore/platform/graphics/chromium/FontCustomPlatformData.cpp b/WebCore/platform/graphics/chromium/FontCustomPlatformData.cpp

Why did the the include move to the header file?

Just put it here as you like in your previous patch.


&gt; diff --git a/WebCore/platform/graphics/chromium/FontCustomPlatformData.h b/WebCore/platform/graphics/chromium/FontCustomPlatformData.h

&gt;  #include &quot;FontRenderingMode.h&quot;
&gt;  #include &lt;wtf/Noncopyable.h&gt;
&gt;  
&gt; +#if ENABLE(OPENTYPE_SANITIZER)

Now that you have the ENABLE guards in the header file, you don&apos;t need them around the include.

&gt; +#include &quot;OpenTypeSanitizer.h&quot;

I don&apos;t understand why this include is here (instead of being in the cpp file as in the previous patch).

&gt; diff --git a/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp b/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp
&gt; diff --git a/WebCore/platform/graphics/mac/FontCustomPlatformData.h b/WebCore/platform/graphics/mac/FontCustomPlatformData.h

Same comments about the #include file for these two files as well.

&gt; diff --git a/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp b/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp

&gt; +
&gt; +#include &quot;OwnArrayPtr.h&quot;

Include wtf files like this:

#include &lt;wtf/OwnArrayPtr.h&gt;

and put it after the other includes.

&gt; +#include &quot;SharedBuffer.h&quot;
&gt; +#include &quot;opentype-sanitiser.h&quot;
&gt; +#include &quot;ots-memory-stream.h&quot;

&gt; +    if (!ots::Process(&amp;output, reinterpret_cast&lt;const uint8_t *&gt;(m_buffer-&gt;data()), m_buffer-&gt;size()))

No space after the unit8_t. &quot;reinterpret_cast&lt;const uint8_t*&gt;(&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161731</commentid>
    <comment_count>30</comment_count>
      <attachid>42788</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 13:06:21 -0800</bug_when>
    <thetext>Created attachment 42788
transcode_webfonts_by_ots_v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161737</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 13:10:26 -0800</bug_when>
    <thetext>Uploaded v8 patch.

(In reply to comment #29)
&gt; Why did the the include move to the header file?
As I told you offline, I misunderstood your review comment, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161810</commentid>
    <comment_count>32</comment_count>
      <attachid>42807</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 15:11:43 -0800</bug_when>
    <thetext>Created attachment 42807
transcode_webfonts_by_ots_v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161811</commentid>
    <comment_count>33</comment_count>
      <attachid>42808</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 15:13:14 -0800</bug_when>
    <thetext>Created attachment 42808
transcode_webfonts_by_ots_v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161813</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 15:15:51 -0800</bug_when>
    <thetext>WebCore.xcodeproj was missing from the previous patch. Added the file.
Other files are not changed.

David, sorry for bothering you.

(In reply to comment #33)
&gt; Created an attachment (id=42808) [details]
&gt; transcode_webfonts_by_ots_v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161814</commentid>
    <comment_count>35</comment_count>
      <attachid>42808</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-09 15:16:30 -0800</bug_when>
    <thetext>Comment on attachment 42808
transcode_webfonts_by_ots_v10

Looks good.

It would be good to check other build files (for example other files in WebCore that list HTMLDataListElement.h ) and see if you need to change them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161819</commentid>
    <comment_count>36</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-11-09 15:36:44 -0800</bug_when>
    <thetext>I would rather this not get committed until we have more time to discus this.  If it is in fact a good idea to have this sanitizer, then I believe a copy should live in the webkit tree (just as image decoders live in the tree).

That said, I am not sure it is good idea. What makes one parser (the sanitizer) less prone to security bugs then the actual font parser?  Won&apos;t this increase the attack surface for a certain class of bug?

Let&apos;s not push this through until there has been more discussion on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161821</commentid>
    <comment_count>37</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-09 16:04:13 -0800</bug_when>
    <thetext>&gt; What makes one parser (the sanitizer) less prone to security bugs then the actual font parser?

The reasons behind using a sanitiser:
  * Should bugs in popular parsers be found or known, we can render them irrelevant with the sanitiser. Since we don&apos;t control the system font parser, the time to patch may be unbounded and it&apos;s almost certainly a lot longer than the patch time of Chrome. For Safari on OS X this isn&apos;t an issue, since Apple controls both. But for any WebKit browser on Windows, this is a concern.
  * The system font parser may not be open source. In this case, security folks can review the sanitiser, but not the system font parser. The sanitiser is also a lot smaller than a full parser/renderer, thus it&apos;s easier to review and to see where attacker-controlled values are going.

So, you&apos;re correct that adding the sanitiser introduces the possibility of exploiting a bug in the sanitiser itself. However, given the two points above, I believe it&apos;s a worthwhile tradeoff.

&gt; If it is in fact a good idea to have this sanitizer, then I believe a copy
&gt; should live in the webkit tree (just as image decoders live in the tree).

At this point, I believe that&apos;s premature. But, if people feel strongly, I will concede as I don&apos;t feel that strongly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161832</commentid>
    <comment_count>38</comment_count>
      <attachid>42808</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-11-09 16:46:36 -0800</bug_when>
    <thetext>Comment on attachment 42808
transcode_webfonts_by_ots_v10

The patch still looks fine but I&apos;ll switch this back to r? pending Sam&apos;s request being answered so that it isn&apos;t accidentally committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161853</commentid>
    <comment_count>39</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2009-11-09 17:27:00 -0800</bug_when>
    <thetext>I&apos;m curious why OpenType layout (e.g. GPOS/GSUB) and AAT (e.g. morx) tables are omitted from the sanitizer.  My experience fixing font bugs in Firefox makes me think that these are actually more susceptible to attack then many of the base level TrueType tables, since the complexity of these tables easily hides underlying bugs.

One other thing to note here is that Webkit code currently uses the t2embed library for loading ttf fonts.  There have been known problems with this library in the past:

KB 961371 Vulnerabilities in the Embedded OpenType Font Engine could allow remote code execution
http://support.microsoft.com/kb/961371

If you&apos;re implementing a sanitizer seems like you really should be skipping calls to t2embed and instead using the low-level font loading API&apos;s, as is done for CFF fonts currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161886</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-09 18:10:19 -0800</bug_when>
    <thetext>Yes, the OTS library currently does not support GPOS/GSUB/morx tables. However, &quot;does not support&quot; means that OTS does not parse these tables, does not put them on a reconstructed font. As a result, attackers are not able to abuse these tables.
http://code.google.com/p/ots/wiki/DesignDoc

Though we might add parsers for these tables in the future if needed, it&apos;s unlikely for the first release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161904</commentid>
    <comment_count>41</comment_count>
    <who name="John Daggett">jdaggett</who>
    <bug_when>2009-11-09 18:35:37 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; Yes, the OTS library currently does not support GPOS/GSUB/morx tables. However,
&gt; &quot;does not support&quot; means that OTS does not parse these tables, does not put
&gt; them on a reconstructed font. As a result, attackers are not able to abuse
&gt; these tables.

This means that fonts for any language that requires shaping (Arabic, Hindi, etc.) will effectively be neutered by the sanitize process.  Also looks like this effectively disables kerning, a recently added feature:

https://bugs.webkit.org/show_bug.cgi?id=6136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161908</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-09 18:53:37 -0800</bug_when>
    <thetext>Yes, the v1 sanitiser will kill complex text and kerning. Probably other things too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162370</commentid>
    <comment_count>43</comment_count>
    <who name="Ian Fette">ifette</who>
    <bug_when>2009-11-10 23:53:15 -0800</bug_when>
    <thetext>@Sam - Any update? http://www.microsoft.com/technet/security/Bulletin/MS09-065.mspx was made public today, so hopefully some of the reasoning behind this work is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163634</commentid>
    <comment_count>44</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-13 19:24:36 -0800</bug_when>
    <thetext>&gt; This change depends on a patch on Chromium side which is under review
&gt; (http://codereview.chromium.org/363001). So please do not cq+ for a while even
&gt; if it&apos;s r+.

The Chromium patch has been landed. Now the WebKit change is cq+ safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164621</commentid>
    <comment_count>45</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-11-18 10:23:16 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Yes, the v1 sanitiser will kill complex text and kerning. Probably other things
&gt; too.

Actually, kerning is not an issue, yet because none of webkit ports supports kerning (and ligatures) for &quot;simple&quot; scripts (e.g. Latin), yet while Firefox 3.x does. 

Anyway, we&apos;re tracking them at http://crbug.com/27131 and http://crbug.com/27132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164626</commentid>
    <comment_count>46</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-11-18 10:30:33 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #42)
&gt; &gt; Yes, the v1 sanitiser will kill complex text and kerning. Probably other things
&gt; &gt; too.
&gt; 
&gt; Actually, kerning is not an issue, yet because none of webkit ports supports
&gt; kerning (and ligatures) for &quot;simple&quot; scripts (e.g. Latin), yet while Firefox
&gt; 3.x does. 

Clarification: When I wrote &apos;not an issue, yet&apos;, I meant &apos;not an issue, yet for Chromium or other webkit ports&apos;. 

Because Firefox already supports kerning, for OTS to be used by Firefox soon, kern and other related tables have to be sanitized and passed through. Contributions are welcome :-)  ( http://code.google.com/p/ots/ )

For complex scripts, gpos,gsub and other tables must be sanitized even for webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167101</commentid>
    <comment_count>47</comment_count>
      <attachid>42808</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-29 13:37:24 -0800</bug_when>
    <thetext>Comment on attachment 42808
transcode_webfonts_by_ots_v10

 54     // name table replacement and/or padding for glyf table.

&quot;glyph&quot; not &quot;glyf&quot;

 36 #include &quot;opentype-sanitiser.h&quot;

and

 9         and attempts to validate and sanitise them. We hope this reduces the attack surface


sanitizer instead of sanitiser.

I just read through the entire patch for the first time and it otherwise looks OK, those typos can be corrected on landing, but this cannot be cq+&apos;d as is.

As far as I can tell this change is non-harmful to WebKit and helps Chromium feel more secure.  I am certain there are real, exploitable bugs in system font-parsers on the various OSes WebKit supports.

Adding a sanitization step allows WebKit to trade any known system font parser bugs for possible WebKit or OpenTypeSanitizer bugs which can be contained in a sandbox instead of being exploit-your-machine bugs.  To the best of my knowledge, WebKit has historically done the same for CG and Skia graphics libraries.  I see this as a similar approach.

I&apos;ve not spoke with any of the other Chromium folks in person about this, but from a WebKit perspective, this seems like a good change to make.

I think other ports are going to want to adopt this type of sanitization.  Whether that means we eventually need to move this &quot;OTS&quot; code into WebKit or not, I&apos;m not sure.  We don&apos;t include libxslt in WebKit, and I see this as similar.

Obviously we should not commit this with objection remaining, but I&apos;ll mark this with r+ representing my support of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167116</commentid>
    <comment_count>48</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-11-29 15:41:16 -0800</bug_when>
    <thetext>&gt; &quot;glyph&quot; not &quot;glyf&quot;

glyf isn&apos;t a typo: it&apos;s the name of the table:
http://www.microsoft.com/typography/otspec/glyf.htm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167225</commentid>
    <comment_count>49</comment_count>
      <attachid>44018</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-30 06:28:45 -0800</bug_when>
    <thetext>Created attachment 44018
transcode_webfonts_by_ots_v11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167226</commentid>
    <comment_count>50</comment_count>
      <attachid>44019</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-30 06:30:45 -0800</bug_when>
    <thetext>Created attachment 44019
transcode_webfonts_by_ots_v12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167229</commentid>
    <comment_count>51</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-11-30 06:32:39 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; Created an attachment (id=44019) [details]
&gt; transcode_webfonts_by_ots_v12

Attached a new patch (v12) which can be applied to the latest tree.
Replaced sanitiser with sanitizer as well. Thanks, Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167284</commentid>
    <comment_count>52</comment_count>
      <attachid>44019</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-30 09:55:30 -0800</bug_when>
    <thetext>Comment on attachment 44019
transcode_webfonts_by_ots_v12

Now that I understand that &quot;glyf&quot; is a special name, I guess I would have provided a url in the comment like AGL did in the comment above, but that&apos;s really not a big issue.

I still think this is a good change to make.  Lets leave this for at least a day for Sam to make any final comments on before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168116</commentid>
    <comment_count>53</comment_count>
      <attachid>44019</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-02 12:01:40 -0800</bug_when>
    <thetext>Comment on attachment 44019
transcode_webfonts_by_ots_v12

Not having heard from Sam, I&apos;m going to commit this.  We an always roll it out if there are further objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168175</commentid>
    <comment_count>54</comment_count>
      <attachid>44019</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-02 14:51:37 -0800</bug_when>
    <thetext>Comment on attachment 44019
transcode_webfonts_by_ots_v12

Rejecting patch 44019 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Eric Seidel&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
cts to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file WebCore/platform/graphics/chromium/FontCustomPlatformData.cpp
patching file WebCore/platform/graphics/mac/FontCustomPlatformData.cpp
patching file WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp
patching file WebCore/platform/graphics/opentype/OpenTypeSanitizer.h
patching file WebKit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKit/chromium/DEPS
patching file WebKit/chromium/features.gypi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168227</commentid>
    <comment_count>55</comment_count>
      <attachid>44200</attachid>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-12-02 18:28:44 -0800</bug_when>
    <thetext>Created attachment 44200
transcode_webfonts_by_ots_v13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168228</commentid>
    <comment_count>56</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-12-02 18:30:57 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 44019 [details])
&gt; Rejecting patch 44019 from commit-queue.
&gt; 
&gt; Failed to run
&gt; &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;,
&gt; &apos;--reviewer&apos;, &apos;Eric Seidel&apos;, &apos;--force&apos;]&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; cts to file WebCore/WebCore.xcodeproj/project.pbxproj.rej

Hmm...
Uploaded v13 which should resolve the project.pbxproj conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168243</commentid>
    <comment_count>57</comment_count>
      <attachid>44200</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-02 20:11:29 -0800</bug_when>
    <thetext>Comment on attachment 44200
transcode_webfonts_by_ots_v13

Rejecting patch 44200 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11703 test cases.
inspector/elements-img-tooltip.html -&gt; failed

Exiting early after 1 failures. 9385 tests run.
275.25s total testing time

9384 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
6 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168286</commentid>
    <comment_count>58</comment_count>
    <who name="Yusuke Sato">yusukes</who>
    <bug_when>2009-12-02 21:46:03 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; (From update of attachment 44200 [details])
&gt; Rejecting patch 44200 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;,
&gt; &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
&gt; Running build-dumprendertree
&gt; Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
&gt; Testing 11703 test cases.
&gt; inspector/elements-img-tooltip.html -&gt; failed

I&apos;ve run-webkit-tests locally again, and confirmed that all test cases succeed:

yusukes-macpro:WebKit yusukes$ ./WebKitTools/Scripts/run-webkit-tests 
...
all 11703 test cases succeeded

Changing cq- to cq?. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168291</commentid>
    <comment_count>59</comment_count>
      <attachid>44200</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-02 22:02:51 -0800</bug_when>
    <thetext>Comment on attachment 44200
transcode_webfonts_by_ots_v13

Ok.  Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168292</commentid>
    <comment_count>60</comment_count>
      <attachid>44200</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-02 22:14:31 -0800</bug_when>
    <thetext>Comment on attachment 44200
transcode_webfonts_by_ots_v13

Clearing flags on attachment: 44200

Committed r51623: &lt;http://trac.webkit.org/changeset/51623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168293</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-02 22:14:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168560</commentid>
    <comment_count>62</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-03 15:10:01 -0800</bug_when>
    <thetext>I believe the bogus inspector failure was just bug 30098.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42480</attachid>
            <date>2009-11-04 06:12:20 -0800</date>
            <delta_ts>2009-11-04 20:58:07 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v1</desc>
            <filename>bug-31106-20091104231218.patch</filename>
            <type>text/plain</type>
            <size>6069</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uZWYwNzBiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0xMS0wNCAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIGhhbmRsZSB3ZWIgZm9udHMgaW4gYSBzZWN1cmUg
bWFubmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTEwNgorICAgICAgICAKKyAgICAgICAgVHJhbnNjb2RlIGEgd2ViIGZvbnQgYmVmb3JlIGhhbmRp
bmcgaXQgb3ZlciB0byByZW5kZXJpbmcgbGlicmFyaWVzIHN1Y2ggYXMgRnJlZVR5cGUyIGFuZCB0
MmVtYmVkLmRsbCwgZm9yIHNlY3VyaXR5IHJlYXNvbnMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cDogQWRkZWQgZGVwZW5kZW5jeSB0byAoY2hyb21pdW1fc3JjX2RpcikvdGhp
cmRfcGFydHkvb3RzLyBsaWJyYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6IFZhbGlkYXRlIGFuZCB0cmFuc2NvZGUgYSB3ZWIgZm9u
dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTog
RGl0dG8uIFBsZWFzZSBub3RlIHRoYXQgYWxsIGNoYW5nZXMgYXJlIGluc2lkZSAjaWYgUExBVEZP
Uk0oQ0hST01JVU0pLgorCiAyMDA5LTExLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAKaW5kZXggZWIxMGVlZS4uZGIxMmQ4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBA
IC02MzAsNiArNjMwLDcgQEAKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFy
dHkvbGlieG1sL2xpYnhtbC5neXA6bGlieG1sJywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvdGhpcmRfcGFydHkvbGlieHNsdC9saWJ4c2x0Lmd5cDpsaWJ4c2x0JywKICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbnBhcGkvbnBhcGkuZ3lwOm5wYXBpJywKKyAg
ICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvb3RzL290cy5neXA6b3RzJywK
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5n
eXA6c3FsaXRlJywKICAgICAgIF0sCiAgICAgICAnZGVmaW5lcyc6IFsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCmluZGV4IDg4MDM1ZDUuLmY5YWNiMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIm9wZW50eXBlLXNhbml0aXNlci5oIgorI2luY2x1ZGUgIm90cy1tZW1vcnktc3RyZWFt
LmgiCiAKICNpZiBQTEFURk9STShXSU5fT1MpCiAjaW5jbHVkZSA8b2JqYmFzZS5oPgpAQCAtNTQs
NiArNTYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFRoaXMgaXMgdGhlIGxhcmdl
c3Qgd2ViIGZvbnQgc2l6ZSB3aGljaCB3ZSdsbCB0cnkgdG8gdHJhbnNjb2RlLgorc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhXZWJGb250U2l6ZSA9IDMwICogMTAyNCAqIDEwMjQ7ICAvLyAzMCBNQgor
CiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7CiAj
aWYgUExBVEZPUk0oV0lOX09TKQpAQCAtMjQ1LDEyICsyNTAsMzIgQEAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIFBMQVRGT1JNKFdJ
Tl9PUykgfHwgUExBVEZPUk0oTElOVVgpCisgICAgaWYgKGJ1ZmZlci0+c2l6ZSgpID4gbWF4V2Vi
Rm9udFNpemUpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gQSB0cmFuc2NvZGVkIGZvbnQg
aXMgdXN1YWxseSBzbWFsbGVyIHRoYW4gYW4gb3JpZ2luYWwgZm9udC4KKyAgICAvLyBIb3dldmVy
LCBpdCBjYW4gYmUgc2xpZ2h0bHkgYmlnZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSBkdWUgdG8K
KyAgICAvLyBuYW1lIHRhYmxlIHJlcGxhY2VtZW50IGFuZC9vciBwYWRkaW5nIGZvciBnbHlmIHRh
YmxlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFkTGVuID0gMjAgKiAxMDI0OyAgLy8gMjBr
QgorCisgICAgdW5zaWduZWQgY2hhciogdHJhbnNjb2RlUmF3QnVmZmVyID0gbmV3IHVuc2lnbmVk
IGNoYXJbYnVmZmVyLT5zaXplKCkgKyBwYWRMZW5dOworICAgIG90czo6TWVtb3J5U3RyZWFtIG91
dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIsIGJ1ZmZlci0+c2l6ZSgpICsgcGFkTGVuKTsKKyAgICBp
ZiAoIW90czo6UHJvY2Vzcygmb3V0cHV0LCAoY29uc3QgdWludDhfdCAqKSBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKSB7CisgICAgICBkZWxldGVbXSB0cmFuc2NvZGVSYXdCdWZmZXI7
CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY29uc3Qgc2l6ZV90IHRyYW5zY29kZUxlbiA9
IG91dHB1dC5UZWxsKCk7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29kZUJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlciwgdHJhbnNjb2Rl
TGVuKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOX09TKQorICAgIGJ1ZmZlciA9IHRyYW5z
Y29kZUJ1ZmZlci5nZXQoKTsKKwogICAgIC8vIEludHJvZHVjZSB0aGUgZm9udCB0byBHREkuIEFk
ZEZvbnRNZW1SZXNvdXJjZUV4IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IHdpbGwgcG9sbHV0
ZSB0aGUgcHJvY2VzcydzCiAgICAgLy8gZm9udCBuYW1lc3BhY2UgKFdpbmRvd3MgaGFzIG5vIEFQ
SSBmb3IgY3JlYXRpbmcgYW4gSEZPTlQgZnJvbSBkYXRhIHdpdGhvdXQgZXhwb3NpbmcgdGhlIGZv
bnQgdG8gdGhlCiAgICAgLy8gZW50aXJlIHByb2Nlc3MgZmlyc3QpLiBUVExvYWRFbWJlZGRlZEZv
bnQgbGV0cyB1cyBvdmVycmlkZSB0aGUgZm9udCBmYW1pbHkgbmFtZSwgc28gdXNpbmcgYSB1bmlx
dWUgbmFtZQogICAgIC8vIHdlIGF2b2lkIG5hbWVzcGFjZSBjb2xsaXNpb25zLgotCiAgICAgU3Ry
aW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKIAogICAgIC8vIFRUTG9hZEVt
YmVkZGVkRm9udCB3b3JrcyBvbmx5IHdpdGggRW1iZWRkZWQgT3BlblR5cGUgKC5lb3QpIGRhdGEs
CkBAIC0yNzksMTAgKzMwNCwxMSBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiAgICAgcmV0dXJuIG5l
dyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKICNlbGlm
IFBMQVRGT1JNKExJTlVYKQotICAgIFJlbW90ZUZvbnRTdHJlYW0gc3RyZWFtKGJ1ZmZlcik7Cisg
ICAgUmVtb3RlRm9udFN0cmVhbSBzdHJlYW0odHJhbnNjb2RlQnVmZmVyKTsKICAgICBTa1R5cGVm
YWNlKiB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21TdHJlYW0oJnN0cmVhbSk7CiAg
ICAgaWYgKCF0eXBlZmFjZSkKICAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gbmV3IEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEodHlwZWZhY2UpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1ZTcyMTAxLi45ZWM4NDJhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtMjUsNiArMjUsMTEgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJvcGVudHlwZS1zYW5pdGlzZXIuaCIKKyNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVhbS5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQpAQCAtNDMsNiArNDgsMjkgQEAgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qgd2ViIGZvbnQgc2l6ZSB3
aGljaCB3ZSdsbCB0cnkgdG8gdHJhbnNjb2RlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
V2ViRm9udFNpemUgPSAzMCAqIDEwMjQgKiAxMDI0OyAvLyAzMCBNQgorCisgICAgaWYgKGJ1ZmZl
ci0+c2l6ZSgpID4gbWF4V2ViRm9udFNpemUpCisgICAgICByZXR1cm4gMDsKKworICAgIC8vIEEg
dHJhbnNjb2RlZCBmb250IGlzIHVzdWFsbHkgc21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQu
CisgICAgLy8gSG93ZXZlciwgaXQgY2FuIGJlIHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmln
aW5hbCBvbmUgZHVlIHRvCisgICAgLy8gbmFtZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFk
ZGluZyBmb3IgZ2x5ZiB0YWJsZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIw
ICogMTAyNDsgLy8gMjBrQgorCisgICAgdW5zaWduZWQgY2hhciogdHJhbnNjb2RlZFJhd0J1ZmZl
ciA9IG5ldyB1bnNpZ25lZCBjaGFyW2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuXTsKKyAgICBvdHM6
Ok1lbW9yeVN0cmVhbSBvdXRwdXQodHJhbnNjb2RlZFJhd0J1ZmZlciwgYnVmZmVyLT5zaXplKCkg
KyBwYWRMZW4pOworICAgIGlmICghb3RzOjpQcm9jZXNzKCZvdXRwdXQsIChjb25zdCB1aW50OF90
ICopIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpIHsKKyAgICAgIGRlbGV0ZVtdIHRy
YW5zY29kZWRSYXdCdWZmZXI7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgc2l6ZV90IHRy
YW5zY29kZWRMZW4gPSBvdXRwdXQuVGVsbCgpOworICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0cmFuc2NvZGVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodHJhbnNjb2RlZFJhd0J1
ZmZlciwgdHJhbnNjb2RlZExlbik7CisgICAgYnVmZmVyID0gdHJhbnNjb2RlZEJ1ZmZlci5nZXQo
KTsKKyNlbmRpZgorCiAgICAgQVRTRm9udENvbnRhaW5lclJlZiBjb250YWluZXJSZWYgPSAwOwog
ICAgIEFUU0ZvbnRSZWYgZm9udFJlZiA9IDA7
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42542</attachid>
            <date>2009-11-04 20:58:14 -0800</date>
            <delta_ts>2009-11-04 21:05:30 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v2</desc>
            <filename>bug-31106-20091105135812.patch</filename>
            <type>text/plain</type>
            <size>9992</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGViMTBlZWUuLjdiMWNiOWYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cApAQCAtNjMwLDYgKzYzMCw3IEBACiAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3RoaXJkX3BhcnR5L2xpYnhtbC9saWJ4bWwuZ3lwOmxpYnhtbCcsCiAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhzbHQvbGlieHNsdC5neXA6bGlieHNs
dCcsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L25wYXBpL25wYXBp
Lmd5cDpucGFwaScsCisgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L290
cy9vdHMuZ3lwOm90cycsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5
L3NxbGl0ZS9zcWxpdGUuZ3lwOnNxbGl0ZScsCiAgICAgICBdLAogICAgICAgJ2RlZmluZXMnOiBb
CkBAIC02NTYsNiArNjU3LDcgQEAKICAgICAgICAgIyBmaWxlbmFtZXMuCiAgICAgICAgIFsnZXhj
bHVkZScsICcoYW5kcm9pZHxjYWlyb3xjZnxjZ3xjdXJsfGd0a3xoYWlrdXxsaW51eHxtYWN8b3Bl
bnR5cGV8cG9zaXh8cXR8c291cHxzeW1iaWFufHdpbnx3eCkvJ10sCiAgICAgICAgIFsnZXhjbHVk
ZScsICcoPzwhQ2hyb21pdW0pKFNWR0FsbEluT25lfEFuZHJvaWR8Q2Fpcm98Q0Z8Q0d8Q3VybHxH
dGt8TGludXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4fFF0fFNhZmFyaXxTb3VwfFN5bWJpYW58
V2lufFd4KVxcLihjcHB8bW0/KSQnXSwKKyAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyXFwuY3BwJCddLAogCiAgICAgICAgICMg
SlNDLW9ubHkuCiAgICAgICAgIFsnZXhjbHVkZScsICdpbnNwZWN0b3IvSmF2YVNjcmlwdFteL10q
XFwuY3BwJCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCAyYWE0MmJiLi42Mjk3MzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAwNiw2ICsyMDA2LDgg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5tbScsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2Vy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29s
b3JRdC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggODgwMzVkNS4uODU2YWY3
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJPcGVuVHlwZVNhbml0aXNlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
CiAjaWYgUExBVEZPUk0oV0lOX09TKQpAQCAtMjQ1LDcgKzI0NiwxNiBAQCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCisjaWYgUExBVEZPUk0o
V0lOX09TKSB8fCBQTEFURk9STShMSU5VWCkKKyAgICBPcGVuVHlwZVNhbml0aXNlciBzYW5pdGlz
ZXIoYnVmZmVyKTsKKyAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVy
ID0gc2FuaXRpc2VyLnNhbml0aXNlKCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAg
ICAgIHJldHVybiAwOyAgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKFdJTl9PUykKKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CisKICAgICAv
LyBJbnRyb2R1Y2UgdGhlIGZvbnQgdG8gR0RJLiBBZGRGb250TWVtUmVzb3VyY2VFeCBjYW5ub3Qg
YmUgdXNlZCwgYmVjYXVzZSBpdCB3aWxsIHBvbGx1dGUgdGhlIHByb2Nlc3MncwogICAgIC8vIGZv
bnQgbmFtZXNwYWNlIChXaW5kb3dzIGhhcyBubyBBUEkgZm9yIGNyZWF0aW5nIGFuIEhGT05UIGZy
b20gZGF0YSB3aXRob3V0IGV4cG9zaW5nIHRoZSBmb250IHRvIHRoZQogICAgIC8vIGVudGlyZSBw
cm9jZXNzIGZpcnN0KS4gVFRMb2FkRW1iZWRkZWRGb250IGxldHMgdXMgb3ZlcnJpZGUgdGhlIGZv
bnQgZmFtaWx5IG5hbWUsIHNvIHVzaW5nIGEgdW5pcXVlIG5hbWUKQEAgLTI3OSw3ICsyODksNyBA
QCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogCiAgICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKICNlbGlmIFBMQVRGT1JNKExJTlVYKQotICAg
IFJlbW90ZUZvbnRTdHJlYW0gc3RyZWFtKGJ1ZmZlcik7CisgICAgUmVtb3RlRm9udFN0cmVhbSBz
dHJlYW0odHJhbnNjb2RlQnVmZmVyKTsKICAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9IFNrVHlw
ZWZhY2U6OkNyZWF0ZUZyb21TdHJlYW0oJnN0cmVhbSk7CiAgICAgaWYgKCF0eXBlZmFjZSkKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDVlNzIxMDEuLjRhN2ExNDcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC0yNSw2ICsyNSwxMCBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpc2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSgpCkBAIC00Myw2ICs0NywxNCBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIEFTU0VS
VF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3Bl
blR5cGVTYW5pdGlzZXIgc2FuaXRpc2VyKGJ1ZmZlcik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXNlci5zYW5pdGlzZSgpOworICAgIGlmICgh
dHJhbnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgIC8vIHZhbGlkYXRpb24gZmFpbGVk
LgorICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZlci5nZXQoKTsKKyNlbmRpZgorCiAgICAgQVRT
Rm9udENvbnRhaW5lclJlZiBjb250YWluZXJSZWYgPSAwOwogICAgIEFUU0ZvbnRSZWYgZm9udFJl
ZiA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVTYW5pdGlzZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVNhbml0aXNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODEyZGFiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpc2VyLmgiCisKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisjaW5jbHVkZSAib3BlbnR5cGUtc2FuaXRpc2VyLmgiCisjaW5jbHVkZSAi
b3RzLW1lbW9yeS1zdHJlYW0uaCIKKyNlbHNlCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBPcGVuVHlw
ZVNhbml0aXNlcjo6c2FuaXRpc2UoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJl
dHVybiAwOworCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gVGhpcyBpcyB0aGUgbGFy
Z2VzdCB3ZWIgZm9udCBzaXplIHdoaWNoIHdlJ2xsIHRyeSB0byB0cmFuc2NvZGUuCisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhXZWJGb250U2l6ZSA9IDMwICogMTAyNCAqIDEwMjQ7ICAvLyAz
MCBNQgorICAgIGlmIChtX2J1ZmZlci0+c2l6ZSgpID4gbWF4V2ViRm9udFNpemUpCisgICAgICAg
IHJldHVybiAwOworCisgICAgLy8gQSB0cmFuc2NvZGVkIGZvbnQgaXMgdXN1YWxseSBzbWFsbGVy
IHRoYW4gYW4gb3JpZ2luYWwgZm9udC4KKyAgICAvLyBIb3dldmVyLCBpdCBjYW4gYmUgc2xpZ2h0
bHkgYmlnZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSBkdWUgdG8KKyAgICAvLyBuYW1lIHRhYmxl
IHJlcGxhY2VtZW50IGFuZC9vciBwYWRkaW5nIGZvciBnbHlmIHRhYmxlLgorICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcGFkTGVuID0gMjAgKiAxMDI0OyAgLy8gMjBrQgorCisgICAgdW5zaWduZWQg
Y2hhciogdHJhbnNjb2RlUmF3QnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNp
emUoKSArIHBhZExlbl07CisgICAgb3RzOjpNZW1vcnlTdHJlYW0gb3V0cHV0KHRyYW5zY29kZVJh
d0J1ZmZlciwgbV9idWZmZXItPnNpemUoKSArIHBhZExlbik7CisgICAgaWYgKCFvdHM6OlByb2Nl
c3MoJm91dHB1dCwgKGNvbnN0IHVpbnQ4X3QgKikgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXIt
PnNpemUoKSkpIHsKKyAgICAgICAgZGVsZXRlW10gdHJhbnNjb2RlUmF3QnVmZmVyOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisgICAgY29uc3Qgc2l6ZV90IHRyYW5zY29kZUxlbiA9IG91dHB1
dC5UZWxsKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1
ZmZlciwgdHJhbnNjb2RlTGVuKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAg
IC8vIEp1c3QgcGFzcyB0aHJvdWdoIHRoZSBvcmlnaW5hbCBmb250IGRhdGEuCisgICAgdW5zaWdu
ZWQgY2hhciogdHJhbnNjb2RlUmF3QnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXIt
PnNpemUoKV07CisgICAgc3RkOjptZW1jcHkodHJhbnNjb2RlUmF3QnVmZmVyLCBtX2J1ZmZlci0+
ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodHJhbnNjb2RlUmF3QnVmZmVyLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjMxNjQxYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuaApAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgT3BlblR5cGVTYW5pdGlzZXJfaAorI2RlZmluZSBPcGVuVHlwZVNhbml0aXNlcl9oCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgT3BlblR5cGVTYW5pdGlzZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IE9wZW5UeXBlU2FuaXRpc2VyKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXNlKCk7CisKK3ByaXZhdGU6CisgICAgU2hhcmVkQnVmZmVyKiBjb25z
dCBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9w
ZW5UeXBlU2FuaXRpc2VyX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42543</attachid>
            <date>2009-11-04 21:05:37 -0800</date>
            <delta_ts>2009-11-05 17:23:02 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v3</desc>
            <filename>bug-31106-20091105140535.patch</filename>
            <type>text/plain</type>
            <size>11208</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uZWM5ODlmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0wNCAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBUcmFuc2NvZGUgYSB3ZWIgZm9udCBiZWZvcmUgaGFuZGluZyBpdCBvdmVyIHRvIHJlbmRl
cmluZyBsaWJyYXJpZXMgc3VjaCBhcyBGcmVlVHlwZTIgYW5kIHQyZW1iZWQuZGxsLCBmb3Igc2Vj
dXJpdHkgcmVhc29ucy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRl
ZCBkZXBlbmRlbmN5IHRvIChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJh
cnkuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6IFZhbGlkYXRlIGFuZCB0cmFuc2NvZGUgYSB3ZWIgZm9udC4KKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVTYW5pdGlzZXI6OnNhbml0aXNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlU2FuaXRpc2VyOjpPcGVuVHlwZVNhbml0aXNlcik6CisKIDIwMDkt
MTEtMDQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIHJvbGxvdXQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBlYjEwZWVlLi43
YjFjYjlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTYzMCw2ICs2MzAsNyBAQAogICAg
ICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4bWwvbGlieG1sLmd5cDps
aWJ4bWwnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4c2x0
L2xpYnhzbHQuZ3lwOmxpYnhzbHQnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGly
ZF9wYXJ0eS9ucGFwaS9ucGFwaS5neXA6bnBhcGknLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMnLAogICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAogICAgICAgXSwK
ICAgICAgICdkZWZpbmVzJzogWwpAQCAtNjU2LDYgKzY1Nyw3IEBACiAgICAgICAgICMgZmlsZW5h
bWVzLgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnKGFuZHJvaWR8Y2Fpcm98Y2Z8Y2d8Y3VybHxndGt8
aGFpa3V8bGludXh8bWFjfG9wZW50eXBlfHBvc2l4fHF0fHNvdXB8c3ltYmlhbnx3aW58d3gpLydd
LAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnKD88IUNocm9taXVtKShTVkdBbGxJbk9uZXxBbmRyb2lk
fENhaXJvfENGfENHfEN1cmx8R3RrfExpbnV4fE1hY3xPcGVuVHlwZXxQT1NJWHxQb3NpeHxRdHxT
YWZhcml8U291cHxTeW1iaWFufFdpbnxXeClcXC4oY3BwfG1tPykkJ10sCisgICAgICAgIFsnaW5j
bHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlclxcLmNw
cCQnXSwKIAogICAgICAgICAjIEpTQy1vbmx5LgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnaW5zcGVj
dG9yL0phdmFTY3JpcHRbXi9dKlxcLmNwcCQnXSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMmFhNDJiYi4uNjI5NzMwNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIwMDYsNiArMjAwNiw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dl
YlRpbGVkTGF5ZXIubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVTYW5pdGlzZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVNhbml0aXNlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0NvbG9yUXQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmlu
ZGV4IDg4MDM1ZDUuLjg1NmFmN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGlzZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKQEAgLTI0NSw3ICsyNDYs
MTYgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVy
KTsKIAorI2lmIFBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oTElOVVgpCisgICAgT3BlblR5
cGVTYW5pdGlzZXIgc2FuaXRpc2VyKGJ1ZmZlcik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXNlci5zYW5pdGlzZSgpOworICAgIGlmICghdHJh
bnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgIC8vIHZhbGlkYXRpb24gZmFpbGVkLgor
I2VuZGlmCisKICNpZiBQTEFURk9STShXSU5fT1MpCisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVm
ZmVyLmdldCgpOworCiAgICAgLy8gSW50cm9kdWNlIHRoZSBmb250IHRvIEdESS4gQWRkRm9udE1l
bVJlc291cmNlRXggY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgd2lsbCBwb2xsdXRlIHRoZSBw
cm9jZXNzJ3MKICAgICAvLyBmb250IG5hbWVzcGFjZSAoV2luZG93cyBoYXMgbm8gQVBJIGZvciBj
cmVhdGluZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91dCBleHBvc2luZyB0aGUgZm9udCB0byB0
aGUKICAgICAvLyBlbnRpcmUgcHJvY2VzcyBmaXJzdCkuIFRUTG9hZEVtYmVkZGVkRm9udCBsZXRz
IHVzIG92ZXJyaWRlIHRoZSBmb250IGZhbWlseSBuYW1lLCBzbyB1c2luZyBhIHVuaXF1ZSBuYW1l
CkBAIC0yNzksNyArMjg5LDcgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogICAgIHJldHVybiBuZXcg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiAjZWxpZiBQ
TEFURk9STShMSU5VWCkKLSAgICBSZW1vdGVGb250U3RyZWFtIHN0cmVhbShidWZmZXIpOworICAg
IFJlbW90ZUZvbnRTdHJlYW0gc3RyZWFtKHRyYW5zY29kZUJ1ZmZlcik7CiAgICAgU2tUeXBlZmFj
ZSogdHlwZWZhY2UgPSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tU3RyZWFtKCZzdHJlYW0pOwogICAg
IGlmICghdHlwZWZhY2UpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1
ZTcyMTAxLi40YTdhMTQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMjUsNiArMjUsMTAgQEAKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXNlci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQpAQCAtNDMsNiArNDcsMTQgQEAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIE9wZW5UeXBlU2FuaXRpc2VyIHNhbml0aXNlcihidWZmZXIpOworICAg
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGlzZXIuc2Fu
aXRpc2UoKTsKKyAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7ICAv
LyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7
CisjZW5kaWYKKwogICAgIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyUmVmID0gMDsKICAg
ICBBVFNGb250UmVmIGZvbnRSZWYgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMmRhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmNwcApAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXNl
ci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIm9wZW50eXBlLXNhbml0
aXNlci5oIgorI2luY2x1ZGUgIm90cy1tZW1vcnktc3RyZWFtLmgiCisjZWxzZQorI2luY2x1ZGUg
PGNzdHJpbmc+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gT3BlblR5cGVTYW5pdGlzZXI6OnNhbml0aXNlKCkKK3sKKyAgICBpZiAoIW1f
YnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qgd2ViIGZvbnQgc2l6ZSB3aGljaCB3ZSdsbCB0cnkgdG8g
dHJhbnNjb2RlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4V2ViRm9udFNpemUgPSAzMCAq
IDEwMjQgKiAxMDI0OyAgLy8gMzAgTUIKKyAgICBpZiAobV9idWZmZXItPnNpemUoKSA+IG1heFdl
YkZvbnRTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEEgdHJhbnNjb2RlZCBmb250
IGlzIHVzdWFsbHkgc21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQuCisgICAgLy8gSG93ZXZl
ciwgaXQgY2FuIGJlIHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmlnaW5hbCBvbmUgZHVlIHRv
CisgICAgLy8gbmFtZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFkZGluZyBmb3IgZ2x5ZiB0
YWJsZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIwICogMTAyNDsgIC8vIDIw
a0IKKworICAgIHVuc2lnbmVkIGNoYXIqIHRyYW5zY29kZVJhd0J1ZmZlciA9IG5ldyB1bnNpZ25l
ZCBjaGFyW21fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW5dOworICAgIG90czo6TWVtb3J5U3RyZWFt
IG91dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIsIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4pOwor
ICAgIGlmICghb3RzOjpQcm9jZXNzKCZvdXRwdXQsIChjb25zdCB1aW50OF90ICopIG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpKSB7CisgICAgICAgIGRlbGV0ZVtdIHRyYW5zY29k
ZVJhd0J1ZmZlcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCB0
cmFuc2NvZGVMZW4gPSBvdXRwdXQuVGVsbCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0cmFuc2NvZGVSYXdCdWZmZXIsIHRyYW5zY29kZUxlbik7CisjZWxzZQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisKKyAgICAvLyBKdXN0IHBhc3MgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZm9u
dCBkYXRhLgorICAgIHVuc2lnbmVkIGNoYXIqIHRyYW5zY29kZVJhd0J1ZmZlciA9IG5ldyB1bnNp
Z25lZCBjaGFyW21fYnVmZmVyLT5zaXplKCldOworICAgIHN0ZDo6bWVtY3B5KHRyYW5zY29kZVJh
d0J1ZmZlciwgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlciwgbV9idWZmZXItPnNpemUo
KSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMTY0MWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmgK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE9wZW5UeXBlU2FuaXRpc2VyX2gKKyNkZWZpbmUgT3Bl
blR5cGVTYW5pdGlzZXJfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIE9wZW5UeXBlU2FuaXRp
c2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBPcGVuVHlwZVNhbml0aXNlcihTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgeworICAgIH0KKwor
ICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGlzZSgpOworCitwcml2YXRlOgorICAg
IFNoYXJlZEJ1ZmZlciogY29uc3QgbV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBPcGVuVHlwZVNhbml0aXNlcl9o
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42610</attachid>
            <date>2009-11-05 17:23:10 -0800</date>
            <delta_ts>2009-11-05 17:25:22 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v4</desc>
            <filename>bug-31106-20091106102308.patch</filename>
            <type>text/plain</type>
            <size>11208</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uZWM5ODlmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0wNCAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBUcmFuc2NvZGUgYSB3ZWIgZm9udCBiZWZvcmUgaGFuZGluZyBpdCBvdmVyIHRvIHJlbmRl
cmluZyBsaWJyYXJpZXMgc3VjaCBhcyBGcmVlVHlwZTIgYW5kIHQyZW1iZWQuZGxsLCBmb3Igc2Vj
dXJpdHkgcmVhc29ucy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRl
ZCBkZXBlbmRlbmN5IHRvIChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJh
cnkuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6IFZhbGlkYXRlIGFuZCB0cmFuc2NvZGUgYSB3ZWIgZm9udC4KKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGVTYW5pdGlzZXI6OnNhbml0aXNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlU2FuaXRpc2VyOjpPcGVuVHlwZVNhbml0aXNlcik6CisKIDIwMDkt
MTEtMDQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIHJvbGxvdXQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBlYjEwZWVlLi43
YjFjYjlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTYzMCw2ICs2MzAsNyBAQAogICAg
ICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4bWwvbGlieG1sLmd5cDps
aWJ4bWwnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4c2x0
L2xpYnhzbHQuZ3lwOmxpYnhzbHQnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGly
ZF9wYXJ0eS9ucGFwaS9ucGFwaS5neXA6bnBhcGknLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMnLAogICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAogICAgICAgXSwK
ICAgICAgICdkZWZpbmVzJzogWwpAQCAtNjU2LDYgKzY1Nyw3IEBACiAgICAgICAgICMgZmlsZW5h
bWVzLgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnKGFuZHJvaWR8Y2Fpcm98Y2Z8Y2d8Y3VybHxndGt8
aGFpa3V8bGludXh8bWFjfG9wZW50eXBlfHBvc2l4fHF0fHNvdXB8c3ltYmlhbnx3aW58d3gpLydd
LAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnKD88IUNocm9taXVtKShTVkdBbGxJbk9uZXxBbmRyb2lk
fENhaXJvfENGfENHfEN1cmx8R3RrfExpbnV4fE1hY3xPcGVuVHlwZXxQT1NJWHxQb3NpeHxRdHxT
YWZhcml8U291cHxTeW1iaWFufFdpbnxXeClcXC4oY3BwfG1tPykkJ10sCisgICAgICAgIFsnaW5j
bHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlclxcLmNw
cCQnXSwKIAogICAgICAgICAjIEpTQy1vbmx5LgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnaW5zcGVj
dG9yL0phdmFTY3JpcHRbXi9dKlxcLmNwcCQnXSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMmFhNDJiYi4uNjI5NzMwNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTIwMDYsNiArMjAwNiw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dl
YlRpbGVkTGF5ZXIubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVTYW5pdGlzZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVNhbml0aXNlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0NvbG9yUXQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmlu
ZGV4IDg4MDM1ZDUuLjg1NmFmN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGlzZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFBMQVRGT1JNKFdJTl9PUykKQEAgLTI0NSw3ICsyNDYs
MTYgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVy
KTsKIAorI2lmIFBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oTElOVVgpCisgICAgT3BlblR5
cGVTYW5pdGlzZXIgc2FuaXRpc2VyKGJ1ZmZlcik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXNlci5zYW5pdGlzZSgpOworICAgIGlmICghdHJh
bnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgIC8vIHZhbGlkYXRpb24gZmFpbGVkLgor
I2VuZGlmCisKICNpZiBQTEFURk9STShXSU5fT1MpCisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVm
ZmVyLmdldCgpOworCiAgICAgLy8gSW50cm9kdWNlIHRoZSBmb250IHRvIEdESS4gQWRkRm9udE1l
bVJlc291cmNlRXggY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgd2lsbCBwb2xsdXRlIHRoZSBw
cm9jZXNzJ3MKICAgICAvLyBmb250IG5hbWVzcGFjZSAoV2luZG93cyBoYXMgbm8gQVBJIGZvciBj
cmVhdGluZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91dCBleHBvc2luZyB0aGUgZm9udCB0byB0
aGUKICAgICAvLyBlbnRpcmUgcHJvY2VzcyBmaXJzdCkuIFRUTG9hZEVtYmVkZGVkRm9udCBsZXRz
IHVzIG92ZXJyaWRlIHRoZSBmb250IGZhbWlseSBuYW1lLCBzbyB1c2luZyBhIHVuaXF1ZSBuYW1l
CkBAIC0yNzksNyArMjg5LDcgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogICAgIHJldHVybiBuZXcg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiAjZWxpZiBQ
TEFURk9STShMSU5VWCkKLSAgICBSZW1vdGVGb250U3RyZWFtIHN0cmVhbShidWZmZXIpOworICAg
IFJlbW90ZUZvbnRTdHJlYW0gc3RyZWFtKHRyYW5zY29kZUJ1ZmZlcik7CiAgICAgU2tUeXBlZmFj
ZSogdHlwZWZhY2UgPSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tU3RyZWFtKCZzdHJlYW0pOwogICAg
IGlmICghdHlwZWZhY2UpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1
ZTcyMTAxLi40YTdhMTQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMjUsNiArMjUsMTAgQEAKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXNlci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQpAQCAtNDMsNiArNDcsMTQgQEAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIE9wZW5UeXBlU2FuaXRpc2VyIHNhbml0aXNlcihidWZmZXIpOworICAg
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGlzZXIuc2Fu
aXRpc2UoKTsKKyAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7ICAv
LyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7
CisjZW5kaWYKKwogICAgIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyUmVmID0gMDsKICAg
ICBBVFNGb250UmVmIGZvbnRSZWYgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMmRhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmNwcApAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXNl
ci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIm9wZW50eXBlLXNhbml0
aXNlci5oIgorI2luY2x1ZGUgIm90cy1tZW1vcnktc3RyZWFtLmgiCisjZWxzZQorI2luY2x1ZGUg
PGNzdHJpbmc+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gT3BlblR5cGVTYW5pdGlzZXI6OnNhbml0aXNlKCkKK3sKKyAgICBpZiAoIW1f
YnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qgd2ViIGZvbnQgc2l6ZSB3aGljaCB3ZSdsbCB0cnkgdG8g
dHJhbnNjb2RlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4V2ViRm9udFNpemUgPSAzMCAq
IDEwMjQgKiAxMDI0OyAgLy8gMzAgTUIKKyAgICBpZiAobV9idWZmZXItPnNpemUoKSA+IG1heFdl
YkZvbnRTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEEgdHJhbnNjb2RlZCBmb250
IGlzIHVzdWFsbHkgc21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQuCisgICAgLy8gSG93ZXZl
ciwgaXQgY2FuIGJlIHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmlnaW5hbCBvbmUgZHVlIHRv
CisgICAgLy8gbmFtZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFkZGluZyBmb3IgZ2x5ZiB0
YWJsZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIwICogMTAyNDsgIC8vIDIw
a0IKKworICAgIHVuc2lnbmVkIGNoYXIqIHRyYW5zY29kZVJhd0J1ZmZlciA9IG5ldyB1bnNpZ25l
ZCBjaGFyW21fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW5dOworICAgIG90czo6TWVtb3J5U3RyZWFt
IG91dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIsIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4pOwor
ICAgIGlmICghb3RzOjpQcm9jZXNzKCZvdXRwdXQsIChjb25zdCB1aW50OF90ICopIG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpKSB7CisgICAgICAgIGRlbGV0ZVtdIHRyYW5zY29k
ZVJhd0J1ZmZlcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNvbnN0IHNpemVfdCB0
cmFuc2NvZGVMZW4gPSBvdXRwdXQuVGVsbCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0cmFuc2NvZGVSYXdCdWZmZXIsIHRyYW5zY29kZUxlbik7CisjZWxzZQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisKKyAgICAvLyBKdXN0IHBhc3MgdGhyb3VnaCB0aGUgb3JpZ2luYWwgZm9u
dCBkYXRhLgorICAgIHVuc2lnbmVkIGNoYXIqIHRyYW5zY29kZVJhd0J1ZmZlciA9IG5ldyB1bnNp
Z25lZCBjaGFyW21fYnVmZmVyLT5zaXplKCldOworICAgIHN0ZDo6bWVtY3B5KHRyYW5zY29kZVJh
d0J1ZmZlciwgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlciwgbV9idWZmZXItPnNpemUo
KSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMTY0MWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmgK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE9wZW5UeXBlU2FuaXRpc2VyX2gKKyNkZWZpbmUgT3Bl
blR5cGVTYW5pdGlzZXJfaAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIE9wZW5UeXBlU2FuaXRp
c2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBPcGVuVHlwZVNhbml0aXNlcihTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCisgICAgeworICAgIH0KKwor
ICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGlzZSgpOworCitwcml2YXRlOgorICAg
IFNoYXJlZEJ1ZmZlciogY29uc3QgbV9idWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBPcGVuVHlwZVNhbml0aXNlcl9o
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42611</attachid>
            <date>2009-11-05 17:25:29 -0800</date>
            <delta_ts>2009-11-07 01:39:16 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v5</desc>
            <filename>bug-31106-20091106102527.patch</filename>
            <type>text/plain</type>
            <size>12496</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uNjRiYWNhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0xMS0wNCAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBUaGlzIGlzIGV4
cGVyaW1lbnRhbCBjb2RlIHRoYXQgaXMKKyAgICAgICAgQ2hyb21pdW0gb25seSBmb3IgdGhlIG1v
bWVudC4gSXQgcGFyc2VzIE9wZW5UeXBlIGZpbGVzIChmcm9tIEBmb250LWZhY2UpIGFuZAorICAg
ICAgICBhdHRlbXB0cyB0byB2YWxpZGF0ZSBhbmQgc2FuaXRpc2UgdGhlbS4gV2UgaG9wZSB0aGlz
IHJlZHVjZXMgdGhlIGF0dGFjayBzdXJmYWNlCisgICAgICAgIG9mIHRoZSBzeXN0ZW0gZm9udCBs
aWJyYXJpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogQWRkZWQgZGVw
ZW5kZW5jeSB0byAoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvb3RzLyBsaWJyYXJ5Lgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkZWQgbmV3IGZpbGVzIGJlbG93LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOiBW
YWxpZGF0ZSBhbmQgdHJhbnNjb2RlIGEgd2ViIGZvbnQuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlU2FuaXRpc2VyOjpzYW5pdGlzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZVNhbml0aXNlcjo6T3BlblR5cGVTYW5pdGlzZXIpOgorCiAyMDA5LTExLTA0
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCByb2xsb3V0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZWIxMGVlZS4uN2IxY2I5
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC02MzAsNiArNjMwLDcgQEAKICAgICAgICAg
JzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbGlieG1sL2xpYnhtbC5neXA6bGlieG1s
JywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbGlieHNsdC9saWJ4
c2x0Lmd5cDpsaWJ4c2x0JywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFy
dHkvbnBhcGkvbnBhcGkuZ3lwOm5wYXBpJywKKyAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGhpcmRfcGFydHkvb3RzL290cy5neXA6b3RzJywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvdGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5neXA6c3FsaXRlJywKICAgICAgIF0sCiAgICAg
ICAnZGVmaW5lcyc6IFsKQEAgLTY1Niw2ICs2NTcsNyBAQAogICAgICAgICAjIGZpbGVuYW1lcy4K
ICAgICAgICAgWydleGNsdWRlJywgJyhhbmRyb2lkfGNhaXJvfGNmfGNnfGN1cmx8Z3RrfGhhaWt1
fGxpbnV4fG1hY3xvcGVudHlwZXxwb3NpeHxxdHxzb3VwfHN5bWJpYW58d2lufHd4KS8nXSwKICAg
ICAgICAgWydleGNsdWRlJywgJyg/PCFDaHJvbWl1bSkoU1ZHQWxsSW5PbmV8QW5kcm9pZHxDYWly
b3xDRnxDR3xDdXJsfEd0a3xMaW51eHxNYWN8T3BlblR5cGV8UE9TSVh8UG9zaXh8UXR8U2FmYXJp
fFNvdXB8U3ltYmlhbnxXaW58V3gpXFwuKGNwcHxtbT8pJCddLAorICAgICAgICBbJ2luY2x1ZGUn
LCAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXJcXC5jcHAkJ10s
CiAKICAgICAgICAgIyBKU0Mtb25seS4KICAgICAgICAgWydleGNsdWRlJywgJ2luc3BlY3Rvci9K
YXZhU2NyaXB0W14vXSpcXC5jcHAkJ10sCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDJhYTQyYmIuLjYyOTczMDYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
MDA2LDYgKzIwMDYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJU
aWxlZExheWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxl
ZExheWVyLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2Fu
aXRpc2VyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVTYW5pdGlzZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db2xvclF0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA4
ODAzNWQ1Li44NTZhZjdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpc2VyLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAKICNpZiBQTEFURk9STShXSU5fT1MpCkBAIC0yNDUsNyArMjQ2LDE2IEBA
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
KyNpZiBQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKQorICAgIE9wZW5UeXBlU2Fu
aXRpc2VyIHNhbml0aXNlcihidWZmZXIpOworICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGlzZXIuc2FuaXRpc2UoKTsKKyAgICBpZiAoIXRyYW5zY29k
ZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7ICAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oV0lOX09TKQorICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZlci5n
ZXQoKTsKKwogICAgIC8vIEludHJvZHVjZSB0aGUgZm9udCB0byBHREkuIEFkZEZvbnRNZW1SZXNv
dXJjZUV4IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IHdpbGwgcG9sbHV0ZSB0aGUgcHJvY2Vz
cydzCiAgICAgLy8gZm9udCBuYW1lc3BhY2UgKFdpbmRvd3MgaGFzIG5vIEFQSSBmb3IgY3JlYXRp
bmcgYW4gSEZPTlQgZnJvbSBkYXRhIHdpdGhvdXQgZXhwb3NpbmcgdGhlIGZvbnQgdG8gdGhlCiAg
ICAgLy8gZW50aXJlIHByb2Nlc3MgZmlyc3QpLiBUVExvYWRFbWJlZGRlZEZvbnQgbGV0cyB1cyBv
dmVycmlkZSB0aGUgZm9udCBmYW1pbHkgbmFtZSwgc28gdXNpbmcgYSB1bmlxdWUgbmFtZQpAQCAt
Mjc5LDcgKzI4OSw3IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKICAgICByZXR1cm4gbmV3IEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogI2VsaWYgUExBVEZP
Uk0oTElOVVgpCi0gICAgUmVtb3RlRm9udFN0cmVhbSBzdHJlYW0oYnVmZmVyKTsKKyAgICBSZW1v
dGVGb250U3RyZWFtIHN0cmVhbSh0cmFuc2NvZGVCdWZmZXIpOwogICAgIFNrVHlwZWZhY2UqIHR5
cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbVN0cmVhbSgmc3RyZWFtKTsKICAgICBpZiAo
IXR5cGVmYWNlKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNWU3MjEw
MS4uNGE3YTE0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTI1LDYgKzI1LDEwIEBACiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGlzZXIuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6On5Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCkKQEAgLTQzLDYgKzQ3LDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICBPcGVuVHlwZVNhbml0aXNlciBzYW5pdGlzZXIoYnVmZmVyKTsKKyAgICBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpc2VyLnNhbml0aXNl
KCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAwOyAgLy8gdmFs
aWRhdGlvbiBmYWlsZWQuCisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOworI2Vu
ZGlmCisKICAgICBBVFNGb250Q29udGFpbmVyUmVmIGNvbnRhaW5lclJlZiA9IDA7CiAgICAgQVRT
Rm9udFJlZiBmb250UmVmID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44MTJkYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5jcHAKQEAgLTAsMCArMSw4
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGlzZXIuaCIK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJvcGVudHlwZS1zYW5pdGlzZXIu
aCIKKyNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVhbS5oIgorI2Vsc2UKKyNpbmNsdWRlIDxjc3Ry
aW5nPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IE9wZW5UeXBlU2FuaXRpc2VyOjpzYW5pdGlzZSgpCit7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBU
aGlzIGlzIHRoZSBsYXJnZXN0IHdlYiBmb250IHNpemUgd2hpY2ggd2UnbGwgdHJ5IHRvIHRyYW5z
Y29kZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFdlYkZvbnRTaXplID0gMzAgKiAxMDI0
ICogMTAyNDsgIC8vIDMwIE1CCisgICAgaWYgKG1fYnVmZmVyLT5zaXplKCkgPiBtYXhXZWJGb250
U2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBBIHRyYW5zY29kZWQgZm9udCBpcyB1
c3VhbGx5IHNtYWxsZXIgdGhhbiBhbiBvcmlnaW5hbCBmb250LgorICAgIC8vIEhvd2V2ZXIsIGl0
IGNhbiBiZSBzbGlnaHRseSBiaWdnZXIgdGhhbiB0aGUgb3JpZ2luYWwgb25lIGR1ZSB0bworICAg
IC8vIG5hbWUgdGFibGUgcmVwbGFjZW1lbnQgYW5kL29yIHBhZGRpbmcgZm9yIGdseWYgdGFibGUu
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWRMZW4gPSAyMCAqIDEwMjQ7ICAvLyAyMGtCCisK
KyAgICB1bnNpZ25lZCBjaGFyKiB0cmFuc2NvZGVSYXdCdWZmZXIgPSBuZXcgdW5zaWduZWQgY2hh
clttX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuXTsKKyAgICBvdHM6Ok1lbW9yeVN0cmVhbSBvdXRw
dXQodHJhbnNjb2RlUmF3QnVmZmVyLCBtX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuKTsKKyAgICBp
ZiAoIW90czo6UHJvY2Vzcygmb3V0cHV0LCAoY29uc3QgdWludDhfdCAqKSBtX2J1ZmZlci0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKSkgeworICAgICAgICBkZWxldGVbXSB0cmFuc2NvZGVSYXdC
dWZmZXI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjb25zdCBzaXplX3QgdHJhbnNj
b2RlTGVuID0gb3V0cHV0LlRlbGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dHJhbnNjb2RlUmF3QnVmZmVyLCB0cmFuc2NvZGVMZW4pOworI2Vsc2UKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworCisgICAgLy8gSnVzdCBwYXNzIHRocm91Z2ggdGhlIG9yaWdpbmFsIGZvbnQgZGF0
YS4KKyAgICB1bnNpZ25lZCBjaGFyKiB0cmFuc2NvZGVSYXdCdWZmZXIgPSBuZXcgdW5zaWduZWQg
Y2hhclttX2J1ZmZlci0+c2l6ZSgpXTsKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2NvZGVSYXdCdWZm
ZXIsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0cmFuc2NvZGVSYXdCdWZmZXIsIG1fYnVmZmVyLT5zaXplKCkpOwor
I2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGlzZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE2NDFiCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXNlci5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBPcGVuVHlwZVNhbml0aXNlcl9oCisjZGVmaW5lIE9wZW5UeXBl
U2FuaXRpc2VyX2gKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBPcGVuVHlwZVNhbml0aXNlciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3BlblR5cGVTYW5pdGlzZXIoU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpc2UoKTsKKworcHJpdmF0ZToKKyAgICBTaGFy
ZWRCdWZmZXIqIGNvbnN0IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gT3BlblR5cGVTYW5pdGlzZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5n
ZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjZlZmM2Yi4uMzMyZjgwNiAxMDA2NDQKLS0t
IGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMTEtMDQgIFl1c3VrZSBTYXRvICA8eXVzdWtlc0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaGFuZGxlIHdlYiBm
b250cyBpbiBhIHNlY3VyZSBtYW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxMTA2CisKKyAgICAgICAgKiBjaHJvbWl1bS9ERVBTOiBBZGRlZCBk
ZXBlbmRlbmN5IHRvIHRoZSBPcGVuVHlwZSBzYW5pdGlzZXIgbGlicmFyeS4KKwogMjAwOS0xMS0w
MiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBKb2huIFN1bGxpdmFuIGFuZCBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vREVQUyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCmluZGV4IDVmNWI5YjguLjc3ZmZk
YzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9ERVBTCkBAIC00MSw2ICs0MSw3IEBAIHZhcnMgPSB7CiAgICdneXBfcmV2JzogJzY4NScsCiAg
ICdpY3VfcmV2JzogJzI3Njg3JywKICAgJ29wZW52Y2RpZmZfcmV2JzogJzI4JywKKyAgJ290c19y
ZXYnOiAnNCcsCiAgICdza2lhX3Jldic6ICczNzYnLAogICAndjhfcmV2JzogJzMwMzAnLAogCkBA
IC0xMjAsNiArMTIxLDkgQEAgZGVwcyA9IHsKICAgJ3RoaXJkX3BhcnR5L25wYXBpJzoKICAgICBW
YXIoJ2Nocm9taXVtX3N2bicpKycvdGhpcmRfcGFydHkvbnBhcGlAJytWYXIoJ2Nocm9taXVtX3Jl
dicpLAogCisgICd0aGlyZF9wYXJ0eS9vdHMnOgorICAgICdodHRwOi8vb3RzLmdvb2dsZWNvZGUu
Y29tL3N2bi90cnVua0AnK1Zhcignb3RzX3JldicpLAorCiAgICd0aGlyZF9wYXJ0eS9zcWxpdGUn
OgogICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy90aGlyZF9wYXJ0eS9zcWxpdGVAJytWYXIoJ2No
cm9taXVtX3JldicpLA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42691</attachid>
            <date>2009-11-07 01:39:23 -0800</date>
            <delta_ts>2009-11-09 00:58:50 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v6</desc>
            <filename>bug-31106-20091107183922.patch</filename>
            <type>text/plain</type>
            <size>12564</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uNmI2YjUxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0xMS0wNyAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBUaGlzIGlzIGV4
cGVyaW1lbnRhbCBjb2RlIHRoYXQgaXMKKyAgICAgICAgQ2hyb21pdW0gb25seSBmb3IgdGhlIG1v
bWVudC4gSXQgcGFyc2VzIE9wZW5UeXBlIGZpbGVzIChmcm9tIEBmb250LWZhY2UpIGFuZAorICAg
ICAgICBhdHRlbXB0cyB0byB2YWxpZGF0ZSBhbmQgc2FuaXRpc2UgdGhlbS4gV2UgaG9wZSB0aGlz
IHJlZHVjZXMgdGhlIGF0dGFjayBzdXJmYWNlCisgICAgICAgIG9mIHRoZSBzeXN0ZW0gZm9udCBs
aWJyYXJpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDogQWRkZWQgZGVw
ZW5kZW5jeSB0byAoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvb3RzLyBsaWJyYXJ5Lgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkZWQgbmV3IGZpbGVzIGJlbG93LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOiBW
YWxpZGF0ZSBhbmQgdHJhbnNjb2RlIGEgd2ViIGZvbnQuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlU2FuaXRpemVyOjpzYW5pdGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZVNhbml0aXplcjo6T3BlblR5cGVTYW5pdGl6ZXIpOgorCiAyMDA5LTExLTA0
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCByb2xsb3V0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cCBiL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZWIxMGVlZS4uZWY4MmVm
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC02MzAsNiArNjMwLDcgQEAKICAgICAgICAg
JzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbGlieG1sL2xpYnhtbC5neXA6bGlieG1s
JywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbGlieHNsdC9saWJ4
c2x0Lmd5cDpsaWJ4c2x0JywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFy
dHkvbnBhcGkvbnBhcGkuZ3lwOm5wYXBpJywKKyAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGhpcmRfcGFydHkvb3RzL290cy5neXA6b3RzJywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvdGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5neXA6c3FsaXRlJywKICAgICAgIF0sCiAgICAg
ICAnZGVmaW5lcyc6IFsKQEAgLTY1Niw2ICs2NTcsNyBAQAogICAgICAgICAjIGZpbGVuYW1lcy4K
ICAgICAgICAgWydleGNsdWRlJywgJyhhbmRyb2lkfGNhaXJvfGNmfGNnfGN1cmx8Z3RrfGhhaWt1
fGxpbnV4fG1hY3xvcGVudHlwZXxwb3NpeHxxdHxzb3VwfHN5bWJpYW58d2lufHd4KS8nXSwKICAg
ICAgICAgWydleGNsdWRlJywgJyg/PCFDaHJvbWl1bSkoU1ZHQWxsSW5PbmV8QW5kcm9pZHxDYWly
b3xDRnxDR3xDdXJsfEd0a3xMaW51eHxNYWN8T3BlblR5cGV8UE9TSVh8UG9zaXh8UXR8U2FmYXJp
fFNvdXB8U3ltYmlhbnxXaW58V3gpXFwuKGNwcHxtbT8pJCddLAorICAgICAgICBbJ2luY2x1ZGUn
LCAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXJcXC5jcHAkJ10s
CiAKICAgICAgICAgIyBKU0Mtb25seS4KICAgICAgICAgWydleGNsdWRlJywgJ2luc3BlY3Rvci9K
YXZhU2NyaXB0W14vXSpcXC5jcHAkJ10sCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDJhYTQyYmIuLjA5MThmNGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
MDA2LDYgKzIwMDYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJU
aWxlZExheWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxl
ZExheWVyLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2Fu
aXRpemVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVTYW5pdGl6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db2xvclF0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA4
ODAzNWQ1Li43ZTY5ZDdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQyLDYgKzQy
LDkgQEAKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2lmIEVOQUJMRShPUEVOVFlQRV9TQU5JVElaRVIpCisjaW5jbHVkZSAiT3Bl
blR5cGVTYW5pdGl6ZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAj
aWYgUExBVEZPUk0oV0lOX09TKQpAQCAtMjQ1LDYgKzI0OCwxNCBAQCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCisjaWYgRU5BQkxFKE9QRU5U
WVBFX1NBTklUSVpFUikKKyAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIoYnVmZmVyKTsK
KyAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpemVy
LnNhbml0aXplKCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAw
OyAgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdl
dCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShXSU5fT1MpCiAgICAgLy8gSW50cm9kdWNlIHRo
ZSBmb250IHRvIEdESS4gQWRkRm9udE1lbVJlc291cmNlRXggY2Fubm90IGJlIHVzZWQsIGJlY2F1
c2UgaXQgd2lsbCBwb2xsdXRlIHRoZSBwcm9jZXNzJ3MKICAgICAvLyBmb250IG5hbWVzcGFjZSAo
V2luZG93cyBoYXMgbm8gQVBJIGZvciBjcmVhdGluZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91
dCBleHBvc2luZyB0aGUgZm9udCB0byB0aGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNWU3MjEwMS4u
MDMxODRhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTI1LDYgKzI1LDEwIEBACiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaWYgRU5B
QkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXplci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQpAQCAtNDMsNiArNDcsMTQgQEAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIEVOQUJMRShP
UEVOVFlQRV9TQU5JVElaRVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1ZmZl
cik7CisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0
aXplci5zYW5pdGl6ZSgpOworICAgIGlmICghdHJhbnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1
cm4gMDsgIC8vIHZhbGlkYXRpb24gZmFpbGVkLgorICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZl
ci5nZXQoKTsKKyNlbmRpZgorCiAgICAgQVRTRm9udENvbnRhaW5lclJlZiBjb250YWluZXJSZWYg
PSAwOwogICAgIEFUU0ZvbnRSZWYgZm9udFJlZiA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI3M2IzNQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3Bw
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wZW5UeXBl
U2FuaXRpemVyLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAib3BlbnR5
cGUtc2FuaXRpc2VyLmgiCisjaW5jbHVkZSAib3RzLW1lbW9yeS1zdHJlYW0uaCIKKyNlbHNlCisj
aW5jbHVkZSA8Y3N0cmluZz4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBPcGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUoKQoreworICAg
IGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiAwOworCisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgLy8gVGhpcyBpcyB0aGUgbGFyZ2VzdCB3ZWIgZm9udCBzaXplIHdoaWNoIHdlJ2xs
IHRyeSB0byB0cmFuc2NvZGUuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhXZWJGb250U2l6
ZSA9IDMwICogMTAyNCAqIDEwMjQ7ICAvLyAzMCBNQgorICAgIGlmIChtX2J1ZmZlci0+c2l6ZSgp
ID4gbWF4V2ViRm9udFNpemUpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gQSB0cmFuc2Nv
ZGVkIGZvbnQgaXMgdXN1YWxseSBzbWFsbGVyIHRoYW4gYW4gb3JpZ2luYWwgZm9udC4KKyAgICAv
LyBIb3dldmVyLCBpdCBjYW4gYmUgc2xpZ2h0bHkgYmlnZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIG9u
ZSBkdWUgdG8KKyAgICAvLyBuYW1lIHRhYmxlIHJlcGxhY2VtZW50IGFuZC9vciBwYWRkaW5nIGZv
ciBnbHlmIHRhYmxlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFkTGVuID0gMjAgKiAxMDI0
OyAgLy8gMjBrQgorCisgICAgdW5zaWduZWQgY2hhciogdHJhbnNjb2RlUmF3QnVmZmVyID0gbmV3
IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNpemUoKSArIHBhZExlbl07CisgICAgb3RzOjpNZW1v
cnlTdHJlYW0gb3V0cHV0KHRyYW5zY29kZVJhd0J1ZmZlciwgbV9idWZmZXItPnNpemUoKSArIHBh
ZExlbik7CisgICAgaWYgKCFvdHM6OlByb2Nlc3MoJm91dHB1dCwgKGNvbnN0IHVpbnQ4X3QgKikg
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSkpIHsKKyAgICAgICAgZGVsZXRlW10g
dHJhbnNjb2RlUmF3QnVmZmVyOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY29uc3Qg
c2l6ZV90IHRyYW5zY29kZUxlbiA9IG91dHB1dC5UZWxsKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlciwgdHJhbnNjb2RlTGVuKTsKKyNlbHNlCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIC8vIEp1c3QgcGFzcyB0aHJvdWdoIHRoZSBvcmln
aW5hbCBmb250IGRhdGEuCisgICAgdW5zaWduZWQgY2hhciogdHJhbnNjb2RlUmF3QnVmZmVyID0g
bmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNpemUoKV07CisgICAgc3RkOjptZW1jcHkodHJh
bnNjb2RlUmF3QnVmZmVyLCBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVy
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwZGFjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5p
dGl6ZXIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
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
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3BlblR5cGVTYW5pdGl6ZXJfaAorI2Rl
ZmluZSBPcGVuVHlwZVNhbml0aXplcl9oCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgT3BlblR5
cGVTYW5pdGl6ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE9wZW5UeXBlU2FuaXRpemVyKFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7Cisg
ICAgfQorCisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplKCk7CisKK3ByaXZh
dGU6CisgICAgU2hhcmVkQnVmZmVyKiBjb25zdCBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9wZW5UeXBlU2FuaXRpemVyX2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2ZWZjNmIuLmVmZmNi
ZGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDA5LTExLTA3ICBZdXN1a2UgU2F0byAgPHl1c3VrZXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGhhbmRsZSB3ZWIgZm9udHMgaW4gYSBzZWN1cmUgbWFubmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTEwNgorCisgICAgICAgICogY2hyb21pdW0v
REVQUzogQWRkZWQgZGVwZW5kZW5jeSB0byB0aGUgT3BlblR5cGUgc2FuaXRpc2VyIGxpYnJhcnku
CisgICAgICAgICogY2hyb21pdW0vZmVhdHVyZXMuZ3lwaTogQWRkZWQgRU5BQkxFX09QRU5UWVBF
X1NBTklUSVpFUj0xLgorCiAyMDA5LTExLTAyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4gYW5kIE1hcmsg
Um93ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvV2ViS2l0L2Nocm9taXVt
L0RFUFMKaW5kZXggNWY1YjliOC4uNzdmZmRjMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L0RFUFMKKysrIGIvV2ViS2l0L2Nocm9taXVtL0RFUFMKQEAgLTQxLDYgKzQxLDcgQEAgdmFycyA9
IHsKICAgJ2d5cF9yZXYnOiAnNjg1JywKICAgJ2ljdV9yZXYnOiAnMjc2ODcnLAogICAnb3BlbnZj
ZGlmZl9yZXYnOiAnMjgnLAorICAnb3RzX3Jldic6ICc0JywKICAgJ3NraWFfcmV2JzogJzM3Nics
CiAgICd2OF9yZXYnOiAnMzAzMCcsCiAKQEAgLTEyMCw2ICsxMjEsOSBAQCBkZXBzID0gewogICAn
dGhpcmRfcGFydHkvbnBhcGknOgogICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy90aGlyZF9wYXJ0
eS9ucGFwaUAnK1ZhcignY2hyb21pdW1fcmV2JyksCiAKKyAgJ3RoaXJkX3BhcnR5L290cyc6Cisg
ICAgJ2h0dHA6Ly9vdHMuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQCcrVmFyKCdvdHNfcmV2Jyks
CisKICAgJ3RoaXJkX3BhcnR5L3NxbGl0ZSc6CiAgICAgVmFyKCdjaHJvbWl1bV9zdm4nKSsnL3Ro
aXJkX3BhcnR5L3NxbGl0ZUAnK1ZhcignY2hyb21pdW1fcmV2JyksCiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkKaW5kZXggZTNiYzdkMy4uMzBjNTUxOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL2Zl
YXR1cmVzLmd5cGkKKysrIGIvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTUwLDYg
KzUwLDcgQEAKICAgICAgICAgJ0VOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUz0wJywKICAgICAg
ICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAgICAgICdFTkFCTEVfTk9USUZJQ0FUSU9O
Uz0xJywKKyAgICAgICAgJ0VOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MScsCiAgICAgICAgICdF
TkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTPTAnLAogICAgICAgICAnRU5BQkxFX1hTTFQ9MScsCiAg
ICAgICAgICdFTkFCTEVfWFBBVEg9MScs
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42738</attachid>
            <date>2009-11-09 00:58:59 -0800</date>
            <delta_ts>2009-11-09 13:06:14 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v7</desc>
            <filename>bug-31106-20091109175857.patch</filename>
            <type>text/plain</type>
            <size>12985</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uZTRiYWU3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0xMS0wOSAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBJdCBwYXJzZXMg
T3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVtcHRzIHRv
IHZhbGlkYXRlIGFuZCBzYW5pdGlzZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0aGUgYXR0
YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCBkZXBlbmRlbmN5IHRvIChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJhcnkuCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IFZhbGlkYXRlIGFuZCB0cmFu
c2NvZGUgYSB3ZWIgZm9udC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGVTYW5pdGl6ZXI6Ok9wZW5UeXBlU2FuaXRpemVyKToKKwogMjAw
OS0xMS0wNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgcm9sbG91dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGViMTBlZWUu
LmVmODJlZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtNjMwLDYgKzYzMCw3IEBACiAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhtbC9saWJ4bWwuZ3lw
OmxpYnhtbCcsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhz
bHQvbGlieHNsdC5neXA6bGlieHNsdCcsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Ro
aXJkX3BhcnR5L25wYXBpL25wYXBpLmd5cDpucGFwaScsCisgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL3RoaXJkX3BhcnR5L290cy9vdHMuZ3lwOm90cycsCiAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcWxpdGUuZ3lwOnNxbGl0ZScsCiAgICAgICBd
LAogICAgICAgJ2RlZmluZXMnOiBbCkBAIC02NTYsNiArNjU3LDcgQEAKICAgICAgICAgIyBmaWxl
bmFtZXMuCiAgICAgICAgIFsnZXhjbHVkZScsICcoYW5kcm9pZHxjYWlyb3xjZnxjZ3xjdXJsfGd0
a3xoYWlrdXxsaW51eHxtYWN8b3BlbnR5cGV8cG9zaXh8cXR8c291cHxzeW1iaWFufHdpbnx3eCkv
J10sCiAgICAgICAgIFsnZXhjbHVkZScsICcoPzwhQ2hyb21pdW0pKFNWR0FsbEluT25lfEFuZHJv
aWR8Q2Fpcm98Q0Z8Q0d8Q3VybHxHdGt8TGludXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4fFF0
fFNhZmFyaXxTb3VwfFN5bWJpYW58V2lufFd4KVxcLihjcHB8bW0/KSQnXSwKKyAgICAgICAgWydp
bmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyXFwu
Y3BwJCddLAogCiAgICAgICAgICMgSlNDLW9ubHkuCiAgICAgICAgIFsnZXhjbHVkZScsICdpbnNw
ZWN0b3IvSmF2YVNjcmlwdFteL10qXFwuY3BwJCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyYWE0MmJiLi4wOTE4ZjRhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMjAwNiw2ICsyMDA2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViVGlsZWRMYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
V2ViVGlsZWRMYXllci5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVNhbml0aXplci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlU2FuaXRpemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQ29sb3JRdC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggODgwMzVkNS4uMDMwMDMzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0y
NDUsNiArMjQ1LDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZm
ZXIsIGJ1ZmZlcik7CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorICAgIE9wZW5U
eXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlmICghdHJhbnNj
b2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAg
YnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShX
SU5fT1MpCiAgICAgLy8gSW50cm9kdWNlIHRoZSBmb250IHRvIEdESS4gQWRkRm9udE1lbVJlc291
cmNlRXggY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgd2lsbCBwb2xsdXRlIHRoZSBwcm9jZXNz
J3MKICAgICAvLyBmb250IG5hbWVzcGFjZSAoV2luZG93cyBoYXMgbm8gQVBJIGZvciBjcmVhdGlu
ZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91dCBleHBvc2luZyB0aGUgZm9udCB0byB0aGUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYTQyZjFlYy4uZjhiOWQxOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKQEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorI2lmIEVOQUJMRShPUEVOVFlQRV9T
QU5JVElaRVIpCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oV0lOX09TKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1ZTcyMTAxLi43YmRmMDk3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtNDMsNiArNDMsMTQgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBB
U1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIEVOQUJMRShPUEVOVFlQRV9TQU5JVEla
RVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1ZmZlcik7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpemVyLnNhbml0aXplKCk7Cisg
ICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAwOyAvLyB2YWxpZGF0aW9u
IGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CisjZW5kaWYKKwog
ICAgIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyUmVmID0gMDsKICAgICBBVFNGb250UmVm
IGZvbnRSZWYgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggMmMxMjIyZi4uMjRhMzM5ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMjUsNiArMjUsMTAgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJh
c2UuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorI2lmIEVOQUJMRShPUEVOVFlQ
RV9TQU5JVElaRVIpCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKKyNlbmRpZgorCiB0
eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIHR5cGVkZWYgVUludDMyIEFUU0ZvbnRD
b250YWluZXJSZWY7CiB0eXBlZGVmIFVJbnQzMiBBVFNGb250UmVmOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Yjc1YmE2Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXpl
ci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpemVyLmgiCisKKyNpbmNs
dWRlICJPd25BcnJheVB0ci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUg
Im9wZW50eXBlLXNhbml0aXNlci5oIgorI2luY2x1ZGUgIm90cy1tZW1vcnktc3RyZWFtLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE9wZW5UeXBl
U2FuaXRpemVyOjpzYW5pdGl6ZSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBsYXJnZXN0IHdlYiBmb250IHNpemUgd2hpY2gg
d2UnbGwgdHJ5IHRvIHRyYW5zY29kZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFdlYkZv
bnRTaXplID0gMzAgKiAxMDI0ICogMTAyNDsgLy8gMzAgTUIKKyAgICBpZiAobV9idWZmZXItPnNp
emUoKSA+IG1heFdlYkZvbnRTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEEgdHJh
bnNjb2RlZCBmb250IGlzIHVzdWFsbHkgc21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQuCisg
ICAgLy8gSG93ZXZlciwgaXQgY2FuIGJlIHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmlnaW5h
bCBvbmUgZHVlIHRvCisgICAgLy8gbmFtZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFkZGlu
ZyBmb3IgZ2x5ZiB0YWJsZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIwICog
MTAyNDsgLy8gMjAga0IKKworICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+IHRyYW5zY29k
ZVJhd0J1ZmZlcihuZXcgdW5zaWduZWQgY2hhclttX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuXSk7
CisgICAgb3RzOjpNZW1vcnlTdHJlYW0gb3V0cHV0KHRyYW5zY29kZVJhd0J1ZmZlci5nZXQoKSwg
bV9idWZmZXItPnNpemUoKSArIHBhZExlbik7CisgICAgaWYgKCFvdHM6OlByb2Nlc3MoJm91dHB1
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KG1fYnVmZmVyLT5kYXRhKCkpLCBt
X2J1ZmZlci0+c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBzaXplX3Qg
dHJhbnNjb2RlTGVuID0gb3V0cHV0LlRlbGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLmdldCgpLCB0cmFuc2NvZGVMZW4pOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVS
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVNhbml0aXplci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOTM0NDgK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlU2FuaXRpemVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3BlblR5cGVTYW5pdGl6
ZXJfaAorI2RlZmluZSBPcGVuVHlwZVNhbml0aXplcl9oCisKKyNpZiBFTkFCTEUoT1BFTlRZUEVf
U0FOSVRJWkVSKQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBPcGVuVHlwZVNhbml0aXplciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgT3BlblR5cGVTYW5pdGl6ZXIoU2hhcmVkQnVmZmVyKiBidWZm
ZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAgICBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemUoKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRC
dWZmZXIqIGNvbnN0IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNlbmRpZiAvLyBPcGVuVHlwZVNh
bml0aXplcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAyNmVmYzZiLi5kNjYzOGQzIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMS0wOSAgWXVzdWtl
IFNhdG8gIDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5l
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYK
KworICAgICAgICAqIGNocm9taXVtL0RFUFM6IEFkZGVkIGRlcGVuZGVuY3kgdG8gdGhlIE9wZW5U
eXBlIHNhbml0aXNlciBsaWJyYXJ5LgorICAgICAgICAqIGNocm9taXVtL2ZlYXR1cmVzLmd5cGk6
IEFkZGVkIEVOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MS4KKwogMjAwOS0xMS0wMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
b2huIFN1bGxpdmFuIGFuZCBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
REVQUyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCmluZGV4IDVmNWI5YjguLjc3ZmZkYzIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCkBA
IC00MSw2ICs0MSw3IEBAIHZhcnMgPSB7CiAgICdneXBfcmV2JzogJzY4NScsCiAgICdpY3VfcmV2
JzogJzI3Njg3JywKICAgJ29wZW52Y2RpZmZfcmV2JzogJzI4JywKKyAgJ290c19yZXYnOiAnNCcs
CiAgICdza2lhX3Jldic6ICczNzYnLAogICAndjhfcmV2JzogJzMwMzAnLAogCkBAIC0xMjAsNiAr
MTIxLDkgQEAgZGVwcyA9IHsKICAgJ3RoaXJkX3BhcnR5L25wYXBpJzoKICAgICBWYXIoJ2Nocm9t
aXVtX3N2bicpKycvdGhpcmRfcGFydHkvbnBhcGlAJytWYXIoJ2Nocm9taXVtX3JldicpLAogCisg
ICd0aGlyZF9wYXJ0eS9vdHMnOgorICAgICdodHRwOi8vb3RzLmdvb2dsZWNvZGUuY29tL3N2bi90
cnVua0AnK1Zhcignb3RzX3JldicpLAorCiAgICd0aGlyZF9wYXJ0eS9zcWxpdGUnOgogICAgIFZh
cignY2hyb21pdW1fc3ZuJykrJy90aGlyZF9wYXJ0eS9zcWxpdGVAJytWYXIoJ2Nocm9taXVtX3Jl
dicpLAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGUzYmM3ZDMuLjMwYzU1MTkgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgICAgICdFTkFCTEVfSlNDX01VTFRJ
UExFX1RIUkVBRFM9MCcsCiAgICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAogICAgICAg
ICAnRU5BQkxFX05PVElGSUNBVElPTlM9MScsCisgICAgICAgICdFTkFCTEVfT1BFTlRZUEVfU0FO
SVRJWkVSPTEnLAogICAgICAgICAnRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUz0wJywKICAgICAg
ICAgJ0VOQUJMRV9YU0xUPTEnLAogICAgICAgICAnRU5BQkxFX1hQQVRIPTEnLA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42788</attachid>
            <date>2009-11-09 13:06:21 -0800</date>
            <delta_ts>2009-11-09 15:11:34 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v8</desc>
            <filename>bug-31106-20091110060619.patch</filename>
            <type>text/plain</type>
            <size>12136</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uOTdlOTA3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0xMS0wOSAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBJdCBwYXJzZXMg
T3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVtcHRzIHRv
IHZhbGlkYXRlIGFuZCBzYW5pdGlzZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0aGUgYXR0
YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCBkZXBlbmRlbmN5IHRvIChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJhcnkuCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IFZhbGlkYXRlIGFuZCB0cmFu
c2NvZGUgYSB3ZWIgZm9udC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVNhbml0aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVTYW5p
dGl6ZXI6OnNhbml0aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlU2Fu
aXRpemVyOjpPcGVuVHlwZVNhbml0aXplcik6CisKIDIwMDktMTEtMDQgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBlYjEwZWVlLi5lZjgyZWZjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKQEAgLTYzMCw2ICs2MzAsNyBAQAogICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS90aGlyZF9wYXJ0eS9saWJ4bWwvbGlieG1sLmd5cDpsaWJ4bWwnLAogICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4c2x0L2xpYnhzbHQuZ3lwOmxpYnhzbHQn
LAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9ucGFwaS9ucGFwaS5n
eXA6bnBhcGknLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMv
b3RzLmd5cDpvdHMnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9z
cWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAogICAgICAgXSwKICAgICAgICdkZWZpbmVzJzogWwpA
QCAtNjU2LDYgKzY1Nyw3IEBACiAgICAgICAgICMgZmlsZW5hbWVzLgogICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKGFuZHJvaWR8Y2Fpcm98Y2Z8Y2d8Y3VybHxndGt8aGFpa3V8bGludXh8bWFjfG9wZW50
eXBlfHBvc2l4fHF0fHNvdXB8c3ltYmlhbnx3aW58d3gpLyddLAogICAgICAgICBbJ2V4Y2x1ZGUn
LCAnKD88IUNocm9taXVtKShTVkdBbGxJbk9uZXxBbmRyb2lkfENhaXJvfENGfENHfEN1cmx8R3Rr
fExpbnV4fE1hY3xPcGVuVHlwZXxQT1NJWHxQb3NpeHxRdHxTYWZhcml8U291cHxTeW1iaWFufFdp
bnxXeClcXC4oY3BwfG1tPykkJ10sCisgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplclxcLmNwcCQnXSwKIAogICAgICAgICAjIEpT
Qy1vbmx5LgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnaW5zcGVjdG9yL0phdmFTY3JpcHRbXi9dKlxc
LmNwcCQnXSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMmFhNDJiYi4uMDkxOGY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMDYsNiArMjAwNiw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW0nLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbG9y
UXQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDg4MDM1ZDUuLmFjNWU3ZmQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNDIsNiArNDIsNyBAQAogCiAjaW5jbHVk
ZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAog
I2lmIFBMQVRGT1JNKFdJTl9PUykKQEAgLTI0NSw2ICsyNDYsMTQgQEAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIEVOQUJMRShPUEVO
VFlQRV9TQU5JVElaRVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1ZmZlcik7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpemVyLnNh
bml0aXplKCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAwOyAv
LyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTl9PUykKICAgICAvLyBJbnRyb2R1Y2UgdGhlIGZv
bnQgdG8gR0RJLiBBZGRGb250TWVtUmVzb3VyY2VFeCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBp
dCB3aWxsIHBvbGx1dGUgdGhlIHByb2Nlc3MncwogICAgIC8vIGZvbnQgbmFtZXNwYWNlIChXaW5k
b3dzIGhhcyBubyBBUEkgZm9yIGNyZWF0aW5nIGFuIEhGT05UIGZyb20gZGF0YSB3aXRob3V0IGV4
cG9zaW5nIHRoZSBmb250IHRvIHRoZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1ZTcyMTAxLi4yNTZi
NWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPEFwcGxp
Y2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJPcGVuVHlw
ZVNhbml0aXplci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDYgKzQ0LDE0IEBA
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
KyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorICAgIE9wZW5UeXBlU2FuaXRpemVyIHNh
bml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29kZUJ1ZmZl
ciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlmICghdHJhbnNjb2RlQnVmZmVyKQorICAg
ICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgYnVmZmVyID0gdHJhbnNj
b2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICAgICBBVFNGb250Q29udGFpbmVyUmVmIGNvbnRh
aW5lclJlZiA9IDA7CiAgICAgQVRTRm9udFJlZiBmb250UmVmID0gMDsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGNkYjA5Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0
aXplci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
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
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUo
T1BFTlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpemVyLmgiCisKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJvcGVudHlwZS1zYW5pdGlzZXIuaCIK
KyNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBP
cGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgLy8gVGhpcyBpcyB0aGUgbGFyZ2VzdCB3ZWIgZm9udCBzaXpl
IHdoaWNoIHdlJ2xsIHRyeSB0byB0cmFuc2NvZGUuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhXZWJGb250U2l6ZSA9IDMwICogMTAyNCAqIDEwMjQ7IC8vIDMwIE1CCisgICAgaWYgKG1fYnVm
ZmVyLT5zaXplKCkgPiBtYXhXZWJGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBBIHRyYW5zY29kZWQgZm9udCBpcyB1c3VhbGx5IHNtYWxsZXIgdGhhbiBhbiBvcmlnaW5hbCBm
b250LgorICAgIC8vIEhvd2V2ZXIsIGl0IGNhbiBiZSBzbGlnaHRseSBiaWdnZXIgdGhhbiB0aGUg
b3JpZ2luYWwgb25lIGR1ZSB0bworICAgIC8vIG5hbWUgdGFibGUgcmVwbGFjZW1lbnQgYW5kL29y
IHBhZGRpbmcgZm9yIGdseWYgdGFibGUuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWRMZW4g
PSAyMCAqIDEwMjQ7IC8vIDIwIGtCCisKKyAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiB0
cmFuc2NvZGVSYXdCdWZmZXIobmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNpemUoKSArIHBh
ZExlbl0pOworICAgIG90czo6TWVtb3J5U3RyZWFtIG91dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIu
Z2V0KCksIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4pOworICAgIGlmICghb3RzOjpQcm9jZXNz
KCZvdXRwdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRh
KCkpLCBtX2J1ZmZlci0+c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBz
aXplX3QgdHJhbnNjb2RlTGVuID0gb3V0cHV0LlRlbGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLmdldCgpLCB0cmFuc2NvZGVMZW4pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfU0FO
SVRJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNm
OTM0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlU2FuaXRpemVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3BlblR5cGVT
YW5pdGl6ZXJfaAorI2RlZmluZSBPcGVuVHlwZVNhbml0aXplcl9oCisKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBPcGVuVHlwZVNhbml0aXpl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3BlblR5cGVTYW5pdGl6ZXIoU2hhcmVkQnVmZmVy
KiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAg
ICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemUoKTsKKworcHJpdmF0ZToKKyAgICBT
aGFyZWRCdWZmZXIqIGNvbnN0IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNlbmRpZiAvLyBPcGVu
VHlwZVNhbml0aXplcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyNmVmYzZiLi5kNjYzOGQzIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMS0wOSAg
WXVzdWtlIFNhdG8gIDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJl
IG1hbm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzExMDYKKworICAgICAgICAqIGNocm9taXVtL0RFUFM6IEFkZGVkIGRlcGVuZGVuY3kgdG8gdGhl
IE9wZW5UeXBlIHNhbml0aXNlciBsaWJyYXJ5LgorICAgICAgICAqIGNocm9taXVtL2ZlYXR1cmVz
Lmd5cGk6IEFkZGVkIEVOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MS4KKwogMjAwOS0xMS0wMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKb2huIFN1bGxpdmFuIGFuZCBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vREVQUyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCmluZGV4IDVmNWI5YjguLjc3ZmZkYzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1dlYktpdC9jaHJvbWl1bS9E
RVBTCkBAIC00MSw2ICs0MSw3IEBAIHZhcnMgPSB7CiAgICdneXBfcmV2JzogJzY4NScsCiAgICdp
Y3VfcmV2JzogJzI3Njg3JywKICAgJ29wZW52Y2RpZmZfcmV2JzogJzI4JywKKyAgJ290c19yZXYn
OiAnNCcsCiAgICdza2lhX3Jldic6ICczNzYnLAogICAndjhfcmV2JzogJzMwMzAnLAogCkBAIC0x
MjAsNiArMTIxLDkgQEAgZGVwcyA9IHsKICAgJ3RoaXJkX3BhcnR5L25wYXBpJzoKICAgICBWYXIo
J2Nocm9taXVtX3N2bicpKycvdGhpcmRfcGFydHkvbnBhcGlAJytWYXIoJ2Nocm9taXVtX3Jldicp
LAogCisgICd0aGlyZF9wYXJ0eS9vdHMnOgorICAgICdodHRwOi8vb3RzLmdvb2dsZWNvZGUuY29t
L3N2bi90cnVua0AnK1Zhcignb3RzX3JldicpLAorCiAgICd0aGlyZF9wYXJ0eS9zcWxpdGUnOgog
ICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy90aGlyZF9wYXJ0eS9zcWxpdGVAJytWYXIoJ2Nocm9t
aXVtX3JldicpLAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBi
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGUzYmM3ZDMuLjMwYzU1MTkgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgICAgICdFTkFCTEVfSlND
X01VTFRJUExFX1RIUkVBRFM9MCcsCiAgICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAog
ICAgICAgICAnRU5BQkxFX05PVElGSUNBVElPTlM9MScsCisgICAgICAgICdFTkFCTEVfT1BFTlRZ
UEVfU0FOSVRJWkVSPTEnLAogICAgICAgICAnRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUz0wJywK
ICAgICAgICAgJ0VOQUJMRV9YU0xUPTEnLAogICAgICAgICAnRU5BQkxFX1hQQVRIPTEnLA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42807</attachid>
            <date>2009-11-09 15:11:43 -0800</date>
            <delta_ts>2009-11-09 15:13:06 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v9</desc>
            <filename>bug-31106-20091110081141.patch</filename>
            <type>text/plain</type>
            <size>12136</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uOTdlOTA3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0xMS0wOSAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBJdCBwYXJzZXMg
T3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVtcHRzIHRv
IHZhbGlkYXRlIGFuZCBzYW5pdGlzZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0aGUgYXR0
YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCBkZXBlbmRlbmN5IHRvIChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJhcnkuCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IFZhbGlkYXRlIGFuZCB0cmFu
c2NvZGUgYSB3ZWIgZm9udC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVNhbml0aXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVTYW5p
dGl6ZXI6OnNhbml0aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlU2Fu
aXRpemVyOjpPcGVuVHlwZVNhbml0aXplcik6CisKIDIwMDktMTEtMDQgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBlYjEwZWVlLi5lZjgyZWZjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKQEAgLTYzMCw2ICs2MzAsNyBAQAogICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS90aGlyZF9wYXJ0eS9saWJ4bWwvbGlieG1sLmd5cDpsaWJ4bWwnLAogICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9saWJ4c2x0L2xpYnhzbHQuZ3lwOmxpYnhzbHQn
LAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9ucGFwaS9ucGFwaS5n
eXA6bnBhcGknLAorICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMv
b3RzLmd5cDpvdHMnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9z
cWxpdGUvc3FsaXRlLmd5cDpzcWxpdGUnLAogICAgICAgXSwKICAgICAgICdkZWZpbmVzJzogWwpA
QCAtNjU2LDYgKzY1Nyw3IEBACiAgICAgICAgICMgZmlsZW5hbWVzLgogICAgICAgICBbJ2V4Y2x1
ZGUnLCAnKGFuZHJvaWR8Y2Fpcm98Y2Z8Y2d8Y3VybHxndGt8aGFpa3V8bGludXh8bWFjfG9wZW50
eXBlfHBvc2l4fHF0fHNvdXB8c3ltYmlhbnx3aW58d3gpLyddLAogICAgICAgICBbJ2V4Y2x1ZGUn
LCAnKD88IUNocm9taXVtKShTVkdBbGxJbk9uZXxBbmRyb2lkfENhaXJvfENGfENHfEN1cmx8R3Rr
fExpbnV4fE1hY3xPcGVuVHlwZXxQT1NJWHxQb3NpeHxRdHxTYWZhcml8U291cHxTeW1iaWFufFdp
bnxXeClcXC4oY3BwfG1tPykkJ10sCisgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplclxcLmNwcCQnXSwKIAogICAgICAgICAjIEpT
Qy1vbmx5LgogICAgICAgICBbJ2V4Y2x1ZGUnLCAnaW5zcGVjdG9yL0phdmFTY3JpcHRbXi9dKlxc
LmNwcCQnXSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMmFhNDJiYi4uMDkxOGY0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMDYsNiArMjAwNiw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW0nLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbG9y
UXQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDg4MDM1ZDUuLmFjNWU3ZmQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNDIsNiArNDIsNyBAQAogCiAjaW5jbHVk
ZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAog
I2lmIFBMQVRGT1JNKFdJTl9PUykKQEAgLTI0NSw2ICsyNDYsMTQgQEAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIEVOQUJMRShPUEVO
VFlQRV9TQU5JVElaRVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1ZmZlcik7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpemVyLnNh
bml0aXplKCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAwOyAv
LyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTl9PUykKICAgICAvLyBJbnRyb2R1Y2UgdGhlIGZv
bnQgdG8gR0RJLiBBZGRGb250TWVtUmVzb3VyY2VFeCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBp
dCB3aWxsIHBvbGx1dGUgdGhlIHByb2Nlc3MncwogICAgIC8vIGZvbnQgbmFtZXNwYWNlIChXaW5k
b3dzIGhhcyBubyBBUEkgZm9yIGNyZWF0aW5nIGFuIEhGT05UIGZyb20gZGF0YSB3aXRob3V0IGV4
cG9zaW5nIHRoZSBmb250IHRvIHRoZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA1ZTcyMTAxLi4yNTZi
NWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPEFwcGxp
Y2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJPcGVuVHlw
ZVNhbml0aXplci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDYgKzQ0LDE0IEBA
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
KyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorICAgIE9wZW5UeXBlU2FuaXRpemVyIHNh
bml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29kZUJ1ZmZl
ciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlmICghdHJhbnNjb2RlQnVmZmVyKQorICAg
ICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgYnVmZmVyID0gdHJhbnNj
b2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICAgICBBVFNGb250Q29udGFpbmVyUmVmIGNvbnRh
aW5lclJlZiA9IDA7CiAgICAgQVRTRm9udFJlZiBmb250UmVmID0gMDsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGNkYjA5Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0
aXplci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
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
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUo
T1BFTlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpemVyLmgiCisKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJvcGVudHlwZS1zYW5pdGlzZXIuaCIK
KyNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBP
cGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgLy8gVGhpcyBpcyB0aGUgbGFyZ2VzdCB3ZWIgZm9udCBzaXpl
IHdoaWNoIHdlJ2xsIHRyeSB0byB0cmFuc2NvZGUuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhXZWJGb250U2l6ZSA9IDMwICogMTAyNCAqIDEwMjQ7IC8vIDMwIE1CCisgICAgaWYgKG1fYnVm
ZmVyLT5zaXplKCkgPiBtYXhXZWJGb250U2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBBIHRyYW5zY29kZWQgZm9udCBpcyB1c3VhbGx5IHNtYWxsZXIgdGhhbiBhbiBvcmlnaW5hbCBm
b250LgorICAgIC8vIEhvd2V2ZXIsIGl0IGNhbiBiZSBzbGlnaHRseSBiaWdnZXIgdGhhbiB0aGUg
b3JpZ2luYWwgb25lIGR1ZSB0bworICAgIC8vIG5hbWUgdGFibGUgcmVwbGFjZW1lbnQgYW5kL29y
IHBhZGRpbmcgZm9yIGdseWYgdGFibGUuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWRMZW4g
PSAyMCAqIDEwMjQ7IC8vIDIwIGtCCisKKyAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiB0
cmFuc2NvZGVSYXdCdWZmZXIobmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNpemUoKSArIHBh
ZExlbl0pOworICAgIG90czo6TWVtb3J5U3RyZWFtIG91dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIu
Z2V0KCksIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4pOworICAgIGlmICghb3RzOjpQcm9jZXNz
KCZvdXRwdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRh
KCkpLCBtX2J1ZmZlci0+c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb25zdCBz
aXplX3QgdHJhbnNjb2RlTGVuID0gb3V0cHV0LlRlbGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLmdldCgpLCB0cmFuc2NvZGVMZW4pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoT1BFTlRZUEVfU0FO
SVRJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNm
OTM0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlU2FuaXRpemVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgT3BlblR5cGVT
YW5pdGl6ZXJfaAorI2RlZmluZSBPcGVuVHlwZVNhbml0aXplcl9oCisKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBPcGVuVHlwZVNhbml0aXpl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3BlblR5cGVTYW5pdGl6ZXIoU2hhcmVkQnVmZmVy
KiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAg
ICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemUoKTsKKworcHJpdmF0ZToKKyAgICBT
aGFyZWRCdWZmZXIqIGNvbnN0IG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNlbmRpZiAvLyBPcGVu
VHlwZVNhbml0aXplcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyNmVmYzZiLi5kNjYzOGQzIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMS0wOSAg
WXVzdWtlIFNhdG8gIDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJl
IG1hbm5lcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzExMDYKKworICAgICAgICAqIGNocm9taXVtL0RFUFM6IEFkZGVkIGRlcGVuZGVuY3kgdG8gdGhl
IE9wZW5UeXBlIHNhbml0aXNlciBsaWJyYXJ5LgorICAgICAgICAqIGNocm9taXVtL2ZlYXR1cmVz
Lmd5cGk6IEFkZGVkIEVOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MS4KKwogMjAwOS0xMS0wMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKb2huIFN1bGxpdmFuIGFuZCBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vREVQUyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCmluZGV4IDVmNWI5YjguLjc3ZmZkYzIg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1dlYktpdC9jaHJvbWl1bS9E
RVBTCkBAIC00MSw2ICs0MSw3IEBAIHZhcnMgPSB7CiAgICdneXBfcmV2JzogJzY4NScsCiAgICdp
Y3VfcmV2JzogJzI3Njg3JywKICAgJ29wZW52Y2RpZmZfcmV2JzogJzI4JywKKyAgJ290c19yZXYn
OiAnNCcsCiAgICdza2lhX3Jldic6ICczNzYnLAogICAndjhfcmV2JzogJzMwMzAnLAogCkBAIC0x
MjAsNiArMTIxLDkgQEAgZGVwcyA9IHsKICAgJ3RoaXJkX3BhcnR5L25wYXBpJzoKICAgICBWYXIo
J2Nocm9taXVtX3N2bicpKycvdGhpcmRfcGFydHkvbnBhcGlAJytWYXIoJ2Nocm9taXVtX3Jldicp
LAogCisgICd0aGlyZF9wYXJ0eS9vdHMnOgorICAgICdodHRwOi8vb3RzLmdvb2dsZWNvZGUuY29t
L3N2bi90cnVua0AnK1Zhcignb3RzX3JldicpLAorCiAgICd0aGlyZF9wYXJ0eS9zcWxpdGUnOgog
ICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy90aGlyZF9wYXJ0eS9zcWxpdGVAJytWYXIoJ2Nocm9t
aXVtX3JldicpLAogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBi
L1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGUzYmM3ZDMuLjMwYzU1MTkgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgICAgICdFTkFCTEVfSlND
X01VTFRJUExFX1RIUkVBRFM9MCcsCiAgICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAog
ICAgICAgICAnRU5BQkxFX05PVElGSUNBVElPTlM9MScsCisgICAgICAgICdFTkFCTEVfT1BFTlRZ
UEVfU0FOSVRJWkVSPTEnLAogICAgICAgICAnRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUz0wJywK
ICAgICAgICAgJ0VOQUJMRV9YU0xUPTEnLAogICAgICAgICAnRU5BQkxFX1hQQVRIPTEnLA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42808</attachid>
            <date>2009-11-09 15:13:14 -0800</date>
            <delta_ts>2009-11-30 06:28:37 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v10</desc>
            <filename>bug-31106-20091110081312.patch</filename>
            <type>text/plain</type>
            <size>16847</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIwMjY0MS4uMzcwOGIxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0xMS0wOSAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBoYW5kbGUgd2ViIGZvbnRzIGluIGEgc2VjdXJlIG1hbm5lcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYKKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpc2VyIChPVFMpLiBJdCBwYXJzZXMg
T3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVtcHRzIHRv
IHZhbGlkYXRlIGFuZCBzYW5pdGlzZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0aGUgYXR0
YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCBkZXBlbmRlbmN5IHRvIChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJhcnkuCisgICAgICAgICogV2ViQ29y
ZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDogVmFsaWRhdGUgYW5kIHRyYW5zY29k
ZSBhIHdlYiBmb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
U2FuaXRpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVNhbml0aXpl
cjo6c2FuaXRpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlU2FuaXRpemVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVTYW5pdGl6
ZXI6Ok9wZW5UeXBlU2FuaXRpemVyKToKKwogMjAwOS0xMS0wNCAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCmluZGV4IGViMTBlZWUuLmVmODJlZmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cApAQCAtNjMwLDYgKzYzMCw3IEBACiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3RoaXJkX3BhcnR5L2xpYnhtbC9saWJ4bWwuZ3lwOmxpYnhtbCcsCiAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhzbHQvbGlieHNsdC5neXA6bGlieHNsdCcsCiAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L25wYXBpL25wYXBpLmd5cDpu
cGFwaScsCisgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L290cy9vdHMu
Z3lwOm90cycsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3NxbGl0
ZS9zcWxpdGUuZ3lwOnNxbGl0ZScsCiAgICAgICBdLAogICAgICAgJ2RlZmluZXMnOiBbCkBAIC02
NTYsNiArNjU3LDcgQEAKICAgICAgICAgIyBmaWxlbmFtZXMuCiAgICAgICAgIFsnZXhjbHVkZScs
ICcoYW5kcm9pZHxjYWlyb3xjZnxjZ3xjdXJsfGd0a3xoYWlrdXxsaW51eHxtYWN8b3BlbnR5cGV8
cG9zaXh8cXR8c291cHxzeW1iaWFufHdpbnx3eCkvJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICco
PzwhQ2hyb21pdW0pKFNWR0FsbEluT25lfEFuZHJvaWR8Q2Fpcm98Q0Z8Q0d8Q3VybHxHdGt8TGlu
dXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4fFF0fFNhZmFyaXxTb3VwfFN5bWJpYW58V2lufFd4
KVxcLihjcHB8bW0/KSQnXSwKKyAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyXFwuY3BwJCddLAogCiAgICAgICAgICMgSlNDLW9u
bHkuCiAgICAgICAgIFsnZXhjbHVkZScsICdpbnNwZWN0b3IvSmF2YVNjcmlwdFteL10qXFwuY3Bw
JCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCAyYWE0MmJiLi4wOTE4ZjRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAwNiw2ICsyMDA2LDggQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5tbScsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29sb3JRdC5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2Jk
OGQ5Li4yOTAxODllIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDcyNSw2ICs0NzI1LDggQEAKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVk
aXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CiAJCUVERTNB
NTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9y
TWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3
RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUY0MENBRkMxMTBBOENCM0EwMDUwOEY0QiAv
KiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDBDQUZCRjEwQThDQjNBMDA1MDhGNEIgLyogT3BlblR5cGVTYW5pdGl6
ZXIuY3BwICovOyB9OworCQlGNDBDQUZDMjEwQThDQjNBMDA1MDhGNEIgLyogT3BlblR5cGVTYW5p
dGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
MENBRkMwMTBBOENCM0EwMDUwOEY0QiAvKiBPcGVuVHlwZVNhbml0aXplci5oICovOyB9OwogCQlG
NUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFENzBGRkNBN0NF
MDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgKi87IH07CiAJCUY1QzA0MURCMEZG
Q0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFEODBGRkNBN0NFMDA4MzlENEEgLyog
SFRNTERhdGFMaXN0RWxlbWVudC5oICovOyB9OwogCQlGNUMwNDFFMzBGRkNBOTZEMDA4MzlENEEg
LyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxREUwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRh
TGlzdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTk4OTcsNiArOTg5OSw4IEBACiAJCUVENTAxREM1MEIy
NDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENv
bG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBX
ZWJDb3JlUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3Jl
UHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMg
PSAwOyB9OworCQlGNDBDQUZCRjEwQThDQjNBMDA1MDhGNEIgLyogT3BlblR5cGVTYW5pdGl6ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6
ZXIuY3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDBDQUZDMDEwQThDQjNBMDA1MDhGNEIgLyogT3BlblR5cGVT
YW5pdGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3BlblR5cGVTYW5p
dGl6ZXIuaDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY1MjNEMjNCMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjNDMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1M
RG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTERvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIzRDIzRTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTE0MDU5LDYgKzE0MDYzLDcgQEAKIAkJQjJBMDE1
OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDBDQUZCRTEwQThDQUY1MDA1MDhGNEIgLyogb3BlbnR5
cGUgKi8sCiAJCQkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovLAogCQkJCUE3NUU4
QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAogCQkJCUIyNzUzNTQ5MEIwNTM4MTQw
MDJDRTY0RiAvKiBtYWMgKi8sCkBAIC0xNTA0MCw2ICsxNTA0NSwxNSBAQAogCQkJbmFtZSA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUY0MENBRkJFMTBBOENBRjUw
MDUwOEY0QiAvKiBvcGVudHlwZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRjQwQ0FGQkYxMEE4Q0IzQTAwNTA4RjRCIC8qIE9wZW5UeXBlU2FuaXRpemVy
LmNwcCAqLywKKwkJCQlGNDBDQUZDMDEwQThDQjNBMDA1MDhGNEIgLyogT3BlblR5cGVTYW5pdGl6
ZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0gb3BlbnR5cGU7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4MDk5LDYgKzE4MTEzLDcg
QEAKIAkJCQkxNDc5RkFGMDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0NzlGQUYyMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVu
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc5RkFGNDEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MENBRkMyMTBBOENCM0EwMDUwOEY0QiAv
KiBPcGVuVHlwZVNhbml0aXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDIzOSw2ICsyMDI1NCw3
IEBACiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5
UnVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUzNzUwMERFRDY1NSAvKiBS
ZW5kZXJSdWJ5VGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDBDQUZDMTEwQThDQjNBMDA1
MDhGNEIgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAppbmRleCA4ODAzNWQ1Li5hYzVlN2ZkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRp
emVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpZiBQTEFURk9STShXSU5fT1Mp
CkBAIC0yNDUsNiArMjQ2LDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FS
RyhidWZmZXIsIGJ1ZmZlcik7CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorICAg
IE9wZW5UeXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlmICgh
dHJhbnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQu
CisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU5fT1MpCiAgICAgLy8gSW50cm9kdWNlIHRoZSBmb250IHRvIEdESS4gQWRkRm9udE1l
bVJlc291cmNlRXggY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgd2lsbCBwb2xsdXRlIHRoZSBw
cm9jZXNzJ3MKICAgICAvLyBmb250IG5hbWVzcGFjZSAoV2luZG93cyBoYXMgbm8gQVBJIGZvciBj
cmVhdGluZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91dCBleHBvc2luZyB0aGUgZm9udCB0byB0
aGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNWU3MjEwMS4uMjU2YjVhNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxp
Y2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJG
b250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCwxNCBAQCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
ewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCisjaWYgRU5BQkxFKE9QRU5UWVBF
X1NBTklUSVpFUikKKyAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIoYnVmZmVyKTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGl6ZXIuc2FuaXRp
emUoKTsKKyAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7IC8vIHZh
bGlkYXRpb24gZmFpbGVkLgorICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZlci5nZXQoKTsKKyNl
bmRpZgorCiAgICAgQVRTRm9udENvbnRhaW5lclJlZiBjb250YWluZXJSZWYgPSAwOwogICAgIEFU
U0ZvbnRSZWYgZm9udFJlZiA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYjRjZGIwOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikK
KyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXplci5oIgorCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisjaW5jbHVkZSAib3BlbnR5cGUtc2FuaXRpc2VyLmgiCisjaW5jbHVkZSAib3RzLW1lbW9y
eS1zdHJlYW0uaCIKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gT3BlblR5cGVTYW5pdGl6ZXI6OnNh
bml0aXplKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qgd2ViIGZvbnQgc2l6ZSB3aGljaCB3ZSdsbCB0cnkgdG8g
dHJhbnNjb2RlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4V2ViRm9udFNpemUgPSAzMCAq
IDEwMjQgKiAxMDI0OyAvLyAzMCBNQgorICAgIGlmIChtX2J1ZmZlci0+c2l6ZSgpID4gbWF4V2Vi
Rm9udFNpemUpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gQSB0cmFuc2NvZGVkIGZvbnQg
aXMgdXN1YWxseSBzbWFsbGVyIHRoYW4gYW4gb3JpZ2luYWwgZm9udC4KKyAgICAvLyBIb3dldmVy
LCBpdCBjYW4gYmUgc2xpZ2h0bHkgYmlnZ2VyIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSBkdWUgdG8K
KyAgICAvLyBuYW1lIHRhYmxlIHJlcGxhY2VtZW50IGFuZC9vciBwYWRkaW5nIGZvciBnbHlmIHRh
YmxlLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFkTGVuID0gMjAgKiAxMDI0OyAvLyAyMCBr
QgorCisgICAgT3duQXJyYXlQdHI8dW5zaWduZWQgY2hhcj4gdHJhbnNjb2RlUmF3QnVmZmVyKG5l
dyB1bnNpZ25lZCBjaGFyW21fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW5dKTsKKyAgICBvdHM6Ok1l
bW9yeVN0cmVhbSBvdXRwdXQodHJhbnNjb2RlUmF3QnVmZmVyLmdldCgpLCBtX2J1ZmZlci0+c2l6
ZSgpICsgcGFkTGVuKTsKKyAgICBpZiAoIW90czo6UHJvY2Vzcygmb3V0cHV0LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUo
KSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29uc3Qgc2l6ZV90IHRyYW5zY29kZUxlbiA9
IG91dHB1dC5UZWxsKCk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29k
ZVJhd0J1ZmZlci5nZXQoKSwgdHJhbnNjb2RlTGVuKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjkzNDQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXpl
ci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE9wZW5UeXBlU2FuaXRpemVyX2gKKyNkZWZpbmUg
T3BlblR5cGVTYW5pdGl6ZXJfaAorCisjaWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKKworY2xhc3MgT3BlblR5cGVTYW5pdGl6ZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IE9wZW5UeXBlU2FuaXRpemVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplKCk7CisKK3ByaXZhdGU6CisgICAgU2hhcmVkQnVmZmVyKiBjb25zdCBt
X2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShPUEVOVFlQRV9TQU5JVElaRVIpCisjZW5kaWYgLy8gT3BlblR5cGVTYW5pdGl6ZXJfaApkaWZm
IC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjZlZmM2
Yi4uZDY2MzhkMyAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDkgIFl1c3VrZSBTYXRvICA8eXVzdWtl
c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaGFuZGxlIHdlYiBmb250cyBpbiBhIHNlY3VyZSBtYW5uZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTA2CisKKyAgICAgICAgKiBj
aHJvbWl1bS9ERVBTOiBBZGRlZCBkZXBlbmRlbmN5IHRvIHRoZSBPcGVuVHlwZSBzYW5pdGlzZXIg
bGlicmFyeS4KKyAgICAgICAgKiBjaHJvbWl1bS9mZWF0dXJlcy5neXBpOiBBZGRlZCBFTkFCTEVf
T1BFTlRZUEVfU0FOSVRJWkVSPTEuCisKIDIwMDktMTEtMDIgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbiBh
bmQgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9XZWJLaXQv
Y2hyb21pdW0vREVQUwppbmRleCA1ZjViOWI4Li43N2ZmZGMyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vREVQUworKysgYi9XZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtNDEsNiArNDEsNyBA
QCB2YXJzID0gewogICAnZ3lwX3Jldic6ICc2ODUnLAogICAnaWN1X3Jldic6ICcyNzY4NycsCiAg
ICdvcGVudmNkaWZmX3Jldic6ICcyOCcsCisgICdvdHNfcmV2JzogJzQnLAogICAnc2tpYV9yZXYn
OiAnMzc2JywKICAgJ3Y4X3Jldic6ICczMDMwJywKIApAQCAtMTIwLDYgKzEyMSw5IEBAIGRlcHMg
PSB7CiAgICd0aGlyZF9wYXJ0eS9ucGFwaSc6CiAgICAgVmFyKCdjaHJvbWl1bV9zdm4nKSsnL3Ro
aXJkX3BhcnR5L25wYXBpQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKIAorICAndGhpcmRfcGFydHkv
b3RzJzoKKyAgICAnaHR0cDovL290cy5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtAJytWYXIoJ290
c19yZXYnKSwKKwogICAndGhpcmRfcGFydHkvc3FsaXRlJzoKICAgICBWYXIoJ2Nocm9taXVtX3N2
bicpKycvdGhpcmRfcGFydHkvc3FsaXRlQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9XZWJLaXQvY2hyb21pdW0vZmVh
dHVyZXMuZ3lwaQppbmRleCBlM2JjN2QzLi4zMGM1NTE5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpA
QCAtNTAsNiArNTAsNyBAQAogICAgICAgICAnRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTPTAn
LAogICAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICAgJ0VOQUJMRV9OT1RJ
RklDQVRJT05TPTEnLAorICAgICAgICAnRU5BQkxFX09QRU5UWVBFX1NBTklUSVpFUj0xJywKICAg
ICAgICAgJ0VOQUJMRV9PUklFTlRBVElPTl9FVkVOVFM9MCcsCiAgICAgICAgICdFTkFCTEVfWFNM
VD0xJywKICAgICAgICAgJ0VOQUJMRV9YUEFUSD0xJyw=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44018</attachid>
            <date>2009-11-30 06:28:45 -0800</date>
            <delta_ts>2009-11-30 06:30:35 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v11</desc>
            <filename>bug-31106-20091130232843.patch</filename>
            <type>text/plain</type>
            <size>5501</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVT
YW5pdGl6ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVNhbml0aXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRjZGIw
OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVTYW5pdGl6ZXIuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0
aXplci5oIgorCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAib3BlbnR5cGUt
c2FuaXRpc2VyLmgiCisjaW5jbHVkZSAib3RzLW1lbW9yeS1zdHJlYW0uaCIKKyNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gT3BlblR5cGVTYW5pdGl6ZXI6OnNhbml0aXplKCkKK3sKKyAgICBpZiAoIW1f
YnVmZmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoaXMgaXMgdGhlIGxhcmdlc3Qg
d2ViIGZvbnQgc2l6ZSB3aGljaCB3ZSdsbCB0cnkgdG8gdHJhbnNjb2RlLgorICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4V2ViRm9udFNpemUgPSAzMCAqIDEwMjQgKiAxMDI0OyAvLyAzMCBNQgor
ICAgIGlmIChtX2J1ZmZlci0+c2l6ZSgpID4gbWF4V2ViRm9udFNpemUpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gQSB0cmFuc2NvZGVkIGZvbnQgaXMgdXN1YWxseSBzbWFsbGVyIHRoYW4g
YW4gb3JpZ2luYWwgZm9udC4KKyAgICAvLyBIb3dldmVyLCBpdCBjYW4gYmUgc2xpZ2h0bHkgYmln
Z2VyIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSBkdWUgdG8KKyAgICAvLyBuYW1lIHRhYmxlIHJlcGxh
Y2VtZW50IGFuZC9vciBwYWRkaW5nIGZvciBnbHlmIHRhYmxlLgorICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgcGFkTGVuID0gMjAgKiAxMDI0OyAvLyAyMCBrQgorCisgICAgT3duQXJyYXlQdHI8dW5z
aWduZWQgY2hhcj4gdHJhbnNjb2RlUmF3QnVmZmVyKG5ldyB1bnNpZ25lZCBjaGFyW21fYnVmZmVy
LT5zaXplKCkgKyBwYWRMZW5dKTsKKyAgICBvdHM6Ok1lbW9yeVN0cmVhbSBvdXRwdXQodHJhbnNj
b2RlUmF3QnVmZmVyLmdldCgpLCBtX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuKTsKKyAgICBpZiAo
IW90czo6UHJvY2Vzcygmb3V0cHV0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPiht
X2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgY29uc3Qgc2l6ZV90IHRyYW5zY29kZUxlbiA9IG91dHB1dC5UZWxsKCk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlci5nZXQoKSwgdHJhbnNj
b2RlTGVuKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE9QRU5UWVBFX1NBTklUSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zZjkzNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE9wZW5UeXBlU2FuaXRpemVyX2gKKyNkZWZpbmUgT3BlblR5cGVTYW5pdGl6ZXJfaAorCisj
aWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgT3Bl
blR5cGVTYW5pdGl6ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE9wZW5UeXBlU2FuaXRpemVy
KFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7
CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplKCk7CisKK3By
aXZhdGU6CisgICAgU2hhcmVkQnVmZmVyKiBjb25zdCBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9TQU5JVElaRVIpCisj
ZW5kaWYgLy8gT3BlblR5cGVTYW5pdGl6ZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44019</attachid>
            <date>2009-11-30 06:30:45 -0800</date>
            <delta_ts>2009-12-02 20:08:59 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v12</desc>
            <filename>bug-31106-20091130233043.patch</filename>
            <type>text/plain</type>
            <size>16903</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWQ4M2ZkMy4uM2U5OWJhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0xMS0zMCAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTYW5pdGl6ZSB3ZWIgZm9udHMgdXNpbmcgdGhlIE9UUyBsaWJyYXJ5
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpemVyIChPVFMpLiBJdCBw
YXJzZXMgT3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVt
cHRzIHRvIHZhbGlkYXRlIGFuZCBzYW5pdGl6ZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0
aGUgYXR0YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4K
KyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IEFkZGVkIGRlcGVu
ZGVuY3kgdG8gKGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L290cy8gbGlicmFyeS4KKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZGVkIG5ldyBmaWxlcyBiZWxvdy4KKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOiBWYWxpZGF0
ZSBhbmQgdHJhbnNjb2RlIGEgd2ViIGZvbnQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlU2FuaXRpemVyOjpzYW5pdGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZVNhbml0aXplcjo6T3BlblR5cGVTYW5pdGl6ZXIpOgorCiAyMDA5LTExLTMwICBHaXJp
c2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGYxNzg4
NTcuLjg0ODkzNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtNjMxLDYgKzYzMSw3IEBA
CiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhtbC9saWJ4bWwu
Z3lwOmxpYnhtbCcsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xp
YnhzbHQvbGlieHNsdC5neXA6bGlieHNsdCcsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3RoaXJkX3BhcnR5L25wYXBpL25wYXBpLmd5cDpucGFwaScsCisgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3RoaXJkX3BhcnR5L290cy9vdHMuZ3lwOm90cycsCiAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcWxpdGUuZ3lwOnNxbGl0ZScsCiAgICAg
ICBdLAogICAgICAgJ2RlZmluZXMnOiBbCkBAIC02NTcsNiArNjU4LDcgQEAKICAgICAgICAgIyBm
aWxlbmFtZXMuCiAgICAgICAgIFsnZXhjbHVkZScsICcoYW5kcm9pZHxjYWlyb3xjZnxjZ3xjdXJs
fGd0a3xoYWlrdXxsaW51eHxtYWN8b3BlbnR5cGV8cG9zaXh8cXR8c291cHxzeW1iaWFufHdpbnx3
eCkvJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICcoPzwhQ2hyb21pdW0pKFNWR0FsbEluT25lfEFu
ZHJvaWR8Q2Fpcm98Q0Z8Q0d8Q3VybHxHdGt8TGludXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4
fFF0fFNhZmFyaXxTb3VwfFN5bWJpYW58V2lufFd4KVxcLihjcHB8bW0/KSQnXSwKKyAgICAgICAg
WydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVy
XFwuY3BwJCddLAogCiAgICAgICAgICMgSlNDLW9ubHkuCiAgICAgICAgIFsnZXhjbHVkZScsICdp
bnNwZWN0b3IvSmF2YVNjcmlwdFteL10qXFwuY3BwJCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyMjI1ZGVlLi41YjUyZDkz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMjAxMyw2ICsyMDEzLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViVGlsZWRMYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViVGlsZWRMYXllci5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29sb3JRdC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNjRlOWYwLi43MWU2ZDc3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc0Myw2ICs0NzQzLDggQEAKIAkJ
RUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAv
KiBFZGl0b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xv
ck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURF
M0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8q
IFdlYkNvcmVQcmVmaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07
CisJCUY0NkMwMzM3MTBDNDAwRUYwMDVFOENFNCAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDMDMzNTEwQzQw
MEVGMDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwICovOyB9OworCQlGNDZDMDMzODEw
QzQwMEVGMDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkMwMzM2MTBDNDAwRUYwMDVFOENFNCAvKiBP
cGVuVHlwZVNhbml0aXplci5oICovOyB9OwogCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyog
SFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNUMwNDFENzBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxl
bWVudC5jcHAgKi87IH07CiAJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxp
c3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNUMwNDFEODBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5oICovOyB9
OwogCQlGNUMwNDFFMzBGRkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxREUw
RkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTk5
MzYsNiArOTkzOCw4IEBACiAJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1t
OyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OworCQlGNDZDMDMzNTEwQzQwMEVG
MDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBwYXRoID0gb3BlbnR5cGUvT3Bl
blR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDZDMDMz
NjEwQzQwMEVGMDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gT3BlblR5cGVTYW5pdGl6ZXIuaDsgcGF0aCA9IG9wZW50eXBlL09w
ZW5UeXBlU2FuaXRpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MjNEMjNC
MDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERvY3VtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1
MjNEMjNDMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTERvY3VtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIz
RDIzRTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTE0MTI0LDYgKzE0MTI4LDcgQEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBo
aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNDZD
MDMzNDEwQzQwMEVGMDA1RThDRTQgLyogb3BlbnR5cGUgKi8sCiAJCQkJQjI3NTM1MjkwQjA1Mzgx
NDAwMkNFNjRGIC8qIGNnICovLAogCQkJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0
ZXJzICovLAogCQkJCUIyNzUzNTQ5MEIwNTM4MTQwMDJDRTY0RiAvKiBtYWMgKi8sCkBAIC0xNTEw
Nyw2ICsxNTExMiwxNSBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCUY0NkMwMzM0MTBDNDAwRUYwMDVFOENFNCAvKiBvcGVudHlwZSAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjQ2QzAzMzUxMEM0MDBF
RjAwNUU4Q0U0IC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLywKKwkJCQlGNDZDMDMzNjEwQzQw
MEVGMDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0g
b3BlbnR5cGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlGNTIzRDE4NDAy
REU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTE4MTc5LDYgKzE4MTkzLDcgQEAKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5
MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4
RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTQ3RTY2
MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NDZDMDMzODEwQzQwMEVGMDA1RThDRTQgLyogT3BlblR5cGVTYW5pdGl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjAzMjksNiArMjAzNDQsNyBAQAogCQkJCTE4QzVGQ0I3MTBBM0M2RjIwMDQ4NDM4
RCAvKiBTaGFyZWRTY3JpcHRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQjRDRDI1
MTBCMzIyRTIwMEJGRkQ3RSAvKiBDcmVkZW50aWFsU3RvcmFnZU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRjQ2QzAzMzcxMEM0MDBFRjAwNUU4Q0U0IC8qIE9wZW5UeXBlU2FuaXRp
emVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNDA4
MTUyMS4uNmJkN2Q3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC00Miw2ICs0Miw3
IEBACiAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXplci5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogCiAjaWYgUExBVEZPUk0oV0lOX09TKQpAQCAtMTcxLDYgKzE3MiwxNCBAQCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCisj
aWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyAgICBPcGVuVHlwZVNhbml0aXplciBzYW5p
dGl6ZXIoYnVmZmVyKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIg
PSBzYW5pdGl6ZXIuc2FuaXRpemUoKTsKKyAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIDA7IC8vIHZhbGlkYXRpb24gZmFpbGVkLgorICAgIGJ1ZmZlciA9IHRyYW5zY29k
ZUJ1ZmZlci5nZXQoKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOX09TKQogICAgIC8vIElu
dHJvZHVjZSB0aGUgZm9udCB0byBHREkuIEFkZEZvbnRNZW1SZXNvdXJjZUV4IHNob3VsZCBiZSB1
c2VkIHdpdGggY2FyZSwgYmVjYXVzZSBpdCB3aWxsIHBvbGx1dGUgdGhlIHByb2Nlc3MncwogICAg
IC8vIGZvbnQgbmFtZXNwYWNlIChXaW5kb3dzIGhhcyBubyBBUEkgZm9yIGNyZWF0aW5nIGFuIEhG
T05UIGZyb20gZGF0YSB3aXRob3V0IGV4cG9zaW5nIHRoZSBmb250IHRvIHRoZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAppbmRleCA1ZTcyMTAxLi4yNTZiNWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMjQsNiAr
MjQsNyBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNl
cy5oPgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURh
dGEuaCIKKyNpbmNsdWRlICJPcGVuVHlwZVNhbml0aXplci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQzLDYgKzQ0LDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
X0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQor
ICAgIE9wZW5UeXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlm
ICghdHJhbnNjb2RlQnVmZmVyKQorICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWls
ZWQuCisgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICAgICBB
VFNGb250Q29udGFpbmVyUmVmIGNvbnRhaW5lclJlZiA9IDA7CiAgICAgQVRTRm9udFJlZiBmb250
UmVmID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVNhbml0aXplci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iNGNkYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgIk9w
ZW5UeXBlU2FuaXRpemVyLmgiCisKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRl
ICJvcGVudHlwZS1zYW5pdGlzZXIuaCIKKyNpbmNsdWRlICJvdHMtbWVtb3J5LXN0cmVhbS5oIgor
I2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBPcGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUoKQorewor
ICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhpcyBpcyB0
aGUgbGFyZ2VzdCB3ZWIgZm9udCBzaXplIHdoaWNoIHdlJ2xsIHRyeSB0byB0cmFuc2NvZGUuCisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhXZWJGb250U2l6ZSA9IDMwICogMTAyNCAqIDEwMjQ7
IC8vIDMwIE1CCisgICAgaWYgKG1fYnVmZmVyLT5zaXplKCkgPiBtYXhXZWJGb250U2l6ZSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBBIHRyYW5zY29kZWQgZm9udCBpcyB1c3VhbGx5IHNt
YWxsZXIgdGhhbiBhbiBvcmlnaW5hbCBmb250LgorICAgIC8vIEhvd2V2ZXIsIGl0IGNhbiBiZSBz
bGlnaHRseSBiaWdnZXIgdGhhbiB0aGUgb3JpZ2luYWwgb25lIGR1ZSB0bworICAgIC8vIG5hbWUg
dGFibGUgcmVwbGFjZW1lbnQgYW5kL29yIHBhZGRpbmcgZm9yIGdseWYgdGFibGUuCisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwYWRMZW4gPSAyMCAqIDEwMjQ7IC8vIDIwIGtCCisKKyAgICBPd25B
cnJheVB0cjx1bnNpZ25lZCBjaGFyPiB0cmFuc2NvZGVSYXdCdWZmZXIobmV3IHVuc2lnbmVkIGNo
YXJbbV9idWZmZXItPnNpemUoKSArIHBhZExlbl0pOworICAgIG90czo6TWVtb3J5U3RyZWFtIG91
dHB1dCh0cmFuc2NvZGVSYXdCdWZmZXIuZ2V0KCksIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4p
OworICAgIGlmICghb3RzOjpQcm9jZXNzKCZvdXRwdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBjb25zdCBzaXplX3QgdHJhbnNjb2RlTGVuID0gb3V0cHV0LlRlbGwo
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLmdl
dCgpLCB0cmFuc2NvZGVMZW4pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOTM0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgT3BlblR5cGVTYW5pdGl6ZXJfaAorI2RlZmluZSBPcGVuVHlwZVNhbml0
aXplcl9oCisKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOwor
CitjbGFzcyBPcGVuVHlwZVNhbml0aXplciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3BlblR5
cGVTYW5pdGl6ZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVm
ZmVyKQorICAgIHsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emUoKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRCdWZmZXIqIGNvbnN0IG1fYnVmZmVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE9QRU5UWVBFX1NB
TklUSVpFUikKKyNlbmRpZiAvLyBPcGVuVHlwZVNhbml0aXplcl9oCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBk
ZmMzYTBjLi45MWY0YzM1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMS0z
MCAgWXVzdWtlIFNhdG8gIDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYW5pdGl6ZSB3ZWIgZm9udHMgdXNpbmcg
dGhlIE9UUyBsaWJyYXJ5IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzExMDYKKworICAgICAgICAqIERFUFM6IEFkZGVkIGRlcGVuZGVuY3kgdG8gdGhl
IE9wZW5UeXBlIHNhbml0aXplciBsaWJyYXJ5LgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6IEFk
ZGVkIEVOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MS4KKwogMjAwOS0xMS0yNyAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9XZWJLaXQvY2hy
b21pdW0vREVQUwppbmRleCA3MGRjNmVmLi4wN2UzODViIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vREVQUworKysgYi9XZWJLaXQvY2hyb21pdW0vREVQUwpAQCAtNDEsNiArNDEsNyBAQCB2
YXJzID0gewogICAnZ3lwX3Jldic6ICc3NTEnLAogICAnaWN1X3Jldic6ICczMTcyNCcsCiAgICdv
cGVudmNkaWZmX3Jldic6ICcyOCcsCisgICdvdHNfcmV2JzogJzE5JywKICAgJ3NraWFfcmV2Jzog
JzQyNCcsCiAgICd2OF9yZXYnOiAnMzI3NicsCiAKQEAgLTExOCw2ICsxMTksOSBAQCBkZXBzID0g
ewogICAndGhpcmRfcGFydHkvbnBhcGknOgogICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy90aGly
ZF9wYXJ0eS9ucGFwaUAnK1ZhcignY2hyb21pdW1fcmV2JyksCiAKKyAgJ3RoaXJkX3BhcnR5L290
cyc6CisgICAgJ2h0dHA6Ly9vdHMuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQCcrVmFyKCdvdHNf
cmV2JyksCisKICAgJ3RoaXJkX3BhcnR5L3NxbGl0ZSc6CiAgICAgVmFyKCdjaHJvbWl1bV9zdm4n
KSsnL3RoaXJkX3BhcnR5L3NxbGl0ZUAnK1ZhcignY2hyb21pdW1fcmV2JyksCiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvV2ViS2l0L2Nocm9taXVtL2ZlYXR1
cmVzLmd5cGkKaW5kZXggM2M1M2Y3MS4uMTRiZTFhMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAg
LTUwLDYgKzUwLDcgQEAKICAgICAgICAgJ0VOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUz0wJywK
ICAgICAgICAgJ0VOQUJMRV9JQ09OREFUQUJBU0U9MCcsCiAgICAgICAgICdFTkFCTEVfTk9USUZJ
Q0FUSU9OUz0xJywKKyAgICAgICAgJ0VOQUJMRV9PUEVOVFlQRV9TQU5JVElaRVI9MScsCiAgICAg
ICAgICdFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTPTAnLAogICAgICAgICAnRU5BQkxFX1hTTFQ9
MScsCiAgICAgICAgICdFTkFCTEVfWFBBVEg9MScsCg==
</data>
<flag name="review"
          id="25786"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="25963"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44200</attachid>
            <date>2009-12-02 18:28:44 -0800</date>
            <delta_ts>2009-12-02 22:14:31 -0800</delta_ts>
            <desc>transcode_webfonts_by_ots_v13</desc>
            <filename>bug-31106-20091203112842.patch</filename>
            <type>text/plain</type>
            <size>16908</size>
            <attacher name="Yusuke Sato">yusukes</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTQ1MGExMi4uMzZmMWI3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAwOS0xMi0wMiAgWXVzdWtlIFNhdG8g
IDx5dXN1a2VzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTYW5pdGl6ZSB3ZWIgZm9udHMgdXNpbmcgdGhlIE9UUyBsaWJyYXJ5
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExMDYK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgT3BlblR5cGUgc2FuaXRpemVyIChPVFMpLiBJdCBw
YXJzZXMgT3BlblR5cGUgZmlsZXMgKGZyb20gQGZvbnQtZmFjZSkKKyAgICAgICAgYW5kIGF0dGVt
cHRzIHRvIHZhbGlkYXRlIGFuZCBzYW5pdGl6ZSB0aGVtLiBXZSBob3BlIHRoaXMgcmVkdWNlcyB0
aGUgYXR0YWNrIHN1cmZhY2UKKyAgICAgICAgb2YgdGhlIHN5c3RlbSBmb250IGxpYnJhcmllcy4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBBZGRlZCBkZXBlbmRlbmN5IHRv
IChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvIGxpYnJhcnkuCisgICAgICAgICog
V2ViQ29yZS5neXBpOiBBZGRlZCBuZXcgZmlsZXMgYmVsb3cuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDogVmFsaWRhdGUgYW5kIHRy
YW5zY29kZSBhIHdlYiBmb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlU2FuaXRpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVNh
bml0aXplcjo6c2FuaXRpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlU2FuaXRpemVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVT
YW5pdGl6ZXI6Ok9wZW5UeXBlU2FuaXRpemVyKToKKwogMjAwOS0xMi0wMiAgRGF2ZSBIeWF0dCAg
PGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGEyYWU2MDUuLjIzMzlhOTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cApAQCAtNjI0LDYgKzYyNCw3IEBACiAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3RoaXJkX3BhcnR5L2xpYnhtbC9saWJ4bWwuZ3lwOmxpYnhtbCcsCiAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2xpYnhzbHQvbGlieHNsdC5neXA6bGlieHNsdCcs
CiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L25wYXBpL25wYXBpLmd5
cDpucGFwaScsCisgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L290cy9v
dHMuZ3lwOm90cycsCiAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3Nx
bGl0ZS9zcWxpdGUuZ3lwOnNxbGl0ZScsCiAgICAgICBdLAogICAgICAgJ2RlZmluZXMnOiBbCkBA
IC02NTAsNiArNjUxLDcgQEAKICAgICAgICAgIyBmaWxlbmFtZXMuCiAgICAgICAgIFsnZXhjbHVk
ZScsICcoYW5kcm9pZHxjYWlyb3xjZnxjZ3xjdXJsfGd0a3xoYWlrdXxsaW51eHxtYWN8b3BlbnR5
cGV8cG9zaXh8cXR8c291cHxzeW1iaWFufHdpbnx3eCkvJ10sCiAgICAgICAgIFsnZXhjbHVkZScs
ICcoPzwhQ2hyb21pdW0pKFNWR0FsbEluT25lfEFuZHJvaWR8Q2Fpcm98Q0Z8Q0d8Q3VybHxHdGt8
TGludXh8TWFjfE9wZW5UeXBlfFBPU0lYfFBvc2l4fFF0fFNhZmFyaXxTb3VwfFN5bWJpYW58V2lu
fFd4KVxcLihjcHB8bW0/KSQnXSwKKyAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyXFwuY3BwJCddLAogCiAgICAgICAgICMgSlND
LW9ubHkuCiAgICAgICAgIFsnZXhjbHVkZScsICdpbnNwZWN0b3IvSmF2YVNjcmlwdFteL10qXFwu
Y3BwJCddLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0NzBjNzM5Li43MDBiODViIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAyNiw2ICsyMDI2LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5tbScsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29sb3JR
dC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
NmYwNzcyLi4yYmZiZGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNDc0OCw2ICs0NzQ4LDggQEAKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8q
IEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CiAJCUVE
RTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENv
bG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERUM5ODAyMEFFRDdFMTcwMDU5
MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi87IH07CisJCUY0RUFGNEFFMTBDNzQyQjEwMDkxMDBE
MyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5p
dGl6ZXIuY3BwICovOyB9OworCQlGNEVBRjRBRjEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVT
YW5pdGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0RUFGNEFEMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5oICovOyB9Owog
CQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFENzBGRkNB
N0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgKi87IH07CiAJCUY1QzA0MURC
MEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUMwNDFEODBGRkNBN0NFMDA4MzlENEEg
LyogSFRNTERhdGFMaXN0RWxlbWVudC5oICovOyB9OwogCQlGNUMwNDFFMzBGRkNBOTZEMDA4MzlE
NEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxREUwRkZDQTk2RDAwODM5RDRBIC8qIERPTUhUTUxE
YXRhTGlzdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTk5NTIsNiArOTk1NCw4IEBACiAJCUVENTAxREM1
MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8q
IENvbG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAv
KiBXZWJDb3JlUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlUHJlZml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1Rh
YnMgPSAwOyB9OworCQlGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3BlblR5cGVTYW5p
dGl6ZXIuY3BwOyBwYXRoID0gb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNEVBRjRBRDEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5
cGVTYW5pdGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gT3BlblR5cGVT
YW5pdGl6ZXIuaDsgcGF0aCA9IG9wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MjNEMjNCMDJERTQzOTYwMTg2MzVDQSAvKiBIVE1MRG9j
dW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMjNDMDJERTQzOTYwMTg2MzVDQSAvKiBI
VE1MRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSFRNTERvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIzRDIzRTAyREU0Mzk2MDE4NjM1Q0EgLyogSFRN
TEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSFRNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTE0MTUxLDYgKzE0MTU1LDcgQEAKIAkJQjJB
MDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlGNEVBRjRBQjEwQzc0MjY4MDA5MTAwRDMgLyogb3Bl
bnR5cGUgKi8sCiAJCQkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovLAogCQkJCUE3
NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAogCQkJCUIyNzUzNTQ5MEIwNTM4
MTQwMDJDRTY0RiAvKiBtYWMgKi8sCkBAIC0xNTEzMyw2ICsxNTEzOCwxNSBAQAogCQkJbmFtZSA9
IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUY0RUFGNEFCMTBDNzQy
NjgwMDkxMDBEMyAvKiBvcGVudHlwZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRp
emVyLmNwcCAqLywKKwkJCQlGNEVBRjRBRDEwQzc0MkIxMDA5MTAwRDMgLyogT3BlblR5cGVTYW5p
dGl6ZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0gb3BlbnR5cGU7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE4MjA4LDYgKzE4MjIy
LDcgQEAKIAkJCQk3QTBFNzZGQTEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcxRjEwQzAwREIxMDBB
MDI3NkUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RUFGNEFGMTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMDM1OSw2ICsyMDM3NCw3IEBACiAJCQkJN0EwRTc2RjkxMEJGMDhFRDAwQTAyNzZF
IC8qIEluamVjdGVkU2NyaXB0SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTBFNzcwRTEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBMEU3NzFFMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNEVBRjRBRTEwQzc0MkIxMDA5MTAwRDMgLyogT3Bl
blR5cGVTYW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCA0MDgxNTIxLi42YmQ3ZDdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpemVyLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpZiBQTEFURk9STShXSU5fT1MpCkBAIC0xNzEsNiAr
MTcyLDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1
ZmZlcik7CiAKKyNpZiBFTkFCTEUoT1BFTlRZUEVfU0FOSVRJWkVSKQorICAgIE9wZW5UeXBlU2Fu
aXRpemVyIHNhbml0aXplcihidWZmZXIpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5z
Y29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOworICAgIGlmICghdHJhbnNjb2RlQnVm
ZmVyKQorICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgYnVmZmVy
ID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOworI2VuZGlmCisKICNpZiBQTEFURk9STShXSU5fT1Mp
CiAgICAgLy8gSW50cm9kdWNlIHRoZSBmb250IHRvIEdESS4gQWRkRm9udE1lbVJlc291cmNlRXgg
c2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLCBiZWNhdXNlIGl0IHdpbGwgcG9sbHV0ZSB0aGUgcHJv
Y2VzcydzCiAgICAgLy8gZm9udCBuYW1lc3BhY2UgKFdpbmRvd3MgaGFzIG5vIEFQSSBmb3IgY3Jl
YXRpbmcgYW4gSEZPTlQgZnJvbSBkYXRhIHdpdGhvdXQgZXhwb3NpbmcgdGhlIGZvbnQgdG8gdGhl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IDVlNzIxMDEuLjI1NmI1YTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiRm9u
dFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIk9wZW5UeXBlU2FuaXRpemVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNiArNDQsMTQgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIAorI2lmIEVOQUJMRShPUEVOVFlQRV9T
QU5JVElaRVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1ZmZlcik7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRpemVyLnNhbml0aXpl
KCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVybiAwOyAvLyB2YWxp
ZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CisjZW5k
aWYKKwogICAgIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyUmVmID0gMDsKICAgICBBVFNG
b250UmVmIGZvbnRSZWYgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI0Y2RiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcApAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShPUEVOVFlQRV9TQU5JVElaRVIpCisj
aW5jbHVkZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgIm9wZW50eXBlLXNhbml0aXNlci5oIgorI2luY2x1ZGUgIm90cy1tZW1vcnkt
c3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE9wZW5UeXBlU2FuaXRpemVyOjpzYW5p
dGl6ZSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBUaGlzIGlzIHRoZSBsYXJnZXN0IHdlYiBmb250IHNpemUgd2hpY2ggd2UnbGwgdHJ5IHRvIHRy
YW5zY29kZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFdlYkZvbnRTaXplID0gMzAgKiAx
MDI0ICogMTAyNDsgLy8gMzAgTUIKKyAgICBpZiAobV9idWZmZXItPnNpemUoKSA+IG1heFdlYkZv
bnRTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEEgdHJhbnNjb2RlZCBmb250IGlz
IHVzdWFsbHkgc21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQuCisgICAgLy8gSG93ZXZlciwg
aXQgY2FuIGJlIHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmlnaW5hbCBvbmUgZHVlIHRvCisg
ICAgLy8gbmFtZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFkZGluZyBmb3IgZ2x5ZiB0YWJs
ZS4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIwICogMTAyNDsgLy8gMjAga0IK
KworICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+IHRyYW5zY29kZVJhd0J1ZmZlcihuZXcg
dW5zaWduZWQgY2hhclttX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuXSk7CisgICAgb3RzOjpNZW1v
cnlTdHJlYW0gb3V0cHV0KHRyYW5zY29kZVJhd0J1ZmZlci5nZXQoKSwgbV9idWZmZXItPnNpemUo
KSArIHBhZExlbik7CisgICAgaWYgKCFvdHM6OlByb2Nlc3MoJm91dHB1dCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCkp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnN0IHNpemVfdCB0cmFuc2NvZGVMZW4gPSBv
dXRwdXQuVGVsbCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0cmFuc2NvZGVS
YXdCdWZmZXIuZ2V0KCksIHRyYW5zY29kZUxlbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShPUEVOVFlQRV9TQU5JVElaRVIpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MzQ0OAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIu
aApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBPcGVuVHlwZVNhbml0aXplcl9oCisjZGVmaW5lIE9w
ZW5UeXBlU2FuaXRpemVyX2gKKworI2lmIEVOQUJMRShPUEVOVFlQRV9TQU5JVElaRVIpCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKK2NsYXNzIE9wZW5UeXBlU2FuaXRpemVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBPcGVuVHlwZVNhbml0aXplcihTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXIpCisgICAgeworICAgIH0KKworICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZSgpOworCitwcml2YXRlOgorICAgIFNoYXJlZEJ1ZmZlciogY29uc3QgbV9i
dWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
T1BFTlRZUEVfU0FOSVRJWkVSKQorI2VuZGlmIC8vIE9wZW5UeXBlU2FuaXRpemVyX2gKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDFkYTg3NzguLmI0YTJmZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDA5LTEyLTAyICBZdXN1a2UgU2F0byAgPHl1c3VrZXNAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNhbml0aXplIHdlYiBm
b250cyB1c2luZyB0aGUgT1RTIGxpYnJhcnkgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTEwNgorCisgICAgICAgICogREVQUzogQWRkZWQgZGVwZW5k
ZW5jeSB0byB0aGUgT3BlblR5cGUgc2FuaXRpemVyIGxpYnJhcnkuCisgICAgICAgICogZmVhdHVy
ZXMuZ3lwaTogQWRkZWQgRU5BQkxFX09QRU5UWVBFX1NBTklUSVpFUj0xLgorCiAyMDA5LTEyLTAy
ICBFdmFuIFN0YWRlICA8ZXN0YWRlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vREVQUyBiL1dlYktp
dC9jaHJvbWl1bS9ERVBTCmluZGV4IDcwZGM2ZWYuLjA3ZTM4NWIgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9ERVBTCisrKyBiL1dlYktpdC9jaHJvbWl1bS9ERVBTCkBAIC00MSw2ICs0MSw3
IEBAIHZhcnMgPSB7CiAgICdneXBfcmV2JzogJzc1MScsCiAgICdpY3VfcmV2JzogJzMxNzI0JywK
ICAgJ29wZW52Y2RpZmZfcmV2JzogJzI4JywKKyAgJ290c19yZXYnOiAnMTknLAogICAnc2tpYV9y
ZXYnOiAnNDI0JywKICAgJ3Y4X3Jldic6ICczMjc2JywKIApAQCAtMTE4LDYgKzExOSw5IEBAIGRl
cHMgPSB7CiAgICd0aGlyZF9wYXJ0eS9ucGFwaSc6CiAgICAgVmFyKCdjaHJvbWl1bV9zdm4nKSsn
L3RoaXJkX3BhcnR5L25wYXBpQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKIAorICAndGhpcmRfcGFy
dHkvb3RzJzoKKyAgICAnaHR0cDovL290cy5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtAJytWYXIo
J290c19yZXYnKSwKKwogICAndGhpcmRfcGFydHkvc3FsaXRlJzoKICAgICBWYXIoJ2Nocm9taXVt
X3N2bicpKycvdGhpcmRfcGFydHkvc3FsaXRlQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQppbmRleCAzYzUzZjcxLi4xNGJlMWEyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQpAQCAtNTAsNiArNTAsNyBAQAogICAgICAgICAnRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURT
PTAnLAogICAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICAgJ0VOQUJMRV9O
T1RJRklDQVRJT05TPTEnLAorICAgICAgICAnRU5BQkxFX09QRU5UWVBFX1NBTklUSVpFUj0xJywK
ICAgICAgICAgJ0VOQUJMRV9PUklFTlRBVElPTl9FVkVOVFM9MCcsCiAgICAgICAgICdFTkFCTEVf
WFNMVD0xJywKICAgICAgICAgJ0VOQUJMRV9YUEFUSD0xJywK
</data>

          </attachment>
      

    </bug>

</bugzilla>