<?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>40275</bug_id>
          
          <creation_ts>2010-06-07 18:55:37 -0700</creation_ts>
          <short_desc>[BREWMP] Port graphics backend</short_desc>
          <delta_ts>2012-07-26 05:20:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33564</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beergun</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>joybro201</cc>
    
    <cc>xhiloh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235085</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-06-07 18:55:37 -0700</bug_when>
    <thetext>Use skia as Brew MP&apos;s graphics backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270784</commentid>
    <comment_count>1</comment_count>
      <attachid>65777</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-08-27 15:47:23 -0700</bug_when>
    <thetext>Created attachment 65777
FontCustomPlatformData

Reuse chromium&apos;s FontCustomPlatformData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270787</commentid>
    <comment_count>2</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-08-27 15:55:40 -0700</bug_when>
    <thetext>CC&apos;ing David Levin as it touches chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274783</commentid>
    <comment_count>3</comment_count>
      <attachid>65777</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-06 14:32:40 -0700</bug_when>
    <thetext>Comment on attachment 65777
FontCustomPlatformData

I will submit patches for WebKit Brew MP after bug 39672 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279269</commentid>
    <comment_count>4</comment_count>
      <attachid>67622</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-14 17:34:58 -0700</bug_when>
    <thetext>Created attachment 67622
FontCustomPlatformData

Add PLATFORM(BREWMP) guard to reuse the OS(LINUX) code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279272</commentid>
    <comment_count>5</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-14 17:35:53 -0700</bug_when>
    <thetext>CC&apos;ing James here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279313</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-09-14 18:52:56 -0700</bug_when>
    <thetext>Since Brew MP has no builders on build.webkit.org, what&apos;s the plan if changes to this file break that port?

Also, what OS setting does Brew MP set?  I don&apos;t know anything about it as a platform.  Maybe it&apos;s simpler for Brew to just set OS(LINUX)?  It&apos;s kind of weird to mix up OS() and PLATFORM() #ifdefs in a single expression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279324</commentid>
    <comment_count>7</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-14 19:05:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Since Brew MP has no builders on build.webkit.org, what&apos;s the plan if changes to this file break that port?

Brew MP uses waf. I am upstreaming the build system in bug 44645. Until we have a buildbot, I will fix the build manually :(.

&gt; Also, what OS setting does Brew MP set?  I don&apos;t know anything about it as a platform.  Maybe it&apos;s simpler for Brew to just set OS(LINUX)?  It&apos;s kind of weird to mix up OS() and PLATFORM() #ifdefs in a single expression.

A Brew MP application is written only with Brew MP API and C standard functions. Underlying OS is not exposed, so we don&apos;t know the operating system where Brew MP runs. Sadly, there is no way but to add PLATFORM(BREWMP) guard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281849</commentid>
    <comment_count>8</comment_count>
      <attachid>68144</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-20 15:20:57 -0700</bug_when>
    <thetext>Created attachment 68144
Font

Port Font to Brew MP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281865</commentid>
    <comment_count>9</comment_count>
      <attachid>68149</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-20 15:40:58 -0700</bug_when>
    <thetext>Created attachment 68149
Font

Fix COMPILE_ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281959</commentid>
    <comment_count>10</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-20 17:42:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Since Brew MP has no builders on build.webkit.org, what&apos;s the plan if changes to this file break that port?
&gt; 
&gt; Also, what OS setting does Brew MP set?  I don&apos;t know anything about it as a platform.  Maybe it&apos;s simpler for Brew to just set OS(LINUX)?  It&apos;s kind of weird to mix up OS() and PLATFORM() #ifdefs in a single expression.

Another way to clean up the code is to split OS(WINDOWS) and OS(LINUX) into separate files and move OS(WINDOWS) part to platform/graphics/chromium and leave OS(LINUX) part in platform/graphics/skia without guards. 

I think OS(WINDOWS) part of FontCustomPlatformData.cpp/h is still Chromium-specific while OS(LINUX) part depends only on skia.

After this cleanup, Brew MP can use FontCustomPlatformData in platform/graphics/skia without modification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296285</commentid>
    <comment_count>11</comment_count>
      <attachid>71186</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-19 11:02:13 -0700</bug_when>
    <thetext>Created attachment 71186
FontCustomPlatformData

Update the patch because OS(FREEBSD) guard was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296509</commentid>
    <comment_count>12</comment_count>
      <attachid>71219</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-19 16:22:22 -0700</bug_when>
    <thetext>Created attachment 71219
FontPlatformData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296558</commentid>
    <comment_count>13</comment_count>
      <attachid>71232</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-19 17:41:13 -0700</bug_when>
    <thetext>Created attachment 71232
FontCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296560</commentid>
    <comment_count>14</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-19 17:48:49 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=71232) [details]
&gt; FontCache

Except for FontCache::getFontDataForCharacters, all other methods are still the same as Chromium Linux.  If you think it is better to share the code with PLATFORM(CHROMIUM) guards in FontCache::getFontDataForCharacters, I will submit an alternative patch in bug 39672.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297804</commentid>
    <comment_count>15</comment_count>
      <attachid>71186</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-21 20:20:41 -0700</bug_when>
    <thetext>Comment on attachment 71186
FontCustomPlatformData

It seems like these files only handle two cases - windows (in which case they use GDI) and everything else (originally just linux, but later freebsd and now brewmp).  Would it be useful to define another macro for the using-Skia-but-not-GDI case so we can stick the OS(LINUX) || OS(FREEBSD) || PLATFORM(BREWMP) logic all in one place?

Kwang, do you think such a macro would be useful in other files in addition to this pair?  If so we should consider adding it, but if it&apos;s just for these files then I think this way is fine.

R=me, request commit-queue again if you want to land with these macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298944</commentid>
    <comment_count>16</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-25 10:19:37 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 71186 [details])
&gt; It seems like these files only handle two cases - windows (in which case they use GDI) and everything else (originally just linux, but later freebsd and now brewmp).  Would it be useful to define another macro for the using-Skia-but-not-GDI case so we can stick the OS(LINUX) || OS(FREEBSD) || PLATFORM(BREWMP) logic all in one place?
&gt; 
&gt; Kwang, do you think such a macro would be useful in other files in addition to this pair?  If so we should consider adding it, but if it&apos;s just for these files then I think this way is fine.
&gt; 
&gt; R=me, request commit-queue again if you want to land with these macros.

Currently, only there files have OS(LINUX) || OS(FREEBSD) || PLATFORM(BREWMP) check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300358</commentid>
    <comment_count>17</comment_count>
      <attachid>71186</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-27 10:48:50 -0700</bug_when>
    <thetext>Comment on attachment 71186
FontCustomPlatformData

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300373</commentid>
    <comment_count>18</comment_count>
      <attachid>71186</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-27 11:05:31 -0700</bug_when>
    <thetext>Comment on attachment 71186
FontCustomPlatformData

Clearing flags on attachment: 71186

Committed r70675: &lt;http://trac.webkit.org/changeset/70675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326542</commentid>
    <comment_count>19</comment_count>
      <attachid>68149</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:33:33 -0800</bug_when>
    <thetext>Comment on attachment 68149
Font

Is there anything that is specific to BREW? If not you should really share the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326543</commentid>
    <comment_count>20</comment_count>
      <attachid>68149</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:33:52 -0800</bug_when>
    <thetext>Comment on attachment 68149
Font

Is there anything that is specific to BREW? If not you should really share the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326544</commentid>
    <comment_count>21</comment_count>
      <attachid>68149</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:34:17 -0800</bug_when>
    <thetext>Comment on attachment 68149
Font

Is there anything that is specific to BREW? If not you should really share the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348083</commentid>
    <comment_count>22</comment_count>
      <attachid>68149</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 02:14:48 -0800</bug_when>
    <thetext>Comment on attachment 68149
Font

I agree to Holger. Looks like you should share the code than copying it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348084</commentid>
    <comment_count>23</comment_count>
      <attachid>71219</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 02:15:07 -0800</bug_when>
    <thetext>Comment on attachment 71219
FontPlatformData

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348085</commentid>
    <comment_count>24</comment_count>
      <attachid>71232</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 02:15:29 -0800</bug_when>
    <thetext>Comment on attachment 71232
FontCache

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679186</commentid>
    <comment_count>25</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-26 05:20:09 -0700</bug_when>
    <thetext>Brew MP port is no longer maintained.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65777</attachid>
            <date>2010-08-27 15:47:23 -0700</date>
            <delta_ts>2010-09-14 17:34:58 -0700</delta_ts>
            <desc>FontCustomPlatformData</desc>
            <filename>FontCustomPlatformData.patch</filename>
            <type>text/plain</type>
            <size>24564</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjI2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDgtMjcgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgUmV1c2UgY2hyb21pdW0n
cyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIGNvZGUuCisgICAgICAgIE1vdmUgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS4qIHRvIHNraWEgZGlyZWN0b3J5IGFuZCBhZGQgUExBVEZPUk0oQlJFV01QKSBn
dWFyZHMuCisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVVbmlxdWVGb250TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVGb250U3RyZWFtOjpSZW1vdGVGb250U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUZvbnRTdHJlYW06On5SZW1vdGVGb250U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUZvbnRTdHJlYW06OnJld2luZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVGb250U3RyZWFt
OjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorCiAyMDEwLTA4LTI3ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIFF0IGJ1aWxkLgpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDY2MjI4KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTIyMzksOCArMjIzOSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRMaW51eC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRQbGF0Zm9ybURhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtTWFjLm1tJywKQEAgLTIzOTksNiArMjM5Nyw4
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9CaXRtYXBJbWFnZVNpbmds
ZUZyYW1lU2tpYS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0Zsb2F0
UG9pbnRTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9GbG9h
dFJlY3RTa2lhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvR3JhZGllbnRTa2lhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCcsCkluZGV4
OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRGb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9DYWNoZWRGb250LmNwcAkocmV2aXNpb24gNjYyMjgpCisrKyBXZWJDb3JlL2xvYWRlci9D
YWNoZWRGb250LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZEZvbnQuaCIKIAotI2lmIFBMQVRGT1JNKENHKSB8
fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYm
IChPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkpKSB8fCBQTEFURk9STShIQUlLVSkgfHwgT1MoV0lO
Q0UpIHx8IFBMQVRGT1JNKEFORFJPSUQpCisjaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgKE9TKFdJTkRPV1Mp
IHx8IE9TKExJTlVYKSkpIHx8IFBMQVRGT1JNKEhBSUtVKSB8fCBPUyhXSU5DRSkgfHwgUExBVEZP
Uk0oQU5EUk9JRCkgfHwgUExBVEZPUk0oQlJFV01QKQogI2RlZmluZSBTVE9SRV9GT05UX0NVU1RP
TV9QTEFURk9STV9EQVRBCiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CShyZXZpc2lvbiA2NjIyOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENv
cHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oIgotCi0jaWYgT1MoV0lORE9XUykKLSNpbmNsdWRlICJCYXNlNjQuaCIKLSNpbmNsdWRlICJD
aHJvbWl1bUJyaWRnZS5oIgotI2luY2x1ZGUgIk9wZW5UeXBlVXRpbGl0aWVzLmgiCi0jZWxpZiBP
UyhMSU5VWCkKLSNpbmNsdWRlICJTa1N0cmVhbS5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJGb250
UGxhdGZvcm1EYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJP
cGVuVHlwZVNhbml0aXplci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi0jaWYgT1Mo
V0lORE9XUykKLSNpbmNsdWRlIDxvYmpiYXNlLmg+Ci0jZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRl
IDxjc3RyaW5nPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRm9udEN1c3RvbVBs
YXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQotewotI2lmIE9TKFdJTkRPV1Mp
Ci0gICAgaWYgKG1fZm9udFJlZmVyZW5jZSkKLSAgICAgICAgUmVtb3ZlRm9udE1lbVJlc291cmNl
RXgobV9mb250UmVmZXJlbmNlKTsKLSNlbGlmIE9TKExJTlVYKQotICAgIGlmIChtX2ZvbnRSZWZl
cmVuY2UpCi0gICAgICAgIG1fZm9udFJlZmVyZW5jZS0+dW5yZWYoKTsKLSNlbmRpZgotfQotCi1G
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEo
aW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRSZW5kZXJpbmdNb2RlIG1vZGUp
Ci17Ci0jaWYgT1MoV0lORE9XUykKLSAgICBBU1NFUlQobV9mb250UmVmZXJlbmNlKTsKLQotICAg
IExPR0ZPTlQgbG9nRm9udDsKLSAgICAvLyBtX25hbWUgY29tZXMgZnJvbSBjcmVhdGVVbmlxdWVG
b250TmFtZSwgd2hpY2gsIGluIHR1cm4sIGdldHMKLSAgICAvLyBpdCBmcm9tIGJhc2U2NC1lbmNv
ZGVkIHV1aWQgKDEyOC1iaXQpLiBTbywgbV9uYW1lCi0gICAgLy8gY2FuIG5ldmVyIGJlIGxvbmdl
ciB0aGFuIExGX0ZBQ0VTSVpFICgzMikuCi0gICAgaWYgKG1fbmFtZS5sZW5ndGgoKSArIDEgPj0g
TEZfRkFDRVNJWkUpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBGb250UGxhdGZvcm1EYXRhKCk7Ci0gICAgfQotICAgIG1lbWNweShsb2dGb250LmxmRmFj
ZU5hbWUsIG1fbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLAotICAgICAgICAg
ICBzaXplb2YobG9nRm9udC5sZkZhY2VOYW1lWzBdKSAqICgxICsgbV9uYW1lLmxlbmd0aCgpKSk7
Ci0KLSAgICAvLyBGSVhNRTogYWxtb3N0IGlkZW50aWNhbCB0byBGaWxsTG9nRm9udCBpbiBGb250
Q2FjaGVXaW4uY3BwLgotICAgIC8vIE5lZWQgdG8gcmVmYWN0b3IuIAotICAgIGxvZ0ZvbnQubGZI
ZWlnaHQgPSAtc2l6ZTsKLSAgICBsb2dGb250LmxmV2lkdGggPSAwOwotICAgIGxvZ0ZvbnQubGZF
c2NhcGVtZW50ID0gMDsKLSAgICBsb2dGb250LmxmT3JpZW50YXRpb24gPSAwOwotICAgIGxvZ0Zv
bnQubGZVbmRlcmxpbmUgPSBmYWxzZTsKLSAgICBsb2dGb250LmxmU3RyaWtlT3V0ID0gZmFsc2U7
Ci0gICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7Ci0gICAgbG9nRm9udC5s
Zk91dFByZWNpc2lvbiA9IE9VVF9UVF9PTkxZX1BSRUNJUzsKLSAgICBsb2dGb250LmxmUXVhbGl0
eSA9IENocm9taXVtQnJpZGdlOjpsYXlvdXRUZXN0TW9kZSgpID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgIE5PTkFOVElBTElBU0VEX1FVQUxJVFkgOgotICAgICAgICAgICAgICAgICAgICAgICAg
REVGQVVMVF9RVUFMSVRZOyAvLyBIb25vciB1c2VyJ3MgZGVza3RvcCBzZXR0aW5ncy4KLSAgICBs
b2dGb250LmxmUGl0Y2hBbmRGYW1pbHkgPSBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkU7Ci0g
ICAgbG9nRm9udC5sZkl0YWxpYyA9IGl0YWxpYzsKLSAgICBsb2dGb250LmxmV2VpZ2h0ID0gYm9s
ZCA/IDcwMCA6IDQwMDsKLQotICAgIEhGT05UIGhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KCZs
b2dGb250KTsKLSAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShoZm9udCwgc2l6ZSk7Ci0jZWxp
ZiBPUyhMSU5VWCkKLSAgICBBU1NFUlQobV9mb250UmVmZXJlbmNlKTsKLSAgICByZXR1cm4gRm9u
dFBsYXRmb3JtRGF0YShtX2ZvbnRSZWZlcmVuY2UsICIiLCBzaXplLCBib2xkICYmICFtX2ZvbnRS
ZWZlcmVuY2UtPmlzQm9sZCgpLCBpdGFsaWMgJiYgIW1fZm9udFJlZmVyZW5jZS0+aXNJdGFsaWMo
KSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEZvbnRQbGF0Zm9y
bURhdGEoKTsKLSNlbmRpZgotfQotCi0jaWYgT1MoV0lORE9XUykKLS8vIENyZWF0ZXMgYSB1bmlx
dWUgYW5kIHVucHJlZGljdGFibGUgZm9udCBuYW1lLCBpbiBvcmRlciB0byBhdm9pZCBjb2xsaXNp
b25zIGFuZCB0bwotLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KLXN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKQotewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVpZChzaXpl
b2YoR1VJRCkpOwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQqPihmb250
VXVpZC5kYXRhKCkpKTsKLQotICAgIFZlY3RvcjxjaGFyPiBmb250TmFtZVZlY3RvcjsKLSAgICBi
YXNlNjRFbmNvZGUoZm9udFV1aWQsIGZvbnROYW1lVmVjdG9yKTsKLSAgICBBU1NFUlQoZm9udE5h
bWVWZWN0b3Iuc2l6ZSgpIDwgTEZfRkFDRVNJWkUpOwotICAgIHJldHVybiBTdHJpbmcoZm9udE5h
bWVWZWN0b3IuZGF0YSgpLCBmb250TmFtZVZlY3Rvci5zaXplKCkpOwotfQotI2VuZGlmCi0KLSNp
ZiBPUyhMSU5VWCkKLWNsYXNzIFJlbW90ZUZvbnRTdHJlYW0gOiBwdWJsaWMgU2tTdHJlYW0gewot
cHVibGljOgotICAgIGV4cGxpY2l0IFJlbW90ZUZvbnRTdHJlYW0oUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgICAgICwgbV9v
ZmZzZXQoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+UmVtb3RlRm9udFN0cmVhbSgp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCByZXdpbmQoKQotICAgIHsKLSAgICAg
ICAgbV9vZmZzZXQgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHNpemVfdCByZWFkKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAg
ICBpZiAoIWJ1ZmZlciAmJiAhc2l6ZSkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyByZXF1ZXN0
IGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJlYW0uCi0gICAgICAgICAgICByZXR1cm4gbV9idWZm
ZXItPnNpemUoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAg
ICAgLy8gVGhpcyBpcyBhIHJlcXVlc3QgdG8gc2tpcCBieXRlcy4gVGhpcyBvcGVyYXRpb24gaXMg
bm90IHN1cHBvcnRlZC4KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAg
IC8vIFRoaXMgaXMgYSByZXF1ZXN0IHRvIHJlYWQgYnl0ZXMuCi0gICAgICAgIGlmICghbV9idWZm
ZXItPmRhdGEoKSB8fCAhbV9idWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICBzaXplX3QgbGVmdCA9IG1fYnVmZmVyLT5zaXplKCkgLSBtX29mZnNldDsKLSAgICAg
ICAgc2l6ZV90IHRvUmVhZCA9IChsZWZ0ID4gc2l6ZSkgPyBzaXplIDogbGVmdDsKLSAgICAgICAg
c3RkOjptZW1jcHkoYnVmZmVyLCBtX2J1ZmZlci0+ZGF0YSgpICsgbV9vZmZzZXQsIHRvUmVhZCk7
Ci0gICAgICAgIG1fb2Zmc2V0ICs9IHRvUmVhZDsKLSAgICAgICAgcmV0dXJuIHRvUmVhZDsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Ci0gICAg
c2l6ZV90IG1fb2Zmc2V0OwotfTsKLSNlbmRpZgotCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQotewotICAg
IEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwotCi0jaWYgRU5BQkxFKE9QRU5UWVBFX1NBTklU
SVpFUikKLSAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIoYnVmZmVyKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGl6ZXIuc2FuaXRpemUoKTsK
LSAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7IC8vIHZhbGlkYXRp
b24gZmFpbGVkLgotICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZlci5nZXQoKTsKLSNlbmRpZgot
Ci0jaWYgT1MoV0lORE9XUykKLSAgICAvLyBJbnRyb2R1Y2UgdGhlIGZvbnQgdG8gR0RJLiBBZGRG
b250TWVtUmVzb3VyY2VFeCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUsIGJlY2F1c2UgaXQgd2ls
bCBwb2xsdXRlIHRoZSBwcm9jZXNzJ3MKLSAgICAvLyBmb250IG5hbWVzcGFjZSAoV2luZG93cyBo
YXMgbm8gQVBJIGZvciBjcmVhdGluZyBhbiBIRk9OVCBmcm9tIGRhdGEgd2l0aG91dCBleHBvc2lu
ZyB0aGUgZm9udCB0byB0aGUKLSAgICAvLyBlbnRpcmUgcHJvY2VzcyBmaXJzdCkuCi0gICAgU3Ry
aW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKLSAgICBIQU5ETEUgZm9udFJl
ZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKLSAgICBp
ZiAoIWZvbnRSZWZlcmVuY2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFtZSk7Ci0jZWxpZiBPUyhM
SU5VWCkKLSAgICBSZW1vdGVGb250U3RyZWFtKiBzdHJlYW0gPSBuZXcgUmVtb3RlRm9udFN0cmVh
bShidWZmZXIpOwotICAgIFNrVHlwZWZhY2UqIHR5cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRl
RnJvbVN0cmVhbShzdHJlYW0pOwotICAgIGlmICghdHlwZWZhY2UpCi0gICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSh0eXBlZmFjZSk7Ci0jZWxz
ZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotYm9v
bCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZv
cm1hdCkKLXsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAidHJ1ZXR5cGUi
KSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmb3JtYXQsICJvcGVudHlwZSIpCi0jaWYgRU5BQkxFKE9Q
RU5UWVBFX1NBTklUSVpFUikKLSAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAi
d29mZiIpCi0jZW5kaWYKLSAgICA7Ci19Ci0KLX0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CShyZXZpc2lvbiA2NjIyOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqIENvcHly
aWdodCAoYykgMjAwNywgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEZvbnRDdXN0b21QbGF0Zm9ybURhdGFfaAotI2RlZmluZSBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhX2gKLQotI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotI2lmIE9TKFdJ
TkRPV1MpCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+
Ci0jZWxpZiBPUyhMSU5VWCkKLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCi0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOwotCi1zdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA6IE5vbmNvcHlhYmxlIHsK
LSNpZiBPUyhXSU5ET1dTKQotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRS
ZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgOiBtX2ZvbnRSZWZlcmVuY2Uo
Zm9udFJlZmVyZW5jZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICB7fQotI2VsaWYgT1Mo
TElOVVgpCi0gICAgZXhwbGljaXQgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTa1R5cGVmYWNlKiB0
eXBlZmFjZSkKLSAgICAgICAgOiBtX2ZvbnRSZWZlcmVuY2UodHlwZWZhY2UpCi0gICAge30KLSNl
bmRpZgotCi0gICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKTsKLQotICAgIEZvbnRQbGF0Zm9y
bURhdGEgZm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlcmluZ01vZGUg
PSBOb3JtYWxSZW5kZXJpbmdNb2RlKTsKLQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRm9ybWF0
KGNvbnN0IFN0cmluZyYpOwotCi0jaWYgT1MoV0lORE9XUykKLSAgICBIQU5ETEUgbV9mb250UmVm
ZXJlbmNlOwotICAgIFN0cmluZyBtX25hbWU7Ci0jZWxpZiBPUyhMSU5VWCkKLSAgICBTa1R5cGVm
YWNlKiBtX2ZvbnRSZWZlcmVuY2U7Ci0jZW5kaWYKLX07Ci0KLUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7Ci19Ci0KLSNl
bmRpZiAvLyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDcsIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIEluYy4KKyAqIAorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorCisjaWYgT1MoV0lORE9XUykKKyNp
bmNsdWRlICJCYXNlNjQuaCIKKyNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgorI2luY2x1ZGUg
Ik9wZW5UeXBlVXRpbGl0aWVzLmgiCisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJFV01Q
KQorI2luY2x1ZGUgIlNrU3RyZWFtLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIkZvbnRQbGF0Zm9y
bURhdGEuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIk9wZW5UeXBl
U2FuaXRpemVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpZiBPUyhXSU5ET1dT
KQorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNlbGlmIE9TKExJTlVYKSB8fCBQTEFURk9STShCUkVX
TVApCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6On5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkKK3sKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIGlmIChtX2ZvbnRSZWZlcmVuY2UpCisgICAgICAgIFJlbW92ZUZv
bnRNZW1SZXNvdXJjZUV4KG1fZm9udFJlZmVyZW5jZSk7CisjZWxpZiBPUyhMSU5VWCkgfHwgUExB
VEZPUk0oQlJFV01QKQorICAgIGlmIChtX2ZvbnRSZWZlcmVuY2UpCisgICAgICAgIG1fZm9udFJl
ZmVyZW5jZS0+dW5yZWYoKTsKKyNlbmRpZgorfQorCitGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMsIEZvbnRSZW5kZXJpbmdNb2RlIG1vZGUpCit7CisjaWYgT1MoV0lORE9XUykKKyAg
ICBBU1NFUlQobV9mb250UmVmZXJlbmNlKTsKKworICAgIExPR0ZPTlQgbG9nRm9udDsKKyAgICAv
LyBtX25hbWUgY29tZXMgZnJvbSBjcmVhdGVVbmlxdWVGb250TmFtZSwgd2hpY2gsIGluIHR1cm4s
IGdldHMKKyAgICAvLyBpdCBmcm9tIGJhc2U2NC1lbmNvZGVkIHV1aWQgKDEyOC1iaXQpLiBTbywg
bV9uYW1lCisgICAgLy8gY2FuIG5ldmVyIGJlIGxvbmdlciB0aGFuIExGX0ZBQ0VTSVpFICgzMiku
CisgICAgaWYgKG1fbmFtZS5sZW5ndGgoKSArIDEgPj0gTEZfRkFDRVNJWkUpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKCk7
CisgICAgfQorICAgIG1lbWNweShsb2dGb250LmxmRmFjZU5hbWUsIG1fbmFtZS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLAorICAgICAgICAgICBzaXplb2YobG9nRm9udC5sZkZhY2VO
YW1lWzBdKSAqICgxICsgbV9uYW1lLmxlbmd0aCgpKSk7CisKKyAgICAvLyBGSVhNRTogYWxtb3N0
IGlkZW50aWNhbCB0byBGaWxsTG9nRm9udCBpbiBGb250Q2FjaGVXaW4uY3BwLgorICAgIC8vIE5l
ZWQgdG8gcmVmYWN0b3IuIAorICAgIGxvZ0ZvbnQubGZIZWlnaHQgPSAtc2l6ZTsKKyAgICBsb2dG
b250LmxmV2lkdGggPSAwOworICAgIGxvZ0ZvbnQubGZFc2NhcGVtZW50ID0gMDsKKyAgICBsb2dG
b250LmxmT3JpZW50YXRpb24gPSAwOworICAgIGxvZ0ZvbnQubGZVbmRlcmxpbmUgPSBmYWxzZTsK
KyAgICBsb2dGb250LmxmU3RyaWtlT3V0ID0gZmFsc2U7CisgICAgbG9nRm9udC5sZkNoYXJTZXQg
PSBERUZBVUxUX0NIQVJTRVQ7CisgICAgbG9nRm9udC5sZk91dFByZWNpc2lvbiA9IE9VVF9UVF9P
TkxZX1BSRUNJUzsKKyAgICBsb2dGb250LmxmUXVhbGl0eSA9IENocm9taXVtQnJpZGdlOjpsYXlv
dXRUZXN0TW9kZSgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgIE5PTkFOVElBTElBU0VEX1FV
QUxJVFkgOgorICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9RVUFMSVRZOyAvLyBIb25v
ciB1c2VyJ3MgZGVza3RvcCBzZXR0aW5ncy4KKyAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkg
PSBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkU7CisgICAgbG9nRm9udC5sZkl0YWxpYyA9IGl0
YWxpYzsKKyAgICBsb2dGb250LmxmV2VpZ2h0ID0gYm9sZCA/IDcwMCA6IDQwMDsKKworICAgIEhG
T05UIGhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KCZsb2dGb250KTsKKyAgICByZXR1cm4gRm9u
dFBsYXRmb3JtRGF0YShoZm9udCwgc2l6ZSk7CisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0o
QlJFV01QKQorICAgIEFTU0VSVChtX2ZvbnRSZWZlcmVuY2UpOworICAgIHJldHVybiBGb250UGxh
dGZvcm1EYXRhKG1fZm9udFJlZmVyZW5jZSwgIiIsIHNpemUsIGJvbGQgJiYgIW1fZm9udFJlZmVy
ZW5jZS0+aXNCb2xkKCksIGl0YWxpYyAmJiAhbV9mb250UmVmZXJlbmNlLT5pc0l0YWxpYygpKTsK
KyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0
YSgpOworI2VuZGlmCit9CisKKyNpZiBPUyhXSU5ET1dTKQorLy8gQ3JlYXRlcyBhIHVuaXF1ZSBh
bmQgdW5wcmVkaWN0YWJsZSBmb250IG5hbWUsIGluIG9yZGVyIHRvIGF2b2lkIGNvbGxpc2lvbnMg
YW5kIHRvCisvLyBub3QgYWxsb3cgYWNjZXNzIGZyb20gQ1NTLgorc3RhdGljIFN0cmluZyBjcmVh
dGVVbmlxdWVGb250TmFtZSgpCit7CisgICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNpemVvZihH
VUlEKSk7CisgICAgQ29DcmVhdGVHdWlkKHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZvbnRVdWlk
LmRhdGEoKSkpOworCisgICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOworICAgIGJhc2U2
NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOworICAgIEFTU0VSVChmb250TmFtZVZl
Y3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7CisgICAgcmV0dXJuIFN0cmluZyhmb250TmFtZVZl
Y3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7Cit9CisjZW5kaWYKKworI2lmIE9T
KExJTlVYKSB8fCBQTEFURk9STShCUkVXTVApCitjbGFzcyBSZW1vdGVGb250U3RyZWFtIDogcHVi
bGljIFNrU3RyZWFtIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVGb250U3RyZWFtKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
KQorICAgICAgICAsIG1fb2Zmc2V0KDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflJl
bW90ZUZvbnRTdHJlYW0oKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcmV3aW5k
KCkKKyAgICB7CisgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgdmlydHVhbCBzaXplX3QgcmVhZCh2b2lkKiBidWZmZXIsIHNpemVfdCBzaXpl
KQorICAgIHsKKyAgICAgICAgaWYgKCFidWZmZXIgJiYgIXNpemUpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgcmVxdWVzdCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyZWFtLgorICAgICAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyLT5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFidWZm
ZXIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZXF1ZXN0IHRvIHNraXAgYnl0ZXMuIFRo
aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorICAgICAgICAvLyBUaGlzIGlzIGEgcmVxdWVzdCB0byByZWFkIGJ5dGVzLgorICAg
ICAgICBpZiAoIW1fYnVmZmVyLT5kYXRhKCkgfHwgIW1fYnVmZmVyLT5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgc2l6ZV90IGxlZnQgPSBtX2J1ZmZlci0+c2l6ZSgpIC0g
bV9vZmZzZXQ7CisgICAgICAgIHNpemVfdCB0b1JlYWQgPSAobGVmdCA+IHNpemUpID8gc2l6ZSA6
IGxlZnQ7CisgICAgICAgIHN0ZDo6bWVtY3B5KGJ1ZmZlciwgbV9idWZmZXItPmRhdGEoKSArIG1f
b2Zmc2V0LCB0b1JlYWQpOworICAgICAgICBtX29mZnNldCArPSB0b1JlYWQ7CisgICAgICAgIHJl
dHVybiB0b1JlYWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIHNpemVfdCBtX29mZnNldDsKK307CisjZW5kaWYKKworRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKK3sKKyAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKKworI2lmIEVOQUJM
RShPUEVOVFlQRV9TQU5JVElaRVIpCisgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRpemVyKGJ1
ZmZlcik7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0gc2FuaXRp
emVyLnNhbml0aXplKCk7CisgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCisgICAgICAgIHJldHVy
biAwOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIu
Z2V0KCk7CisjZW5kaWYKKworI2lmIE9TKFdJTkRPV1MpCisgICAgLy8gSW50cm9kdWNlIHRoZSBm
b250IHRvIEdESS4gQWRkRm9udE1lbVJlc291cmNlRXggc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJl
LCBiZWNhdXNlIGl0IHdpbGwgcG9sbHV0ZSB0aGUgcHJvY2VzcydzCisgICAgLy8gZm9udCBuYW1l
c3BhY2UgKFdpbmRvd3MgaGFzIG5vIEFQSSBmb3IgY3JlYXRpbmcgYW4gSEZPTlQgZnJvbSBkYXRh
IHdpdGhvdXQgZXhwb3NpbmcgdGhlIGZvbnQgdG8gdGhlCisgICAgLy8gZW50aXJlIHByb2Nlc3Mg
Zmlyc3QpLgorICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7Cisg
ICAgSEFORExFIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBm
b250TmFtZSk7CisgICAgaWYgKCFmb250UmVmZXJlbmNlKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udFJlZmVyZW5jZSwgZm9udE5h
bWUpOworI2VsaWYgT1MoTElOVVgpIHx8IFBMQVRGT1JNKEJSRVdNUCkKKyAgICBSZW1vdGVGb250
U3RyZWFtKiBzdHJlYW0gPSBuZXcgUmVtb3RlRm9udFN0cmVhbShidWZmZXIpOworICAgIFNrVHlw
ZWZhY2UqIHR5cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbVN0cmVhbShzdHJlYW0pOwor
ICAgIGlmICghdHlwZWZhY2UpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSh0eXBlZmFjZSk7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKK3sKKyAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAidHJ1ZXR5cGUiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShmb3JtYXQsICJvcGVudHlwZSIpCisjaWYgRU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikKKyAg
ICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAid29mZiIpCisjZW5kaWYKKyAgICA7
Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRDdXN0b21QbGF0Zm9ybURhdGFfaAorI2Rl
ZmluZSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhX2gKKworI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdN
b2RlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlIDx3aW5kb3dzLmg+CisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJFV01QKQor
I2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3N0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWFibGUgeworI2lmIE9TKFdJTkRPV1MpCisg
ICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShIQU5ETEUgZm9udFJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgICAgICA6IG1fZm9udFJlZmVyZW5jZShmb250UmVmZXJlbmNlKQorICAg
ICAgICAsIG1fbmFtZShuYW1lKQorICAgIHt9CisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0o
QlJFV01QKQorICAgIGV4cGxpY2l0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2tUeXBlZmFjZSog
dHlwZWZhY2UpCisgICAgICAgIDogbV9mb250UmVmZXJlbmNlKHR5cGVmYWNlKQorICAgIHt9Cisj
ZW5kaWYKKworICAgIH5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCk7CisKKyAgICBGb250UGxhdGZv
cm1EYXRhIGZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRSZW5kZXJpbmdNb2Rl
ID0gTm9ybWFsUmVuZGVyaW5nTW9kZSk7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAgSEFORExFIG1fZm9udFJl
ZmVyZW5jZTsKKyAgICBTdHJpbmcgbV9uYW1lOworI2VsaWYgT1MoTElOVVgpIHx8IFBMQVRGT1JN
KEJSRVdNUCkKKyAgICBTa1R5cGVmYWNlKiBtX2ZvbnRSZWZlcmVuY2U7CisjZW5kaWYKK307CisK
K0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKik7Cit9CisKKyNlbmRpZiAvLyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67622</attachid>
            <date>2010-09-14 17:34:58 -0700</date>
            <delta_ts>2010-10-19 11:02:13 -0700</delta_ts>
            <desc>FontCustomPlatformData</desc>
            <filename>FontCustomPlatformData.patch</filename>
            <type>text/plain</type>
            <size>4717</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDktMTQgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgQWRkIFBMQVRGT1JNKEJS
RVdNUCkgZ3VhcmQgdG8gc2tpYSdzIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEuCisKKyAgICAgICAg
KiBsb2FkZXIvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDdXN0
b21QbGF0Zm9ybURhdGE6On5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisKIDIwMTAtMDktMTQg
IEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAJKHJldmlzaW9u
IDY3NTE4KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRG
b250LmgiCiAKLSNpZiBQTEFURk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdU
SykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiAoT1MoV0lORE9XUykgfHwgT1MoTElOVVgpKSkg
fHwgUExBVEZPUk0oSEFJS1UpIHx8IE9TKFdJTkNFKSB8fCBQTEFURk9STShBTkRST0lEKQorI2lm
IFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZP
Uk0oQ0hST01JVU0pICYmIChPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkpKSB8fCBQTEFURk9STShI
QUlLVSkgfHwgT1MoV0lOQ0UpIHx8IFBMQVRGT1JNKEFORFJPSUQpIHx8IFBMQVRGT1JNKEJSRVdN
UCkKICNkZWZpbmUgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQogI2VuZGlmCiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHJldmlzaW9uIDY3NTE4KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBDb21wdXRl
ciwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJ
bmMuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzYsNyArMzcsNyBA
QAogI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCiAjaW5j
bHVkZSAiT3BlblR5cGVVdGlsaXRpZXMuaCIKLSNlbGlmIE9TKExJTlVYKQorI2VsaWYgT1MoTElO
VVgpIHx8IFBMQVRGT1JNKEJSRVdNUCkKICNpbmNsdWRlICJTa1N0cmVhbS5oIgogI2VuZGlmCiAK
QEAgLTQ3LDcgKzQ4LDcgQEAKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8b2JqYmFzZS5o
PgotI2VsaWYgT1MoTElOVVgpCisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJFV01QKQog
I2luY2x1ZGUgPGNzdHJpbmc+CiAjZW5kaWYKIApAQCAtNTgsNyArNTksNyBAQCBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmCiAjaWYgT1MoV0lORE9XUykKICAgICBpZiAo
bV9mb250UmVmZXJlbmNlKQogICAgICAgICBSZW1vdmVGb250TWVtUmVzb3VyY2VFeChtX2ZvbnRS
ZWZlcmVuY2UpOwotI2VsaWYgT1MoTElOVVgpCisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0o
QlJFV01QKQogICAgIGlmIChtX2ZvbnRSZWZlcmVuY2UpCiAgICAgICAgIG1fZm9udFJlZmVyZW5j
ZS0+dW5yZWYoKTsKICNlbmRpZgpAQCAtOTksNyArMTAwLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOgogCiAgICAgSEZPTlQgaGZvbnQgPSBDcmVhdGVGb250SW5k
aXJlY3QoJmxvZ0ZvbnQpOwogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGhmb250LCBzaXpl
KTsKLSNlbGlmIE9TKExJTlVYKQorI2VsaWYgT1MoTElOVVgpIHx8IFBMQVRGT1JNKEJSRVdNUCkK
ICAgICBBU1NFUlQobV9mb250UmVmZXJlbmNlKTsKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0
YShtX2ZvbnRSZWZlcmVuY2UsICIiLCBzaXplLCBib2xkICYmICFtX2ZvbnRSZWZlcmVuY2UtPmlz
Qm9sZCgpLCBpdGFsaWMgJiYgIW1fZm9udFJlZmVyZW5jZS0+aXNJdGFsaWMoKSk7CiAjZWxzZQpA
QCAtMTIzLDcgKzEyNCw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQog
fQogI2VuZGlmCiAKLSNpZiBPUyhMSU5VWCkKKyNpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJF
V01QKQogY2xhc3MgUmVtb3RlRm9udFN0cmVhbSA6IHB1YmxpYyBTa1N0cmVhbSB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUmVtb3RlRm9udFN0cmVhbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyKQpAQCAtMTg5LDcgKzE5MCw3IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b20KICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHJldHVybiBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250
TmFtZSk7Ci0jZWxpZiBPUyhMSU5VWCkKKyNlbGlmIE9TKExJTlVYKSB8fCBQTEFURk9STShCUkVX
TVApCiAgICAgUmVtb3RlRm9udFN0cmVhbSogc3RyZWFtID0gbmV3IFJlbW90ZUZvbnRTdHJlYW0o
YnVmZmVyKTsKICAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZy
b21TdHJlYW0oc3RyZWFtKTsKICAgICBpZiAoIXR5cGVmYWNlKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CShyZXZpc2lvbiA2NzUxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNp
ZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgotI2VsaWYgT1MoTElOVVgpCisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJF
V01QKQogI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKICNlbmRpZgogCkBAIC01NCw3ICs1NCw3IEBA
IHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWEKICAgICAgICAgOiBtX2Zv
bnRSZWZlcmVuY2UoZm9udFJlZmVyZW5jZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7
fQotI2VsaWYgT1MoTElOVVgpCisjZWxpZiBPUyhMSU5VWCkgfHwgUExBVEZPUk0oQlJFV01QKQog
ICAgIGV4cGxpY2l0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2tUeXBlZmFjZSogdHlwZWZhY2Up
CiAgICAgICAgIDogbV9mb250UmVmZXJlbmNlKHR5cGVmYWNlKQogICAgIHt9CkBAIC03MCw3ICs3
MCw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWEKICNpZiBPUyhX
SU5ET1dTKQogICAgIEhBTkRMRSBtX2ZvbnRSZWZlcmVuY2U7CiAgICAgU3RyaW5nIG1fbmFtZTsK
LSNlbGlmIE9TKExJTlVYKQorI2VsaWYgT1MoTElOVVgpIHx8IFBMQVRGT1JNKEJSRVdNUCkKICAg
ICBTa1R5cGVmYWNlKiBtX2ZvbnRSZWZlcmVuY2U7CiAjZW5kaWYKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68144</attachid>
            <date>2010-09-20 15:20:57 -0700</date>
            <delta_ts>2010-09-20 15:40:58 -0700</delta_ts>
            <desc>Font</desc>
            <filename>Font.patch</filename>
            <type>text/plain</type>
            <size>8629</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzg4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMjAgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgUG9ydCBGb250IHRvIEJy
ZXcgTVAuIFRoZSBjb2RlIGlzIGZyb20gQ2hyb21pdW0gTGludXggYW5kIEFuZHJvaWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRCcmV3LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0dXBGb3JUZXh0UGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhU
ZXh0KToKKwogMjAxMC0wOS0yMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYnJldy9Gb250QnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9icmV3L0ZvbnRCcmV3LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYnJldy9Gb250QnJldy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKyAqIENvcHlyaWdodCAyMDEwLCBDb21wYW55IDEwMCwgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRm9udERhdGEuaCIKKyNpbmNsdWRlICJGb250RmFsbGJh
Y2tMaXN0LmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR3JhcGhpY3MuaCIKKyNpbmNsdWRlICJTaW1wbGVG
b250RGF0YS5oIgorCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJTa0xheWVyRHJh
d0xvb3Blci5oIgorI2luY2x1ZGUgIlNrUGFpbnQuaCIKKyNpbmNsdWRlICJTa1RlbXBsYXRlcy5o
IgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJTa1V0aWxzLmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29t
cGxleFRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGb250OjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgIGludCBm
cm9tLCBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihHbHlwaEJ1ZmZl
ckdseXBoKSA9PSBzaXplb2YodWludDE2X3QpKTsKKworICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocyA9IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKTsKKyAgICBTa1NjYWxhciB4ID0g
U2tGbG9hdFRvU2NhbGFyKHBvaW50LngoKSk7CisgICAgU2tTY2FsYXIgeSA9IFNrRmxvYXRUb1Nj
YWxhcihwb2ludC55KCkpOworCisgICAgLy8gRklYTUU6IHRleHQgcmVuZGVyaW5nIHNwZWVkOgor
ICAgIC8vIEFuZHJvaWQgaGFzIGNvZGUgaW4gdGhlaXIgV2ViQ29yZSBmb3JrIHRvIHNwZWNpYWwg
Y2FzZSB3aGVuIHRoZQorICAgIC8vIEdseXBoQnVmZmVyIGhhcyBubyBhZHZhbmNlcyBvdGhlciB0
aGFuIHRoZSBkZWZhdWx0cy4gSW4gdGhhdCBjYXNlIHRoZQorICAgIC8vIHRleHQgZHJhd2luZyBj
YW4gcHJvY2VlZCBmYXN0ZXIuIEhvd2V2ZXIsIGl0J3MgdW5jbGVhciB3aGVuIHRob3NlCisgICAg
Ly8gcGF0Y2hlcyBtYXkgYmUgdXBzdHJlYW1lZCB0byBXZWJLaXQgc28gd2UgYWx3YXlzIHVzZSB0
aGUgc2xvd2VyIHBhdGgKKyAgICAvLyBoZXJlLgorICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2ID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7CisgICAgU2tBdXRvU1RNYWxsb2M8
MzIsIFNrUG9pbnQ+IHN0b3JhZ2UobnVtR2x5cGhzKTsKKyAgICBTa1BvaW50KiBwb3MgPSBzdG9y
YWdlLmdldCgpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgewor
ICAgICAgICBwb3NbaV0uc2V0KHgsIHkpOworICAgICAgICB4ICs9IFNrRmxvYXRUb1NjYWxhcihh
ZHZbaV0ud2lkdGgoKSk7CisgICAgICAgIHkgKz0gU2tGbG9hdFRvU2NhbGFyKGFkdltpXS5oZWln
aHQoKSk7CisgICAgfQorCisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y2FudmFzKCk7CisgICAgaW50IHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKKworICAgIC8vIFdlIGRyYXcgdGV4dCB1cCB0byB0d28g
dGltZXMgKG9uY2UgZm9yIGZpbGwsIG9uY2UgZm9yIHN0cm9rZSkuCisgICAgaWYgKHRleHRNb2Rl
ICYgY1RleHRGaWxsKSB7CisgICAgICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgICAgIGdjLT5wbGF0
Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKKyAgICAgICAgZm9u
dC0+cGxhdGZvcm1EYXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOworICAgICAgICBwYWludC5zZXRU
ZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5nKTsKKyAgICAgICAgcGFp
bnQuc2V0Q29sb3IoZ2MtPmZpbGxDb2xvcigpLnJnYigpKTsKKyAgICAgICAgY2FudmFzLT5kcmF3
UG9zVGV4dChnbHlwaHMsIG51bUdseXBocyA8PCAxLCBwb3MsIHBhaW50KTsKKyAgICB9CisKKyAg
ICBpZiAoKHRleHRNb2RlICYgY1RleHRTdHJva2UpCisgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNv
bnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZQorICAgICAgICAmJiBnYy0+cGxh
dGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVRoaWNrbmVzcygpID4gMCkgeworCisgICAgICAgIFNr
UGFpbnQgcGFpbnQ7CisgICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZv
clN0cm9raW5nKCZwYWludCwgMCwgMCk7CisgICAgICAgIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNl
dHVwUGFpbnQoJnBhaW50KTsKKyAgICAgICAgcGFpbnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6
OmtHbHlwaElEX1RleHRFbmNvZGluZyk7CisgICAgICAgIHBhaW50LnNldENvbG9yKGdjLT5zdHJv
a2VDb2xvcigpLnJnYigpKTsKKworICAgICAgICBpZiAodGV4dE1vZGUgJiBjVGV4dEZpbGwpIHsK
KyAgICAgICAgICAgIC8vIElmIHdlIGFsc28gZmlsbGVkLCB3ZSBkb24ndCB3YW50IHRvIGRyYXcg
c2hhZG93cyB0d2ljZS4KKyAgICAgICAgICAgIC8vIFNlZSBjb21tZW50IGluIEZvbnRDaHJvbWl1
bVdpbi5jcHA6OnBhaW50U2tpYVRleHQoKSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICAgICAg
cGFpbnQuc2V0TG9vcGVyKDApLT5zYWZlVW5yZWYoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNh
bnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBudW1HbHlwaHMgPDwgMSwgcG9zLCBwYWludCk7Cisg
ICAgfQorfQorCitGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBpbnQsIGlu
dCkgY29uc3QKK3sKKyAgICBTa1BhaW50IHBhaW50OworICAgIFNrU2NhbGFyIHdpZHRoOworICAg
IFNrUGFpbnQ6OkZvbnRNZXRyaWNzIG1ldHJpY3M7CisKKyAgICBwcmltYXJ5Rm9udCgpLT5wbGF0
Zm9ybURhdGEoKS5zZXR1cFBhaW50KCZwYWludCk7CisKKyAgICB3aWR0aCA9IHBhaW50Lm1lYXN1
cmVUZXh0KHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSA8PCAxKTsKKyAgICBTa1NjYWxh
ciBzcGFjaW5nID0gcGFpbnQuZ2V0Rm9udE1ldHJpY3MoJm1ldHJpY3MpOworCisgICAgcmV0dXJu
IEZsb2F0UmVjdChwb2ludC54KCksCisgICAgICAgICAgICAgICAgICAgICBwb2ludC55KCkgLSBm
bG9vcmYoU2tTY2FsYXJUb0Zsb2F0KC1tZXRyaWNzLmZBc2NlbnQpKSwKKyAgICAgICAgICAgICAg
ICAgICAgIHJvdW5kZihTa1NjYWxhclRvRmxvYXQod2lkdGgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgIHJvdW5kZihTa1NjYWxhclRvRmxvYXQoc3BhY2luZykpKTsKK30KKworc3RhdGljIHZvaWQg
c2V0dXBGb3JUZXh0UGFpbnRpbmcoU2tQYWludCogcGFpbnQsIFNrQ29sb3IgY29sb3IpCit7Cisg
ICAgcGFpbnQtPnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2Rpbmcp
OworICAgIHBhaW50LT5zZXRDb2xvcihjb2xvcik7Cit9CisKK3ZvaWQgRm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogZ2MsIFRleHRSdW4gY29uc3QmIHJ1biwgRmxvYXRQb2lu
dCBjb25zdCYgcG9pbnQsIGludCwgaW50KSBjb25zdAoreworICAgIGlmICghcnVuLmxlbmd0aCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBTa0NhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBpbnQgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250
ZXh0KCktPmdldFRleHREcmF3aW5nTW9kZSgpOworICAgIGJvb2wgZmlsbCA9IHRleHRNb2RlICYg
Y1RleHRGaWxsOworICAgIGJvb2wgc3Ryb2tlID0gKHRleHRNb2RlICYgY1RleHRTdHJva2UpCisg
ICAgICAgICAgICAgICAmJiBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkg
IT0gTm9TdHJva2UKKyAgICAgICAgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0
U3Ryb2tlVGhpY2tuZXNzKCkgPiAwOworCisgICAgaWYgKCFmaWxsICYmICFzdHJva2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgaWYgKGZpbGwpIHsKKyAgICAg
ICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwor
ICAgICAgICBzZXR1cEZvclRleHRQYWludGluZygmcGFpbnQsIGdjLT5maWxsQ29sb3IoKS5yZ2Io
KSk7CisgICAgfQorICAgIGlmIChzdHJva2UpIHsKKyAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4
dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tpbmcoJnBhaW50LCAwLCAwKTsKKyAgICAgICAgc2V0dXBG
b3JUZXh0UGFpbnRpbmcoJnBhaW50LCBnYy0+c3Ryb2tlQ29sb3IoKS5yZ2IoKSk7CisgICAgfQor
CisgICAgLy8gZ28gdG8gY2hhcnMsIGluc3RlYWQgb2YgZ2x5cGhzLCB3aGljaCB3YXMgc2V0IGJ5
IHNldHVwRm9yVGV4dCgpCisgICAgcGFpbnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtVVEYx
Nl9UZXh0RW5jb2RpbmcpOworCisgICAgY2FudmFzLT5kcmF3VGV4dChydW4uY2hhcmFjdGVycygp
LCBydW4ubGVuZ3RoKCkgPDwgMSwKKyAgICAgICAgICAgICAgICAgICAgIFNrRmxvYXRUb1NjYWxh
cihwb2ludC54KCkpLCBTa0Zsb2F0VG9TY2FsYXIocG9pbnQueSgpKSwKKyAgICAgICAgICAgICAg
ICAgICAgIHBhaW50KTsKK30KKworZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxs
YmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KikgY29uc3QKK3sKKyAgICBTa1BhaW50IHBhaW50Owor
CisgICAgcHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOwor
CisgICAgU2tTY2FsYXIgd2lkdGggPSBwYWludC5tZWFzdXJlVGV4dChydW4uY2hhcmFjdGVycygp
LCBydW4ubGVuZ3RoKCkgPDwgMSk7CisgICAgcmV0dXJuIFNrU2NhbGFyVG9GbG9hdCh3aWR0aCk7
Cit9CisKK2ludCBGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKK3sK
KyAgICBTa1BhaW50IHBhaW50OworICAgIGludCBjb3VudCA9IHJ1bi5sZW5ndGgoKTsKKyAgICBT
a0F1dG9TVE1hbGxvYzw2NCwgU2tTY2FsYXI+IHN0b3JhZ2UoY291bnQpOworICAgIFNrU2NhbGFy
KiB3aWR0aHMgPSBzdG9yYWdlLmdldCgpOworCisgICAgcHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1E
YXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOworCisgICAgY291bnQgPSBwYWludC5nZXRUZXh0V2lk
dGhzKHJ1bi5jaGFyYWN0ZXJzKCksIGNvdW50IDw8IDEsIHdpZHRocyk7CisKKyAgICBpZiAoY291
bnQgPiAwKSB7CisgICAgICAgIFNrU2NhbGFyIHBvcyA9IDA7CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHggPCBTa1NjYWxhclJvdW5k
KHBvcyArIFNrU2NhbGFySGFsZih3aWR0aHNbaV0pKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
aTsKKyAgICAgICAgICAgIHBvcyArPSB3aWR0aHNbaV07CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIGNvdW50OworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68149</attachid>
            <date>2010-09-20 15:40:58 -0700</date>
            <delta_ts>2011-02-09 02:14:48 -0800</delta_ts>
            <desc>Font</desc>
            <filename>Font.patch</filename>
            <type>text/plain</type>
            <size>8656</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzg4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMjAgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgUG9ydCBGb250IHRvIEJy
ZXcgTVAuIFRoZSBjb2RlIGlzIGZyb20gQ2hyb21pdW0gTGludXggYW5kIEFuZHJvaWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRCcmV3LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0dXBGb3JUZXh0UGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBs
ZXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhU
ZXh0KToKKwogMjAxMC0wOS0yMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYnJldy9Gb250QnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9icmV3L0ZvbnRCcmV3LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYnJldy9Gb250QnJldy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKyAqIENvcHlyaWdodCAyMDEwLCBDb21wYW55IDEwMCwgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRm9udERhdGEuaCIKKyNpbmNsdWRlICJGb250RmFsbGJh
Y2tMaXN0LmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR3JhcGhpY3MuaCIKKyNpbmNsdWRlICJTaW1wbGVG
b250RGF0YS5oIgorCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJTa0xheWVyRHJh
d0xvb3Blci5oIgorI2luY2x1ZGUgIlNrUGFpbnQuaCIKKyNpbmNsdWRlICJTa1RlbXBsYXRlcy5o
IgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJTa1V0aWxzLmgiCisKKyNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29t
cGxleFRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGb250OjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgIGludCBm
cm9tLCBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihHbHlwaEJ1ZmZl
ckdseXBoKSA9PSBzaXplb2YodWludDE2X3QpLCBDaGVja0dseXBoQnVmZmVyR2x5cGhTaXplKTsK
KworICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGdseXBoQnVmZmVyLmdseXBo
cyhmcm9tKTsKKyAgICBTa1NjYWxhciB4ID0gU2tGbG9hdFRvU2NhbGFyKHBvaW50LngoKSk7Cisg
ICAgU2tTY2FsYXIgeSA9IFNrRmxvYXRUb1NjYWxhcihwb2ludC55KCkpOworCisgICAgLy8gRklY
TUU6IHRleHQgcmVuZGVyaW5nIHNwZWVkOgorICAgIC8vIEFuZHJvaWQgaGFzIGNvZGUgaW4gdGhl
aXIgV2ViQ29yZSBmb3JrIHRvIHNwZWNpYWwgY2FzZSB3aGVuIHRoZQorICAgIC8vIEdseXBoQnVm
ZmVyIGhhcyBubyBhZHZhbmNlcyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0cy4gSW4gdGhhdCBjYXNl
IHRoZQorICAgIC8vIHRleHQgZHJhd2luZyBjYW4gcHJvY2VlZCBmYXN0ZXIuIEhvd2V2ZXIsIGl0
J3MgdW5jbGVhciB3aGVuIHRob3NlCisgICAgLy8gcGF0Y2hlcyBtYXkgYmUgdXBzdHJlYW1lZCB0
byBXZWJLaXQgc28gd2UgYWx3YXlzIHVzZSB0aGUgc2xvd2VyIHBhdGgKKyAgICAvLyBoZXJlLgor
ICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2ID0gZ2x5cGhCdWZmZXIuYWR2YW5jZXMo
ZnJvbSk7CisgICAgU2tBdXRvU1RNYWxsb2M8MzIsIFNrUG9pbnQ+IHN0b3JhZ2UobnVtR2x5cGhz
KTsKKyAgICBTa1BvaW50KiBwb3MgPSBzdG9yYWdlLmdldCgpOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgeworICAgICAgICBwb3NbaV0uc2V0KHgsIHkpOworICAg
ICAgICB4ICs9IFNrRmxvYXRUb1NjYWxhcihhZHZbaV0ud2lkdGgoKSk7CisgICAgICAgIHkgKz0g
U2tGbG9hdFRvU2NhbGFyKGFkdltpXS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgU2tDYW52YXMq
IGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgaW50IHRleHRN
b2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKKworICAg
IC8vIFdlIGRyYXcgdGV4dCB1cCB0byB0d28gdGltZXMgKG9uY2UgZm9yIGZpbGwsIG9uY2UgZm9y
IHN0cm9rZSkuCisgICAgaWYgKHRleHRNb2RlICYgY1RleHRGaWxsKSB7CisgICAgICAgIFNrUGFp
bnQgcGFpbnQ7CisgICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvckZp
bGxpbmcoJnBhaW50KTsKKyAgICAgICAgZm9udC0+cGxhdGZvcm1EYXRhKCkuc2V0dXBQYWludCgm
cGFpbnQpOworICAgICAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURf
VGV4dEVuY29kaW5nKTsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IoZ2MtPmZpbGxDb2xvcigpLnJn
YigpKTsKKyAgICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMsIG51bUdseXBocyA8PCAx
LCBwb3MsIHBhaW50KTsKKyAgICB9CisKKyAgICBpZiAoKHRleHRNb2RlICYgY1RleHRTdHJva2Up
CisgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSAhPSBO
b1N0cm9rZQorICAgICAgICAmJiBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVRoaWNr
bmVzcygpID4gMCkgeworCisgICAgICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgICAgIGdjLT5wbGF0
Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwgMCk7CisgICAg
ICAgIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNldHVwUGFpbnQoJnBhaW50KTsKKyAgICAgICAgcGFp
bnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtHbHlwaElEX1RleHRFbmNvZGluZyk7CisgICAg
ICAgIHBhaW50LnNldENvbG9yKGdjLT5zdHJva2VDb2xvcigpLnJnYigpKTsKKworICAgICAgICBp
ZiAodGV4dE1vZGUgJiBjVGV4dEZpbGwpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGFsc28gZmls
bGVkLCB3ZSBkb24ndCB3YW50IHRvIGRyYXcgc2hhZG93cyB0d2ljZS4KKyAgICAgICAgICAgIC8v
IFNlZSBjb21tZW50IGluIEZvbnRDaHJvbWl1bVdpbi5jcHA6OnBhaW50U2tpYVRleHQoKSBmb3Ig
bW9yZSBkZXRhaWxzLgorICAgICAgICAgICAgcGFpbnQuc2V0TG9vcGVyKDApLT5zYWZlVW5yZWYo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBudW1H
bHlwaHMgPDwgMSwgcG9zLCBwYWludCk7CisgICAgfQorfQorCitGbG9hdFJlY3QgRm9udDo6c2Vs
ZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBoLCBpbnQsIGludCkgY29uc3QKK3sKKyAgICBTa1BhaW50IHBhaW50
OworICAgIFNrU2NhbGFyIHdpZHRoOworICAgIFNrUGFpbnQ6OkZvbnRNZXRyaWNzIG1ldHJpY3M7
CisKKyAgICBwcmltYXJ5Rm9udCgpLT5wbGF0Zm9ybURhdGEoKS5zZXR1cFBhaW50KCZwYWludCk7
CisKKyAgICB3aWR0aCA9IHBhaW50Lm1lYXN1cmVUZXh0KHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5s
ZW5ndGgoKSA8PCAxKTsKKyAgICBTa1NjYWxhciBzcGFjaW5nID0gcGFpbnQuZ2V0Rm9udE1ldHJp
Y3MoJm1ldHJpY3MpOworCisgICAgcmV0dXJuIEZsb2F0UmVjdChwb2ludC54KCksCisgICAgICAg
ICAgICAgICAgICAgICBwb2ludC55KCkgLSBmbG9vcmYoU2tTY2FsYXJUb0Zsb2F0KC1tZXRyaWNz
LmZBc2NlbnQpKSwKKyAgICAgICAgICAgICAgICAgICAgIHJvdW5kZihTa1NjYWxhclRvRmxvYXQo
d2lkdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgIHJvdW5kZihTa1NjYWxhclRvRmxvYXQoc3Bh
Y2luZykpKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBGb3JUZXh0UGFpbnRpbmcoU2tQYWludCog
cGFpbnQsIFNrQ29sb3IgY29sb3IpCit7CisgICAgcGFpbnQtPnNldFRleHRFbmNvZGluZyhTa1Bh
aW50OjprR2x5cGhJRF9UZXh0RW5jb2RpbmcpOworICAgIHBhaW50LT5zZXRDb2xvcihjb2xvcik7
Cit9CisKK3ZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogZ2MsIFRl
eHRSdW4gY29uc3QmIHJ1biwgRmxvYXRQb2ludCBjb25zdCYgcG9pbnQsIGludCwgaW50KSBjb25z
dAoreworICAgIGlmICghcnVuLmxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTa0Nh
bnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKKyAgICBpbnQg
dGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFRleHREcmF3aW5nTW9kZSgpOwor
ICAgIGJvb2wgZmlsbCA9IHRleHRNb2RlICYgY1RleHRGaWxsOworICAgIGJvb2wgc3Ryb2tlID0g
KHRleHRNb2RlICYgY1RleHRTdHJva2UpCisgICAgICAgICAgICAgICAmJiBnYy0+cGxhdGZvcm1D
b250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UKKyAgICAgICAgICAgICAgICYm
IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlVGhpY2tuZXNzKCkgPiAwOworCisgICAg
aWYgKCFmaWxsICYmICFzdHJva2UpCisgICAgICAgIHJldHVybjsKKworICAgIFNrUGFpbnQgcGFp
bnQ7CisgICAgaWYgKGZpbGwpIHsKKyAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXR1
cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOworICAgICAgICBzZXR1cEZvclRleHRQYWludGluZygm
cGFpbnQsIGdjLT5maWxsQ29sb3IoKS5yZ2IoKSk7CisgICAgfQorICAgIGlmIChzdHJva2UpIHsK
KyAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tpbmcoJnBh
aW50LCAwLCAwKTsKKyAgICAgICAgc2V0dXBGb3JUZXh0UGFpbnRpbmcoJnBhaW50LCBnYy0+c3Ry
b2tlQ29sb3IoKS5yZ2IoKSk7CisgICAgfQorCisgICAgLy8gZ28gdG8gY2hhcnMsIGluc3RlYWQg
b2YgZ2x5cGhzLCB3aGljaCB3YXMgc2V0IGJ5IHNldHVwRm9yVGV4dCgpCisgICAgcGFpbnQuc2V0
VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtVVEYxNl9UZXh0RW5jb2RpbmcpOworCisgICAgY2FudmFz
LT5kcmF3VGV4dChydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkgPDwgMSwKKyAgICAgICAg
ICAgICAgICAgICAgIFNrRmxvYXRUb1NjYWxhcihwb2ludC54KCkpLCBTa0Zsb2F0VG9TY2FsYXIo
cG9pbnQueSgpKSwKKyAgICAgICAgICAgICAgICAgICAgIHBhaW50KTsKK30KKworZmxvYXQgRm9u
dDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxj
b25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KikgY29u
c3QKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1E
YXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOworCisgICAgU2tTY2FsYXIgd2lkdGggPSBwYWludC5t
ZWFzdXJlVGV4dChydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkgPDwgMSk7CisgICAgcmV0
dXJuIFNrU2NhbGFyVG9GbG9hdCh3aWR0aCk7Cit9CisKK2ludCBGb250OjpvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNs
dWRlUGFydGlhbEdseXBocykgY29uc3QKK3sKKyAgICBTa1BhaW50IHBhaW50OworICAgIGludCBj
b3VudCA9IHJ1bi5sZW5ndGgoKTsKKyAgICBTa0F1dG9TVE1hbGxvYzw2NCwgU2tTY2FsYXI+IHN0
b3JhZ2UoY291bnQpOworICAgIFNrU2NhbGFyKiB3aWR0aHMgPSBzdG9yYWdlLmdldCgpOworCisg
ICAgcHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOworCisg
ICAgY291bnQgPSBwYWludC5nZXRUZXh0V2lkdGhzKHJ1bi5jaGFyYWN0ZXJzKCksIGNvdW50IDw8
IDEsIHdpZHRocyk7CisKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAgICAgIFNrU2NhbGFyIHBv
cyA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAg
ICAgICAgaWYgKHggPCBTa1NjYWxhclJvdW5kKHBvcyArIFNrU2NhbGFySGFsZih3aWR0aHNbaV0p
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIHBvcyArPSB3aWR0aHNb
aV07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCit9Cg==
</data>
<flag name="review"
          id="57621"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71186</attachid>
            <date>2010-10-19 11:02:13 -0700</date>
            <delta_ts>2010-10-27 11:05:31 -0700</delta_ts>
            <desc>FontCustomPlatformData</desc>
            <filename>FontCustomPlatformData.patch</filename>
            <type>text/plain</type>
            <size>5056</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDA2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTAtMTkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgQWRkIFBMQVRGT1JNKEJS
RVdNUCkgZ3VhcmQgdG8gc2tpYSdzIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEKKyAgICAgICAgdG8g
c2hhcmUgT1MoTElOVVgpIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogbG9hZGVyL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Ojp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorCiAyMDEwLTEwLTE5ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gQnVpbGQg
Zml4LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAJKHJldmlzaW9uIDcwMDY2KQorKysgV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkRm9udC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAKLSNpZiBQTEFU
Rk9STShDRykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiAoT1MoV0lORE9XUykgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSkgfHwg
UExBVEZPUk0oSEFJS1UpIHx8IE9TKFdJTkNFKSB8fCBQTEFURk9STShBTkRST0lEKQorI2lmIFBM
QVRGT1JNKENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0o
Q0hST01JVU0pICYmIChPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkpKSB8
fCBQTEFURk9STShIQUlLVSkgfHwgT1MoV0lOQ0UpIHx8IFBMQVRGT1JNKEFORFJPSUQpIHx8IFBM
QVRGT1JNKEJSRVdNUCkKICNkZWZpbmUgU1RPUkVfRk9OVF9DVVNUT01fUExBVEZPUk1fREFUQQog
I2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHJldmlzaW9uIDcwMDY2KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCAyMDA5LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIENv
bXBhbnkgMTAwLCBJbmMuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MzYsNyArMzcsNyBAQAogI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJp
ZGdlLmgiCiAjaW5jbHVkZSAiT3BlblR5cGVVdGlsaXRpZXMuaCIKLSNlbGlmIE9TKExJTlVYKSB8
fCBPUyhGUkVFQlNEKQorI2VsaWYgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpIHx8IFBMQVRGT1JN
KEJSRVdNUCkKICNpbmNsdWRlICJTa1N0cmVhbS5oIgogI2VuZGlmCiAKQEAgLTQ3LDcgKzQ4LDcg
QEAKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8b2JqYmFzZS5oPgotI2VsaWYgT1MoTElO
VVgpIHx8IE9TKEZSRUVCU0QpCisjZWxpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkgfHwgUExB
VEZPUk0oQlJFV01QKQogI2luY2x1ZGUgPGNzdHJpbmc+CiAjZW5kaWYKIApAQCAtNTgsNyArNTks
NyBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmCiAjaWYgT1MoV0lO
RE9XUykKICAgICBpZiAobV9mb250UmVmZXJlbmNlKQogICAgICAgICBSZW1vdmVGb250TWVtUmVz
b3VyY2VFeChtX2ZvbnRSZWZlcmVuY2UpOwotI2VsaWYgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0Qp
CisjZWxpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkgfHwgUExBVEZPUk0oQlJFV01QKQogICAg
IGlmIChtX2ZvbnRSZWZlcmVuY2UpCiAgICAgICAgIG1fZm9udFJlZmVyZW5jZS0+dW5yZWYoKTsK
ICNlbmRpZgpAQCAtOTksNyArMTAwLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOgogCiAgICAgSEZPTlQgaGZvbnQgPSBDcmVhdGVGb250SW5kaXJlY3QoJmxvZ0Zv
bnQpOwogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGhmb250LCBzaXplKTsKLSNlbGlmIE9T
KExJTlVYKSB8fCBPUyhGUkVFQlNEKQorI2VsaWYgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpIHx8
IFBMQVRGT1JNKEJSRVdNUCkKICAgICBBU1NFUlQobV9mb250UmVmZXJlbmNlKTsKICAgICByZXR1
cm4gRm9udFBsYXRmb3JtRGF0YShtX2ZvbnRSZWZlcmVuY2UsICIiLCBzaXplLCBib2xkICYmICFt
X2ZvbnRSZWZlcmVuY2UtPmlzQm9sZCgpLCBpdGFsaWMgJiYgIW1fZm9udFJlZmVyZW5jZS0+aXNJ
dGFsaWMoKSk7CiAjZWxzZQpAQCAtMTIzLDcgKzEyNCw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRl
VW5pcXVlRm9udE5hbWUoKQogfQogI2VuZGlmCiAKLSNpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJT
RCkKKyNpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkgfHwgUExBVEZPUk0oQlJFV01QKQogY2xh
c3MgUmVtb3RlRm9udFN0cmVhbSA6IHB1YmxpYyBTa1N0cmVhbSB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUmVtb3RlRm9udFN0cmVhbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQpA
QCAtMTg5LDcgKzE5MCw3IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0
b20KICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFtZSk7Ci0j
ZWxpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkKKyNlbGlmIE9TKExJTlVYKSB8fCBPUyhGUkVF
QlNEKSB8fCBQTEFURk9STShCUkVXTVApCiAgICAgUmVtb3RlRm9udFN0cmVhbSogc3RyZWFtID0g
bmV3IFJlbW90ZUZvbnRTdHJlYW0oYnVmZmVyKTsKICAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9
IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21TdHJlYW0oc3RyZWFtKTsKICAgICBpZiAoIXR5cGVmYWNl
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCShyZXZpc2lvbiA3MDA2NikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDcgKzM5LDcgQEAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2VsaWYgT1MoTElOVVgpIHx8IE9TKEZSRUVC
U0QpCisjZWxpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkgfHwgUExBVEZPUk0oQlJFV01QKQog
I2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKICNlbmRpZgogCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWEKICAgICAgICAgOiBtX2ZvbnRSZWZl
cmVuY2UoZm9udFJlZmVyZW5jZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7fQotI2Vs
aWYgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpCisjZWxpZiBPUyhMSU5VWCkgfHwgT1MoRlJFRUJT
RCkgfHwgUExBVEZPUk0oQlJFV01QKQogICAgIGV4cGxpY2l0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2tUeXBlZmFjZSogdHlwZWZhY2UpCiAgICAgICAgIDogbV9mb250UmVmZXJlbmNlKHR5cGVm
YWNlKQogICAgIHt9CkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIDogTm9uY29weWEKICNpZiBPUyhXSU5ET1dTKQogICAgIEhBTkRMRSBtX2ZvbnRSZWZlcmVu
Y2U7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSNlbGlmIE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKQor
I2VsaWYgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpIHx8IFBMQVRGT1JNKEJSRVdNUCkKICAgICBT
a1R5cGVmYWNlKiBtX2ZvbnRSZWZlcmVuY2U7CiAjZW5kaWYKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71219</attachid>
            <date>2010-10-19 16:22:22 -0700</date>
            <delta_ts>2011-02-09 02:15:07 -0800</delta_ts>
            <desc>FontPlatformData</desc>
            <filename>FontPlatformData.patch</filename>
            <type>text/plain</type>
            <size>12978</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDEwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMTkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgUG9ydCBGb250UGxhdGZv
cm1EYXRhLiBUaGUgY29kZSBpcyBiYXNlZCBvbiBDaHJvbWl1bSBMaW51eCBpbXBsZW1lbnRhdGlv
biwKKyAgICAgICAgYnV0IGhhcmZidXp6IGFuZCBGb250UmVuZGVyU3R5bGUgYXJlIG5vdCB1c2Vk
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYnJldy9Gb250UGxhdGZvcm1EYXRhLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEFudGlBbGlhcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbEdseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpzZXR1cFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OnVuaXF1ZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFz
aCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2gpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JyZXcvRm9udFBsYXRmb3JtRGF0YS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXNoVGFibGVEZWxldGVkRm9udFZhbHVl
KToKKwogMjAxMC0xMC0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCdWlsZCBmaXggKEVGTCwgbWF5YmUgbW9yZSkuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JyZXcvRm9udFBsYXRmb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRQbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAwNiwgMjAwNywgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2tQYWludC5oIgorI2lu
Y2x1ZGUgIlNrVHlwZWZhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU2tQYWludDo6SGludGluZyBza2lhSGlu
dGluZyA9IFNrUGFpbnQ6OmtOb3JtYWxfSGludGluZzsKK3N0YXRpYyBib29sIGlzU2tpYUFudGlB
bGlhcyA9IHRydWU7CitzdGF0aWMgYm9vbCBpc1NraWFTdWJwaXhlbEdseXBocyA9IGZhbHNlOwor
Cit2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OnNldEhpbnRpbmcoU2tQYWludDo6SGludGluZyBoaW50
aW5nKQoreworICAgIHNraWFIaW50aW5nID0gaGludGluZzsKK30KKwordm9pZCBGb250UGxhdGZv
cm1EYXRhOjpzZXRBbnRpQWxpYXMoYm9vbCBpc0FudGlBbGlhcykKK3sKKyAgICBpc1NraWFBbnRp
QWxpYXMgPSBpc0FudGlBbGlhczsKK30KKwordm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJw
aXhlbEdseXBocyhib29sIGlzU3VicGl4ZWxHbHlwaHMpCit7CisgICAgaXNTa2lhU3VicGl4ZWxH
bHlwaHMgPSBpc1N1YnBpeGVsR2x5cGhzOworfQorCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNyYykKKyAgICA6IG1fdHlwZWZhY2Uo
c3JjLm1fdHlwZWZhY2UpCisgICAgLCBtX2ZhbWlseShzcmMubV9mYW1pbHkpCisgICAgLCBtX3Rl
eHRTaXplKHNyYy5tX3RleHRTaXplKQorICAgICwgbV9mYWtlQm9sZChzcmMubV9mYWtlQm9sZCkK
KyAgICAsIG1fZmFrZUl0YWxpYyhzcmMubV9mYWtlSXRhbGljKQoreworICAgIFNrU2FmZVJlZiht
X3R5cGVmYWNlKTsKK30KKworRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShTa1R5
cGVmYWNlKiB0ZiwgY29uc3QgY2hhciogZmFtaWx5LCBmbG9hdCB0ZXh0U2l6ZSwgYm9vbCBmYWtl
Qm9sZCwgYm9vbCBmYWtlSXRhbGljKQorICAgIDogbV90eXBlZmFjZSh0ZikKKyAgICAsIG1fZmFt
aWx5KGZhbWlseSkKKyAgICAsIG1fdGV4dFNpemUodGV4dFNpemUpCisgICAgLCBtX2Zha2VCb2xk
KGZha2VCb2xkKQorICAgICwgbV9mYWtlSXRhbGljKGZha2VJdGFsaWMpCit7CisgICAgU2tTYWZl
UmVmKG1fdHlwZWZhY2UpOworfQorCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNyYywgZmxvYXQgdGV4dFNpemUpCisgICAgOiBtX3R5
cGVmYWNlKHNyYy5tX3R5cGVmYWNlKQorICAgICwgbV9mYW1pbHkoc3JjLm1fZmFtaWx5KQorICAg
ICwgbV90ZXh0U2l6ZSh0ZXh0U2l6ZSkKKyAgICAsIG1fZmFrZUJvbGQoc3JjLm1fZmFrZUJvbGQp
CisgICAgLCBtX2Zha2VJdGFsaWMoc3JjLm1fZmFrZUl0YWxpYykKK3sKKyAgICBTa1NhZmVSZWYo
bV90eXBlZmFjZSk7Cit9CisKK0ZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkK
K3sKKyAgICBTa1NhZmVVbnJlZihtX3R5cGVmYWNlKTsKK30KKworRm9udFBsYXRmb3JtRGF0YSYg
Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNyYykK
K3sKKyAgICBTa1JlZkNudF9TYWZlQXNzaWduKG1fdHlwZWZhY2UsIHNyYy5tX3R5cGVmYWNlKTsK
KworICAgIG1fZmFtaWx5ID0gc3JjLm1fZmFtaWx5OworICAgIG1fdGV4dFNpemUgPSBzcmMubV90
ZXh0U2l6ZTsKKyAgICBtX2Zha2VCb2xkID0gc3JjLm1fZmFrZUJvbGQ7CisgICAgbV9mYWtlSXRh
bGljID0gc3JjLm1fZmFrZUl0YWxpYzsKKworICAgIHJldHVybiAqdGhpczsKK30KKworI2lmbmRl
ZiBOREVCVUcKK1N0cmluZyBGb250UGxhdGZvcm1EYXRhOjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK3ZvaWQgRm9udFBsYXRmb3JtRGF0
YTo6c2V0dXBQYWludChTa1BhaW50KiBwYWludCkgY29uc3QKK3sKKyAgICBjb25zdCBmbG9hdCB0
cyA9IG1fdGV4dFNpemUgPiAwID8gbV90ZXh0U2l6ZSA6IDEyOworCisgICAgcGFpbnQtPnNldEFu
dGlBbGlhcyh0cnVlKTsKKyAgICBwYWludC0+c2V0SGludGluZyhza2lhSGludGluZyk7CisKKyAg
ICBwYWludC0+c2V0VGV4dFNpemUoU2tGbG9hdFRvU2NhbGFyKHRzKSk7CisgICAgcGFpbnQtPnNl
dFR5cGVmYWNlKG1fdHlwZWZhY2UpOworICAgIHBhaW50LT5zZXRGYWtlQm9sZFRleHQobV9mYWtl
Qm9sZCk7CisgICAgcGFpbnQtPnNldFRleHRTa2V3WChtX2Zha2VJdGFsaWMgPyAtU0tfU2NhbGFy
MSAvIDQgOiAwKTsKK30KKworU2tGb250SUQgRm9udFBsYXRmb3JtRGF0YTo6dW5pcXVlSUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3R5cGVmYWNlLT51bmlxdWVJRCgpOworfQorCitib29sIEZv
bnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgYSkgY29u
c3QKK3sKKyAgICAvLyBJZiBlaXRoZXIgb2YgdGhlIHR5cGVmYWNlIHBvaW50ZXJzIGFyZSBpbnZh
bGlkIChlaXRoZXIgMCBvciB0aGUKKyAgICAvLyBzcGVjaWFsIGRlbGV0ZWQgdmFsdWUpIHRoZW4g
d2UgdGVzdCBmb3IgcG9pbnRlciBlcXVhbGl0eS4gT3RoZXJ3aXNlLCB3ZQorICAgIC8vIGNhbGwg
U2tUeXBlZmFjZTo6RXF1YWwgb24gdGhlIHZhbGlkIHBvaW50ZXJzLgorICAgIGJvb2wgdHlwZWZh
Y2VzRXF1YWw7CisgICAgaWYgKG1fdHlwZWZhY2UgPT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1
ZSgpCisgICAgICAgIHx8IGEubV90eXBlZmFjZSA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVl
KCkKKyAgICAgICAgfHwgIW1fdHlwZWZhY2UKKyAgICAgICAgfHwgIWEubV90eXBlZmFjZSkKKyAg
ICAgICAgdHlwZWZhY2VzRXF1YWwgPSBtX3R5cGVmYWNlID09IGEubV90eXBlZmFjZTsKKyAgICBl
bHNlCisgICAgICAgIHR5cGVmYWNlc0VxdWFsID0gU2tUeXBlZmFjZTo6RXF1YWwobV90eXBlZmFj
ZSwgYS5tX3R5cGVmYWNlKTsKKworICAgIHJldHVybiB0eXBlZmFjZXNFcXVhbCAKKyAgICAgICAg
JiYgbV90ZXh0U2l6ZSA9PSBhLm1fdGV4dFNpemUKKyAgICAgICAgJiYgbV9mYWtlQm9sZCA9PSBh
Lm1fZmFrZUJvbGQKKyAgICAgICAgJiYgbV9mYWtlSXRhbGljID09IGEubV9mYWtlSXRhbGljOwor
fQorCit1bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1bnNp
Z25lZCBoID0gU2tUeXBlZmFjZTo6VW5pcXVlSUQobV90eXBlZmFjZSk7CisgICAgaCBePSAweDAx
MDEwMTAxICogKChzdGF0aWNfY2FzdDxpbnQ+KG1fZmFrZUJvbGQpIDw8IDEpIHwgc3RhdGljX2Nh
c3Q8aW50PihtX2Zha2VJdGFsaWMpKTsKKworICAgIC8vIFRoaXMgbWVtY3B5IGlzIHRvIGF2b2lk
IGEgcmVpbnRlcnByZXRfY2FzdCB0aGF0IGJyZWFrcyBzdHJpY3QtYWxpYXNpbmcKKyAgICAvLyBy
dWxlcy4gTWVtY3B5IGlzIGdlbmVyYWxseSBvcHRpbWl6ZWQgZW5vdWdoIHNvIHRoYXQgcGVyZm9y
bWFuY2UgZG9lc24ndAorICAgIC8vIG1hdHRlciBoZXJlLgorICAgIHVpbnQzMl90IHRleHRTaXpl
Qnl0ZXM7CisgICAgbWVtY3B5KCZ0ZXh0U2l6ZUJ5dGVzLCAmbV90ZXh0U2l6ZSwgc2l6ZW9mKHVp
bnQzMl90KSk7CisgICAgaCBePSB0ZXh0U2l6ZUJ5dGVzOworCisgICAgcmV0dXJuIGg7Cit9CisK
K2Jvb2wgRm9udFBsYXRmb3JtRGF0YTo6aXNGaXhlZFBpdGNoKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRQbGF0Zm9ybURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JyZXcvRm9udFBs
YXRmb3JtRGF0YS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
cmV3L0ZvbnRQbGF0Zm9ybURhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDgsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIEluYy4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZv
bnRQbGF0Zm9ybURhdGFfaAorI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKKworI2luY2x1ZGUg
PFNrUGFpbnQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSW1wbC5oPgorCitjbGFzcyBTa1R5cGVmYWNlOwordHlwZWRlZiB1aW50MzJfdCBTa0Zv
bnRJRDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250RGVzY3JpcHRpb247CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBGb250UGxhdGZvcm1EYXRhIGlzIHRoZSBoYW5k
bGUgd2hpY2ggV2ViS2l0IGhhcyBvbiBhIHNwZWNpZmljIGZhY2UuIEEgZmFjZQorLy8gaXMgdGhl
IHR1cGxlIG9mIChmb250LCBzaXplLCAuLi5ldGMpLiBIZXJlIHdlIGFyZSBqdXN0IHdyYXBwaW5n
IGEgU2tpYQorLy8gU2tUeXBlZmFjZSBwb2ludGVyIGFuZCBkZWFsaW5nIHdpdGggdGhlIHJlZmVy
ZW5jZSBjb3VudGluZyBldGMuCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2xhc3MgRm9udFBs
YXRmb3JtRGF0YSB7CitwdWJsaWM6CisgICAgLy8gVXNlZCBmb3IgZGVsZXRlZCB2YWx1ZXMgaW4g
dGhlIGZvbnQgY2FjaGUncyBoYXNoIHRhYmxlcy4gVGhlIGhhc2ggdGFibGUKKyAgICAvLyB3aWxs
IGNyZWF0ZSB1cyB3aXRoIHRoaXMgc3RydWN0dXJlLCBhbmQgaXQgd2lsbCBjb21wYXJlIG90aGVy
IHZhbHVlcworICAgIC8vIHRvIHRoaXMgIkRlbGV0ZWQiIG9uZS4gSXQgZXhwZWN0cyB0aGUgRGVs
ZXRlZCBvbmUgdG8gYmUgZGlmZmVyZW50aWFibGUKKyAgICAvLyBmcm9tIHRoZSAwIG9uZSAoY3Jl
YXRlZCB3aXRoIHRoZSBlbXB0eSBjb25zdHJ1Y3RvciksIHNvIHdlIGNhbid0IGp1c3QKKyAgICAv
LyBzZXQgZXZlcnl0aGluZyB0byAwLgorICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fdHlwZWZhY2UoaGFzaFRhYmxlRGVsZXRl
ZEZvbnRWYWx1ZSgpKQorICAgICAgICAsIG1fdGV4dFNpemUoMCkKKyAgICAgICAgLCBtX2Zha2VC
b2xkKGZhbHNlKQorICAgICAgICAsIG1fZmFrZUl0YWxpYyhmYWxzZSkKKyAgICAgICAgeyB9CisK
KyAgICBGb250UGxhdGZvcm1EYXRhKCkKKyAgICAgICAgOiBtX3R5cGVmYWNlKDApCisgICAgICAg
ICwgbV90ZXh0U2l6ZSgwKQorICAgICAgICAsIG1fZmFrZUJvbGQoZmFsc2UpCisgICAgICAgICwg
bV9mYWtlSXRhbGljKGZhbHNlKQorICAgICAgICB7IH0KKworICAgIEZvbnRQbGF0Zm9ybURhdGEo
ZmxvYXQgdGV4dFNpemUsIGJvb2wgZmFrZUJvbGQsIGJvb2wgZmFrZUl0YWxpYykKKyAgICAgICAg
OiBtX3R5cGVmYWNlKDApCisgICAgICAgICwgbV90ZXh0U2l6ZSh0ZXh0U2l6ZSkKKyAgICAgICAg
LCBtX2Zha2VCb2xkKGZha2VCb2xkKQorICAgICAgICAsIG1fZmFrZUl0YWxpYyhmYWtlSXRhbGlj
KQorICAgICAgICB7IH0KKworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoU2tUeXBlZmFjZSosIGNvbnN0IGNoYXIqIG5h
bWUsIGZsb2F0IHRleHRTaXplLCBib29sIGZha2VCb2xkLCBib29sIGZha2VJdGFsaWMpOworICAg
IEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc3JjLCBmbG9hdCB0ZXh0
U2l6ZSk7CisgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZmYgdGhpcyBmb250IGlzIG1vbm9zcGFjZWQgKGkuZS4g
ZXZlcnkgZ2x5cGggaGFzIGFuIGVxdWFsIHgKKyAgICAvLyBhZHZhbmNlKQorICAgIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyAgICBib29sIGlzRml4ZWRQaXRjaCgpIGNvbnN0OworCisgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorICAgIC8vIFNldHVwIGEgU2tpYSBwYWludGluZyBjb250ZXh0IHRvIHVz
ZSB0aGlzIGZvbnQuCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZvaWQgc2V0dXBQYWlu
dChTa1BhaW50KikgY29uc3Q7CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUmV0
dXJuIFNraWEncyB1bmlxdWUgaWQgZm9yIHRoaXMgZm9udC4gVGhpcyBlbmNvZGVzIGJvdGggdGhl
IHN0eWxlIGFuZAorICAgIC8vIHRoZSBmb250J3MgZmlsZSBuYW1lIHNvIHJlZmVycyB0byBhIHNp
bmdsZSBmYWNlLgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBTa0ZvbnRJRCB1bmlxdWVJ
RCgpIGNvbnN0OworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworICAgIGZsb2F0IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3RleHRTaXplOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJh
dG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZWZhY2UgPT0gaGFzaFRhYmxlRGVsZXRlZEZv
bnRWYWx1ZSgpOyB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CisjZW5kaWYKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBHbG9iYWwg
Zm9udCBwcmVmZXJlbmNlcy4uLgorCisgICAgc3RhdGljIHZvaWQgc2V0SGludGluZyhTa1BhaW50
OjpIaW50aW5nKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRBbnRpQWxpYXMoYm9vbCBvbik7CisgICAg
c3RhdGljIHZvaWQgc2V0U3VicGl4ZWxHbHlwaHMoYm9vbCBvbik7CisKK3ByaXZhdGU6CisgICAg
Ly8gRklYTUU6IENvdWxkIFNrQXV0b1VucmVmIGJlIHVzZWQgaGVyZT8KKyAgICBTa1R5cGVmYWNl
KiBtX3R5cGVmYWNlOworICAgIENTdHJpbmcgbV9mYW1pbHk7CisgICAgZmxvYXQgbV90ZXh0U2l6
ZTsKKyAgICBib29sIG1fZmFrZUJvbGQ7CisgICAgYm9vbCBtX2Zha2VJdGFsaWM7CisKKyAgICBT
a1R5cGVmYWNlKiBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkgY29uc3QgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxTa1R5cGVmYWNlKj4oLTEpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhX2gK
</data>
<flag name="review"
          id="61227"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71232</attachid>
            <date>2010-10-19 17:41:13 -0700</date>
            <delta_ts>2011-02-09 02:15:29 -0800</delta_ts>
            <desc>FontCache</desc>
            <filename>FontCacheBrew.patch</filename>
            <type>text/plain</type>
            <size>6893</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDExMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTAtMTkgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IGdyYXBoaWNzIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjc1CisKKyAgICAgICAgUG9ydCBGb250Q2FjaGUu
IFRoZSBjb2RlIGlzIGJhc2VkIG9uIENocm9taXVtIExpbnV4IGltcGxlbWVudGF0aW9uLgorICAg
ICAgICBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyBqdXN0IHJldHVybnMgZm9u
dC5wcmltYXJ5Rm9udCgpIGFzIHdlIGFzc3VtZSB0aGF0CisgICAgICAgIGVhY2ggZm9udCBpbiBC
cmV3IE1QIHN1cHBvcnRzIGFsbCBjaGFyYWN0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYnJldy9Gb250Q2FjaGVCcmV3LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omdl
dEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omdl
dFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldFRyYWl0c0luRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YSk6CisKIDIwMTAtMTAtMTkgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JyZXcvRm9udENhY2hlQnJldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRDYWNoZUJyZXcuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ZvbnRDYWNoZUJyZXcuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJbmMuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVk
ZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZvbnRQ
bGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorCisjaW5jbHVkZSAiU2tQYWlu
dC5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJTa1V0aWxzLmgiCisKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KCkK
K3sKK30KKworY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JD
aGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGxlbmd0aCkKK3sKKyAgICAvLyBzaW5jZSBhbGwgb2Ygb3VyIGZvbnRzIGxvZ2ljYWxseSBt
YXAgdG8gdGhlIGZhbGxiYWNrLCB3ZSBjYW4gYWx3YXlzIGNsYWltCisgICAgLy8gdGhhdCBlYWNo
IGZvbnQgc3VwcG9ydHMgYWxsIGNoYXJhY3RlcnMuCisgICAgcmV0dXJuIGZvbnQucHJpbWFyeUZv
bnQoKTsKK30KKworU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworU2ltcGxl
Rm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQoreworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgc2Fuc1N0cigiU2FucyIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VyaWZT
dHIoIlNlcmlmIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBtb25vc3BhY2VTdHIo
Ik1vbm9zcGFjZSIpOworCisgICAgRm9udFBsYXRmb3JtRGF0YSogZm9udFBsYXRmb3JtRGF0YSA9
IDA7CisgICAgc3dpdGNoIChkZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpIHsKKyAgICBjYXNl
IEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHk6CisgICAgICAgIGZvbnRQbGF0Zm9ybURhdGEg
PSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBzZXJpZlN0cik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHk6Cisg
ICAgICAgIGZvbnRQbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2Ny
aXB0aW9uLCBtb25vc3BhY2VTdHIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnREZXNj
cmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5OgorICAgIGRlZmF1bHQ6CisgICAgICAgIGZvbnRQbGF0
Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBzYW5zU3Ry
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEp
OworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250UGxhdGZvcm1EYXRhKTsKK30KKwor
dm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+JiB0cmFpdHNNYXNrcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitGb250UGxh
dGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCit7Cisg
ICAgY29uc3QgY2hhciogbmFtZSA9IDA7CisgICAgQ1N0cmluZyBzOworCisgICAgaWYgKCFmYW1p
bHkubGVuZ3RoKCkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAgICAgICAg
ICBGb250RGVzY3JpcHRpb246OkdlbmVyaWNGYW1pbHlUeXBlIG1UeXBlOworICAgICAgICAgICAg
Y29uc3QgY2hhciogbU5hbWU7CisgICAgICAgIH0gZm9udERlc2NyaXB0aW9uc1tdID0geworICAg
ICAgICAgICAgeyBGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5LCAic2VyaWYiIH0sCisgICAg
ICAgICAgICB7IEZvbnREZXNjcmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5LCAic2Fucy1zZXJpZiIg
fSwKKyAgICAgICAgICAgIHsgRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHksICJtb25v
c3BhY2UiIH0sCisgICAgICAgICAgICB7IEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSwg
ImN1cnNpdmUiIH0sCisgICAgICAgICAgICB7IEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWls
eSwgImZhbnRhc3kiIH0KKyAgICAgICAgfTsKKworICAgICAgICBGb250RGVzY3JpcHRpb246Okdl
bmVyaWNGYW1pbHlUeXBlIHR5cGUgPSBmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgU0tfQVJSQVlfQ09VTlQoZm9udERlc2Ny
aXB0aW9ucyk7IGkrKykgeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gZm9udERlc2NyaXB0aW9u
c1tpXS5tVHlwZSkgeworICAgICAgICAgICAgICAgIG5hbWUgPSBmb250RGVzY3JpcHRpb25zW2ld
Lm1OYW1lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIC8vIGlmIHdlIGZhbGwgb3V0IG9mIHRoZSBsb29wLCBpdCdzIG9rIGZvciBuYW1l
IHRvIHN0aWxsIGJlIDAKKyAgICB9IGVsc2UgeyAvLyBjb252ZXJ0IHRoZSBuYW1lIHRvIHV0ZjgK
KyAgICAgICAgcyA9IGZhbWlseS5zdHJpbmcoKS51dGY4KCk7CisgICAgICAgIG5hbWUgPSBzLmRh
dGEoKTsKKyAgICB9CisKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAg
IGlmIChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQpCisgICAgICAg
IHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtCb2xkOworICAgIGlmIChmb250RGVzY3JpcHRpb24uaXRh
bGljKCkpCisgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisKKyAgICBTa1R5
cGVmYWNlKiB0ZiA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRpY19jYXN0
PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAgIGlmICghdGYpCisgICAgICAgIHJldHVy
biAwOworCisgICAgRm9udFBsYXRmb3JtRGF0YSogcmVzdWx0ID0KKyAgICAgICAgbmV3IEZvbnRQ
bGF0Zm9ybURhdGEodGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQp
ICYmICF0Zi0+aXNCb2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAm
IFNrVHlwZWZhY2U6OmtJdGFsaWMpICYmICF0Zi0+aXNJdGFsaWMoKSk7CisgICAgdGYtPnVucmVm
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="61244"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>