<?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>84431</bug_id>
          
          <creation_ts>2012-04-20 04:27:18 -0700</creation_ts>
          <short_desc>[chromium] Complex text support for Android.</short_desc>
          <delta_ts>2012-04-26 14:50:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hao Zheng">zhenghao</reporter>
          <assigned_to name="Hao Zheng">zhenghao</assigned_to>
          <cc>bashi</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>russellbrenner</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606489</commentid>
    <comment_count>0</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-20 04:27:18 -0700</bug_when>
    <thetext>[chromium] Complex text support for Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606491</commentid>
    <comment_count>1</comment_count>
      <attachid>138067</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-20 04:39:41 -0700</bug_when>
    <thetext>Created attachment 138067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606492</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-20 04:42:07 -0700</bug_when>
    <thetext>Attachment 138067 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:15:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606705</commentid>
    <comment_count>3</comment_count>
      <attachid>138067</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-04-20 10:54:53 -0700</bug_when>
    <thetext>Comment on attachment 138067
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        No new tests. (OOPS!)
&gt; 
&gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]

Please state why the patch doesn&apos;t contain tests.

&gt; Source/WebCore/platform/graphics/FontCache.h:108
&gt; +    FontPlatformData* getCachedFallbackScriptFontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);

Please don&apos;t add this kind of public function. FontPlatformData shouldn&apos;t be exposed from FontCache.

However, as mac port specifies that ComplexTextController is a friend of FontCache, I think the current FontCache has structural problems with complex text rendering. How about:
- remove this function
- make ComplexTextController to be a friend of FontCache on Android
- call fontCache()-&gt;getCachedFontPlatformData(fontDescription, SkGetFallbackScriptID(fallbackScript), true) in ComplexTextController::getComplexFontPlatformData()

This still looks ugly, though.

&gt; Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:242
&gt; +    return 0;

How about &quot;return &amp;fontData-&gt;fontDataForCharacter(&apos; &apos;)-&gt;platformData()&quot; ? This way you can remove L262, L264-L266.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607161</commentid>
    <comment_count>4</comment_count>
      <attachid>138224</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-21 00:46:12 -0700</bug_when>
    <thetext>Created attachment 138224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607162</commentid>
    <comment_count>5</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-21 00:49:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 138067 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138067&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:15
&gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
&gt; 
&gt; Please state why the patch doesn&apos;t contain tests.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FontCache.h:108
&gt; &gt; +    FontPlatformData* getCachedFallbackScriptFontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);
&gt; 
&gt; Please don&apos;t add this kind of public function. FontPlatformData shouldn&apos;t be exposed from FontCache.
&gt; 
&gt; However, as mac port specifies that ComplexTextController is a friend of FontCache, I think the current FontCache has structural problems with complex text rendering. How about:
&gt; - remove this function
&gt; - make ComplexTextController to be a friend of FontCache on Android
&gt; - call fontCache()-&gt;getCachedFontPlatformData(fontDescription, SkGetFallbackScriptID(fallbackScript), true) in ComplexTextController::getComplexFontPlatformData()
&gt; 
&gt; This still looks ugly, though.
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:242
&gt; &gt; +    return 0;
&gt; 
&gt; How about &quot;return &amp;fontData-&gt;fontDataForCharacter(&apos; &apos;)-&gt;platformData()&quot; ? This way you can remove L262, L264-L266.

Done. Good Suggestion. But I need to surround surrogatePairAwareFirstCharacter() in #ifdef, as it would generate &apos;defined but not used&apos; error on Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607165</commentid>
    <comment_count>6</comment_count>
      <attachid>138224</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-21 01:04:29 -0700</bug_when>
    <thetext>Comment on attachment 138224
Patch

Attachment 138224 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12462441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607180</commentid>
    <comment_count>7</comment_count>
      <attachid>138228</attachid>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-21 02:07:42 -0700</bug_when>
    <thetext>Created attachment 138228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607184</commentid>
    <comment_count>8</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-21 02:19:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 138067 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138067&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/ChangeLog:15
&gt; &gt; &gt;&gt; +        No new tests. (OOPS!)
&gt; &gt; &gt; 
&gt; &gt; &gt; You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
&gt; &gt; 
&gt; &gt; Please state why the patch doesn&apos;t contain tests.
&gt; 
&gt; Done.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/FontCache.h:108
&gt; &gt; &gt; +    FontPlatformData* getCachedFallbackScriptFontPlatformData(const FontDescription&amp;, const AtomicString&amp; family);
&gt; &gt; 
&gt; &gt; Please don&apos;t add this kind of public function. FontPlatformData shouldn&apos;t be exposed from FontCache.
&gt; &gt; 
&gt; &gt; However, as mac port specifies that ComplexTextController is a friend of FontCache, I think the current FontCache has structural problems with complex text rendering. How about:
&gt; &gt; - remove this function
&gt; &gt; - make ComplexTextController to be a friend of FontCache on Android
&gt; &gt; - call fontCache()-&gt;getCachedFontPlatformData(fontDescription, SkGetFallbackScriptID(fallbackScript), true) in ComplexTextController::getComplexFontPlatformData()
&gt; &gt; 
&gt; &gt; This still looks ugly, though.
&gt; &gt; 
&gt; 
&gt; Done.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:242
&gt; &gt; &gt; +    return 0;
&gt; &gt; 
&gt; &gt; How about &quot;return &amp;fontData-&gt;fontDataForCharacter(&apos; &apos;)-&gt;platformData()&quot; ? This way you can remove L262, L264-L266.
&gt; 
&gt; Done. Good Suggestion. But I need to surround surrogatePairAwareFirstCharacter() in #ifdef, as it would generate &apos;defined but not used&apos; error on Android.

I found the logic is not expected. If a script is not supported by fallback fonts on Android, we still need to use system fonts. So the normal logic is also needed by Android. Anyway, I move some code into the check &apos;if (!platformData)&apos;.

And I find the parameter name checkingAlternateName of getCachedFontPlatformData is confusing. From the code in FontCache.cpp, it seems it should be called noCheckingAlternateName.

206     if (!foundResult &amp;&amp; !checkingAlternateName) {
207         // We were unable to find a font.  We have a small set of fonts that we alias to other names, 
208         // e.g., Arial/Helvetica, Courier/Courier New, etc.  Try looking up the font under the aliased name.
209         const AtomicString&amp; alternateName = alternateFamilyName(familyName);
210         if (!alternateName.isEmpty())
211             result = getCachedFontPlatformData(fontDescription, alternateName, true);
212         if (result)
213             gFontPlatformDa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607255</commentid>
    <comment_count>9</comment_count>
      <attachid>138228</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-04-21 12:03:11 -0700</bug_when>
    <thetext>Comment on attachment 138228
Patch

Patch looks good to me (but I&apos;m not a reviewer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607334</commentid>
    <comment_count>10</comment_count>
    <who name="Hao Zheng">zhenghao</who>
    <bug_when>2012-04-22 02:03:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 138228 [details])
&gt; Patch looks good to me (but I&apos;m not a reviewer).

Thanks, bashi. Tony, could you please take a review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611007</commentid>
    <comment_count>11</comment_count>
      <attachid>138228</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-26 14:50:17 -0700</bug_when>
    <thetext>Comment on attachment 138228
Patch

Clearing flags on attachment: 138228

Committed r115373: &lt;http://trac.webkit.org/changeset/115373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611008</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-26 14:50:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138067</attachid>
            <date>2012-04-20 04:39:41 -0700</date>
            <delta_ts>2012-04-21 00:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84431-20120420193939.patch</filename>
            <type>text/plain</type>
            <size>12748</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0MTAwNGZhYjhkZDdk
ZjdjYzA4MDFlNmVhZGE2NTczNjZiMGNmMi4uMWMwZTk3MDY1MjQ1M2U5ZWUwNjhjNjNhNmYzMjlk
NzcxNDVkMjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA0LTIwICBIYW8g
WmhlbmcgIDx6aGVuZ2hhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb21w
bGV4IHRleHQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDMxCisKKyAgICAgICAgQ29tcGxleCB0ZXh0IHN1cHBv
cnQgaXMgZGlmZmVyZW50IG9uIEFuZHJvaWQgZnJvbSBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAg
IFRoZXJlIGFyZSAyIGtpbmRzIG9mIGZvbnQgb24gQW5kcm9pZDogc3lzdGVtIGZvbnRzIGFuZCBm
YWxsYmFjayBmb250cy4KKyAgICAgICAgU3lzdGVtIGZvbnRzIGhhdmUgYSBuYW1lLCBhbmQgYXJl
IGFjY2Vzc2libGUgaW4gRm9udFBsYXRmb3JtRGF0YS4KKyAgICAgICAgRmFsbGJhY2sgZm9udHMg
ZG8gbm90IGhhdmUgc3BlY2lmaWMgbmFtZXMsIHNvIHRoZXkgYXJlIG5vdCBhY2Nlc3NpYmxlCisg
ICAgICAgIGZyb20gV2ViS2l0IGRpcmVjdGx5LiBUaGVyZSBpcyBvbmUgZm9udCBmb3IgZWFjaCBz
Y3JpcHQgc3VwcG9ydC4KKyAgICAgICAgVG8gZmVlZCBIYXJmYnV6eiwgdXNlIGEgdHJpY2sgdG8g
Z2V0IGNvcnJlY3QgU2tUeXBlZmFjZSBiYXNlZCBvbiBzY3JpcHQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRmFsbGJhY2tTY3JpcHRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSgpIGlzIHByaXZhdGUuIEV4cG9z
ZSBhIG1ldGhlZCB0bworICAgICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21w
bGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4
VGV4dENvbnRyb2xsZXI6OmdldENvbXBsZXhGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpzZXR1cEZv
bnRGb3JTY3JpcHRSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0Nv
bXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6Lmg6CisgICAgICAgIChDb21wbGV4VGV4dENvbnRy
b2xsZXIpOgorCiAyMDEyLTA0LTE5ICBUYXkgR3JpZ2cgIDx0Z3JpZ2dAcmltLmNvbT4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIEhUVFAgY29ubmVjdGlvbiBwZXIgaG9zdCBsaW1pdCBp
biBSZXNvdXJjZVJlcXVlc3RCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg5ZTcxZDA5MjhmMDkyNjQzNTI0NzQ5YzNiNDA1NWZk
NmMyYmNhZjMuLmYwOTVlYjEyYjlhYzJkNzgyZThiYmZhNTMwOWQ3NWE1NWIxNDk2ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0xMDQsNiAr
MTA0LDEwIEBAIHB1YmxpYzoKICAgICBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3Jp
cHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIFNob3VsZFJldGFpbiwgY29u
c3QgTE9HRk9OVCYgZm9udCwgd2NoYXJfdCogb3V0Rm9udEZhbWlseU5hbWUpOwogI2VuZGlmCiAK
KyNpZiBPUyhBTkRST0lEKQorICAgIEZvbnRQbGF0Zm9ybURhdGEqIGdldENhY2hlZEZhbGxiYWNr
U2NyaXB0Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBGb250Q2FjaGUoKTsK
ICAgICB+Rm9udENhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCmluZGV4IDRhY2I1
ZmY3YzM0YzM3ZWZkY2QwYTNjYTI2M2RkZmZhMjI4N2NlZjAuLmVmZjVmNDI5MjEwNjg5ODNiMjE3
YjFhZjIzMzcxMTg3OWFkZjI1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKIAogI2luY2x1ZGUgIlNr
UGFpbnQuaCIKLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCisjaW5jbHVkZSAiU2tUeXBlZmFjZV9h
bmRyb2lkLmgiCiAjaW5jbHVkZSAiU2tVdGlscy5oIgogCiAjaW5jbHVkZSA8dW5pY29kZS9sb2Np
ZC5oPgpAQCAtMTQ0LDYgKzE0NCwxMSBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK0ZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2Fj
aGVkRmFsbGJhY2tTY3JpcHRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3sKKyAgICByZXR1
cm4gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseSwgdHJ1
ZSk7Cit9CisKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgY29uc3QgY2hhciogbmFtZSA9IDA7CkBAIC0xNjQsMzMg
KzE2OSw0NiBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAgIGlmIChmb250RGVzY3JpcHRp
b24uaXRhbGljKCkpCiAgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CiAKLSAg
ICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUs
IFNrVHlwZWZhY2U6OmtOb3JtYWwpOworICAgIFNrVHlwZWZhY2UqIHR5cGVmYWNlID0gMDsKICAg
ICBGb250UGxhdGZvcm1EYXRhKiByZXN1bHQgPSAwOwotCi0gICAgLy8gQ3JlYXRlRnJvbU5hbWUg
YWx3YXlzIHJldHVybnMgYSB0eXBlZmFjZSwgZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCBmb250
Ci0gICAgLy8gaWYgdGhlIG9uZSByZXF1ZXN0ZWQgY291bGQgbm90IGJlIGZvdW5kLiBDYWxsaW5n
IEVxdWFsKCkgd2l0aCBhIG51bGwKLSAgICAvLyBwb2ludGVyIHdpbGwgY29tcGFyZSB0aGUgcmV0
dXJuZWQgZm9udCBhZ2FpbnN0IHRoZSBkZWZhdWx0LCB3aXRoIHRoZQotICAgIC8vIGNhdmVhdCB0
aGF0IHRoZSBkZWZhdWx0IGlzIGFsd2F5cyBvZiBub3JtYWwgc3R5bGUuIFdoZW4gdGhhdCBoYXBw
ZW5zLAotICAgIC8vIGlnbm9yZSB0aGUgZGVmYXVsdCBmb250IGFuZCBhbGxvdyBXZWJDb3JlIHRv
IHByb3ZpZGUgdGhlIG5leHQgZm9udCBvbiB0aGUKLSAgICAvLyBDU1MgZmFsbGJhY2sgbGlzdC4g
VGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgb2NjdXJzIHdoZW4gdGhlIGZhbWlseSBuYW1lCi0g
ICAgLy8gaXMgYSBjb21tb25seSB1c2VkIGdlbmVyaWMgZmFtaWx5LCB3aGljaCBpcyB0aGUgY2Fz
ZSB3aGVuIGNhbGxlZCBieQotICAgIC8vIGdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKCkgb3Ig
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCgpLiBJbiB0aGF0IGNhc2UKLSAgICAvLyB0aGUgZGVm
YXVsdCBmb250IGlzIGFuIGFjY2VwdGFibGUgcmVzdWx0LgotCi0gICAgaWYgKCFTa1R5cGVmYWNl
OjpFcXVhbCh0eXBlZmFjZSwgMCkgfHwgaXNGYWxsYmFja0ZhbWlseShmYW1pbHkuc3RyaW5nKCkp
KSB7Ci0gICAgICAgIGlmIChzdHlsZSAhPSBTa1R5cGVmYWNlOjprTm9ybWFsKSB7Ci0gICAgICAg
ICAgICB0eXBlZmFjZS0+dW5yZWYoKTsKLSAgICAgICAgICAgIHR5cGVmYWNlID0gU2tUeXBlZmFj
ZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgc3RhdGljX2Nhc3Q8U2tUeXBlZmFjZTo6U3R5bGU+KHN0
eWxlKSk7CisgICAgRmFsbGJhY2tTY3JpcHRzIGZhbGxiYWNrU2NyaXB0ID0gU2tHZXRGYWxsYmFj
a1NjcmlwdEZyb21JRChuYW1lKTsKKyAgICBpZiAoU2tUeXBlZmFjZV9WYWxpZFNjcmlwdChmYWxs
YmFja1NjcmlwdCkpIHsKKyAgICAgICAgdHlwZWZhY2UgPSBTa0NyZWF0ZVR5cGVmYWNlRm9yU2Ny
aXB0KGZhbGxiYWNrU2NyaXB0KTsKKyAgICAgICAgaWYgKHR5cGVmYWNlKQorICAgICAgICAgICAg
cmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2UsIG5hbWUsIGZvbnREZXNjcmlw
dGlvbi5jb21wdXRlZFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAhdHlwZWZhY2UtPmlzQm9sZCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tU
eXBlZmFjZTo6a0l0YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxpYygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9u
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24udGV4dE9yaWVudGF0aW9uKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGVmYWNl
ID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgU2tUeXBlZmFjZTo6a05vcm1hbCk7
CisKKyAgICAgICAgLy8gQ3JlYXRlRnJvbU5hbWUgYWx3YXlzIHJldHVybnMgYSB0eXBlZmFjZSwg
ZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCBmb250CisgICAgICAgIC8vIGlmIHRoZSBvbmUgcmVx
dWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZC4gQ2FsbGluZyBFcXVhbCgpIHdpdGggYSBudWxsCisg
ICAgICAgIC8vIHBvaW50ZXIgd2lsbCBjb21wYXJlIHRoZSByZXR1cm5lZCBmb250IGFnYWluc3Qg
dGhlIGRlZmF1bHQsIHdpdGggdGhlCisgICAgICAgIC8vIGNhdmVhdCB0aGF0IHRoZSBkZWZhdWx0
IGlzIGFsd2F5cyBvZiBub3JtYWwgc3R5bGUuIFdoZW4gdGhhdCBoYXBwZW5zLAorICAgICAgICAv
LyBpZ25vcmUgdGhlIGRlZmF1bHQgZm9udCBhbmQgYWxsb3cgV2ViQ29yZSB0byBwcm92aWRlIHRo
ZSBuZXh0IGZvbnQgb24gdGhlCisgICAgICAgIC8vIENTUyBmYWxsYmFjayBsaXN0LiBUaGUgb25s
eSBleGNlcHRpb24gdG8gdGhpcyBvY2N1cnMgd2hlbiB0aGUgZmFtaWx5IG5hbWUKKyAgICAgICAg
Ly8gaXMgYSBjb21tb25seSB1c2VkIGdlbmVyaWMgZmFtaWx5LCB3aGljaCBpcyB0aGUgY2FzZSB3
aGVuIGNhbGxlZCBieQorICAgICAgICAvLyBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSgpIG9y
IGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoKS4gSW4gdGhhdCBjYXNlCisgICAgICAgIC8vIHRo
ZSBkZWZhdWx0IGZvbnQgaXMgYW4gYWNjZXB0YWJsZSByZXN1bHQuCisKKyAgICAgICAgaWYgKCFT
a1R5cGVmYWNlOjpFcXVhbCh0eXBlZmFjZSwgMCkgfHwgaXNGYWxsYmFja0ZhbWlseShmYW1pbHku
c3RyaW5nKCkpKSB7CisgICAgICAgICAgICAvLyBXZSBoYWQgdG8gdXNlIG5vcm1hbCBzdHlsaW5n
IHRvIHNlZSBpZiB0aGlzIHdhcyBhIGRlZmF1bHQgZm9udC4gSWYKKyAgICAgICAgICAgIC8vIHdl
IG5lZWQgYm9sZCBvciBpdGFsaWMsIHJlcGxhY2Ugd2l0aCB0aGUgY29ycmVjdGVkIHR5cGVmYWNl
LgorICAgICAgICAgICAgaWYgKHN0eWxlICE9IFNrVHlwZWZhY2U6OmtOb3JtYWwpIHsKKyAgICAg
ICAgICAgICAgICB0eXBlZmFjZS0+dW5yZWYoKTsKKyAgICAgICAgICAgICAgICB0eXBlZmFjZSA9
IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRpY19jYXN0PFNrVHlwZWZhY2U6
OlN0eWxlPihzdHlsZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2UsIG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHls
ZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAhdHlwZWZhY2UtPmlzQm9sZCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0l0
YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxpYygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24udGV4dE9y
aWVudGF0aW9uKCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0ID0gbmV3IEZvbnRQbGF0
Zm9ybURhdGEodHlwZWZhY2UsIG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFj
ZTo6a0JvbGQpICYmICF0eXBlZmFjZS0+aXNCb2xkKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtJdGFsaWMpICYmICF0eXBlZmFj
ZS0+aXNJdGFsaWMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSk7CiAgICAgfQogCi0g
ICAgdHlwZWZhY2UtPnVucmVmKCk7CisgICAgU2tTYWZlVW5yZWYodHlwZWZhY2UpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxl
ckhhcmZCdXp6LmNwcAppbmRleCBmMjQ0YTk0YzJlMGJjYWI1ZjM1Y2MyOTdmNjE3ZWNhMTNmM2Rl
MmNkLi5hN2MyNDlkODA3N2E2NTc3N2Q5ZDQ5MDdlOGQ1YTc0MTRkNjQ5MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENv
bnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouY3BwCkBAIC0zNiw2ICsz
NiwxMSBAQAogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKIAorI2lmIE9TKEFORFJPSUQpCisjaW5jbHVkZSAiRm9udENhY2hl
LmgiCisjaW5jbHVkZSAiU2tUeXBlZmFjZV9hbmRyb2lkLmgiCisjZW5kaWYKKwogZXh0ZXJuICJD
IiB7CiAjaW5jbHVkZSAiaGFyZmJ1enotdW5pY29kZS5oIgogfQpAQCAtMTkxLDYgKzE5Niw1MyBA
QCBzdGF0aWMgVUNoYXIzMiBzdXJyb2dhdGVQYWlyQXdhcmVGaXJzdENoYXJhY3Rlcihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZQogICAgIHJldHVybiBjaGFyYWN0ZXJzWzBdOwogfQog
Citjb25zdCBGb250UGxhdGZvcm1EYXRhKiBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmdldENvbXBs
ZXhGb250UGxhdGZvcm1EYXRhKCkKK3sKKyNpZiBPUyhBTkRST0lEKQorICAgIC8vIFRoZXJlIGFy
ZSAyIGtpbmRzIG9mIGZvbnQgb24gQW5kcm9pZDogc3lzdGVtIGZvbnRzIGFuZCBmYWxsYmFjayBm
b250cy4KKyAgICAvLyBTeXN0ZW0gZm9udHMgaGF2ZSBhIG5hbWUsIGFuZCBhcmUgYWNjZXNzaWJs
ZSBpbiBGb250UGxhdGZvcm1EYXRhLgorICAgIC8vIEZhbGxiYWNrIGZvbnRzIGRvIG5vdCBoYXZl
IHNwZWNpZmljIG5hbWVzLCBzbyB0aGV5IGFyZSBub3QgYWNjZXNzaWJsZQorICAgIC8vIGZyb20g
V2ViS2l0IGRpcmVjdGx5LiBUbyBmZWVkIEhhcmZidXp6LCB1c2UgYSB0cmljayB0byBnZXQgY29y
cmVjdAorICAgIC8vIFNrVHlwZWZhY2UgYmFzZWQgb24gc2NyaXB0LgorICAgIEZhbGxiYWNrU2Ny
aXB0cyBmYWxsYmFja1NjcmlwdCA9IGtGYWxsYmFja1NjcmlwdE51bWJlcjsgLy8gaW52YWxpZCBz
Y3JpcHQgdmFsdWUuCisgICAgc3dpdGNoIChtX2l0ZW0uaXRlbS5zY3JpcHQpIHsKKyAgICBjYXNl
IEhCX1NjcmlwdF9BcmFiaWM6CisgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga0FyYWJpY19GYWxs
YmFja1NjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQl9TY3JpcHRfSGVicmV3Ogor
ICAgICAgICBpZiAobV9mb250LT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSA+PSBGb250V2Vp
Z2h0Qm9sZCkKKyAgICAgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga0hlYnJld0JvbGRfRmFsbGJh
Y2tTY3JpcHQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga0hl
YnJld1JlZ3VsYXJfRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEJf
U2NyaXB0X1RoYWk6CisgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga1RoYWlfRmFsbGJhY2tTY3Jp
cHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEJfU2NyaXB0X0FybWVuaWFuOgorICAgICAg
ICBmYWxsYmFja1NjcmlwdCA9IGtBcm1lbmlhbl9GYWxsYmFja1NjcmlwdDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBIQl9TY3JpcHRfR2VvcmdpYW46CisgICAgICAgIGZhbGxiYWNrU2NyaXB0
ID0ga0dlb3JnaWFuX0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhC
X1NjcmlwdF9EZXZhbmFnYXJpOgorICAgICAgICBmYWxsYmFja1NjcmlwdCA9IGtEZXZhbmFnYXJp
X0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhCX1NjcmlwdF9CZW5n
YWxpOgorICAgICAgICBmYWxsYmFja1NjcmlwdCA9IGtCZW5nYWxpX0ZhbGxiYWNrU2NyaXB0Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEhCX1NjcmlwdF9UYW1pbDoKKyAgICAgICAgZmFsbGJh
Y2tTY3JpcHQgPSBrVGFtaWxfRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gZm9udENhY2hlKCkt
PmdldENhY2hlZEZhbGxiYWNrU2NyaXB0Rm9udFBsYXRmb3JtRGF0YShtX2ZvbnQtPmZvbnREZXNj
cmlwdGlvbigpLCBTa0dldEZhbGxiYWNrU2NyaXB0SUQoZmFsbGJhY2tTY3JpcHQpKTsKKyNlbHNl
CisgICAgLy8gT25seSBBbmRyb2lkIG5lZWRzIHRoZSBleHRyYSBsb2dpYy4KKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCiB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6c2V0dXBGb250Rm9y
U2NyaXB0UnVuKCkKIHsKICAgICBGb250RGF0YVZhcmlhbnQgZm9udERhdGFWYXJpYW50ID0gQXV0
b1ZhcmlhbnQ7CkBAIC0yMDgsMjAgKzI2MCwyNSBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6c2V0dXBGb250Rm9yU2NyaXB0UnVuKCkKICAgICBVQ2hhcjMyIGN1cnJlbnQgPSBzdXJyb2dh
dGVQYWlyQXdhcmVGaXJzdENoYXJhY3RlcihzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KCZtX2l0
ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvc10pLCBtX2l0ZW0uaXRlbS5sZW5ndGggLSBtX2l0ZW0u
aXRlbS5wb3MpOwogICAgIGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSA9IG1fZm9udC0+Z2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGN1cnJlbnQsIGZhbHNlLCBmb250RGF0YVZhcmlhbnQpLmZvbnREYXRh
OwogICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnREYXRhLT5m
b250RGF0YUZvckNoYXJhY3RlcignICcpLT5wbGF0Zm9ybURhdGEoKTsKLSAgICBtX2l0ZW0uZmFj
ZSA9IHBsYXRmb3JtRGF0YS5oYXJmYnV6ekZhY2UoKS0+ZmFjZSgpOworCisgICAgY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSogY29tcGxleFBsYXRmb3JtRGF0YSA9IGdldENvbXBsZXhGb250UGxhdGZv
cm1EYXRhKCk7CisgICAgaWYgKCFjb21wbGV4UGxhdGZvcm1EYXRhKQorICAgICAgICBjb21wbGV4
UGxhdGZvcm1EYXRhID0gJnBsYXRmb3JtRGF0YTsKKworICAgIG1faXRlbS5mYWNlID0gY29tcGxl
eFBsYXRmb3JtRGF0YS0+aGFyZmJ1enpGYWNlKCktPmZhY2UoKTsKICAgICAvLyBXZSBvbmx5IG5l
ZWQgdG8gc2V0dXAgZm9udCBmZWF0dXJlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBydW4uCiAg
ICAgaWYgKCFtX2l0ZW0uaXRlbS5wb3MpCiAgICAgICAgIHNldHVwRm9udEZlYXR1cmVzKG1fZm9u
dC0+Zm9udERlc2NyaXB0aW9uKCkuZmVhdHVyZVNldHRpbmdzKCksIG1faXRlbS5mYWNlKTsKLSAg
ICB2b2lkKiBvcGFxdWVQbGF0Zm9ybURhdGEgPSBjb25zdF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEq
PigmcGxhdGZvcm1EYXRhKTsKKyAgICB2b2lkKiBvcGFxdWVQbGF0Zm9ybURhdGEgPSBjb25zdF9j
YXN0PEZvbnRQbGF0Zm9ybURhdGEqPihjb21wbGV4UGxhdGZvcm1EYXRhKTsKICAgICBtX2l0ZW0u
Zm9udC0+dXNlckRhdGEgPSBvcGFxdWVQbGF0Zm9ybURhdGE7CiAKLSAgICBpbnQgc2l6ZSA9IHBs
YXRmb3JtRGF0YS5zaXplKCk7CisgICAgaW50IHNpemUgPSBjb21wbGV4UGxhdGZvcm1EYXRhLT5z
aXplKCk7CiAgICAgbV9pdGVtLmZvbnQtPnhfcHBlbSA9IHNpemU7CiAgICAgbV9pdGVtLmZvbnQt
PnlfcHBlbSA9IHNpemU7CiAgICAgLy8geF8gYW5kIHlfc2NhbGUgYXJlIHRoZSBjb252ZXJzaW9u
IGZhY3RvcnMgZnJvbSBmb250IGRlc2lnbiBzcGFjZSAoZkVtU2l6ZSkgdG8gMS82NHRoIG9mIGRl
dmljZSBwaXhlbHMgaW4gMTYuMTYgZm9ybWF0LgogICAgIGNvbnN0IGludCBkZXZpY2VQaXhlbEZy
YWN0aW9uID0gNjQ7CiAgICAgY29uc3QgaW50IG11bHRpcGx5Rm9yMTZEb3QxNiA9IDEgPDwgMTY7
Ci0gICAgaW50IHNjYWxlID0gZGV2aWNlUGl4ZWxGcmFjdGlvbiAqIHNpemUgKiBtdWx0aXBseUZv
cjE2RG90MTYgLyBwbGF0Zm9ybURhdGEuZW1TaXplSW5Gb250VW5pdHMoKTsKKyAgICBpbnQgc2Nh
bGUgPSBkZXZpY2VQaXhlbEZyYWN0aW9uICogc2l6ZSAqIG11bHRpcGx5Rm9yMTZEb3QxNiAvIGNv
bXBsZXhQbGF0Zm9ybURhdGEtPmVtU2l6ZUluRm9udFVuaXRzKCk7CiAgICAgbV9pdGVtLmZvbnQt
Pnhfc2NhbGUgPSBzY2FsZTsKICAgICBtX2l0ZW0uZm9udC0+eV9zY2FsZSA9IHNjYWxlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29t
cGxleFRleHRDb250cm9sbGVySGFyZkJ1enouaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmgKaW5kZXggMDll
YjhjZDA1ZjUwYmNjMjUwNDI4OTJjM2YwYzJiYjNmODAyOGU3Yy4uMTc1OGEzY2FiYmJkZWY3MmU3
ZTM1ZjcyYWVhZjc2OTAyN2YzOTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENv
bnRyb2xsZXJIYXJmQnV6ei5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBS
ZXR1cm4gdGhlIHdpZHRoIChpbiBweCkgb2YgdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4KICAgICB1
bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxXaWR0aDsgfQogCisgICAgY29u
c3QgRm9udFBsYXRmb3JtRGF0YSogZ2V0Q29tcGxleEZvbnRQbGF0Zm9ybURhdGEoKTsKICAgICB2
b2lkIHNldHVwRm9udEZvclNjcmlwdFJ1bigpOwogICAgIHZvaWQgZGVsZXRlR2x5cGhBcnJheXMo
KTsKICAgICB2b2lkIGNyZWF0ZUdseXBoQXJyYXlzKGludCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138224</attachid>
            <date>2012-04-21 00:46:12 -0700</date>
            <delta_ts>2012-04-21 02:07:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84431-20120421154610.patch</filename>
            <type>text/plain</type>
            <size>12682</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0MTAwNGZhYjhkZDdk
ZjdjYzA4MDFlNmVhZGE2NTczNjZiMGNmMi4uYmY5ODdiMDY3ZDQ1ODQ3YzgzZDc0NmZlODE0NDY0
ZmE5YzBmYmUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTIxICBIYW8g
WmhlbmcgIDx6aGVuZ2hhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb21w
bGV4IHRleHQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDMxCisKKyAgICAgICAgQ29tcGxleCB0ZXh0IHN1cHBv
cnQgaXMgZGlmZmVyZW50IG9uIEFuZHJvaWQgZnJvbSBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAg
IFRoZXJlIGFyZSAyIGtpbmRzIG9mIGZvbnQgb24gQW5kcm9pZDogc3lzdGVtIGZvbnRzIGFuZCBm
YWxsYmFjayBmb250cy4KKyAgICAgICAgU3lzdGVtIGZvbnRzIGhhdmUgYSBuYW1lLCBhbmQgYXJl
IGFjY2Vzc2libGUgaW4gRm9udFBsYXRmb3JtRGF0YS4KKyAgICAgICAgRmFsbGJhY2sgZm9udHMg
ZG8gbm90IGhhdmUgc3BlY2lmaWMgbmFtZXMsIHNvIHRoZXkgYXJlIG5vdCBhY2Nlc3NpYmxlCisg
ICAgICAgIGZyb20gV2ViS2l0IGRpcmVjdGx5LiBUaGVyZSBpcyBvbmUgZm9udCBmb3IgZWFjaCBz
Y3JpcHQgc3VwcG9ydC4KKyAgICAgICAgVG8gZmVlZCBIYXJmYnV6eiwgdXNlIGEgdHJpY2sgdG8g
Z2V0IGNvcnJlY3QgU2tUeXBlZmFjZSBiYXNlZCBvbiBzY3JpcHQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDdXJyZW50IHRl
c3RzIGFyZSBydW5hYmxlIG9uIEFuZHJvaWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKEZvbnRDYWNoZSk6IE1ha2UgQ29tcGxleFRleHRDb250
cm9sbGVyIGZyaWVuZCBvZiBGb250Q2FjaGUgb24gQW5kcm9pZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xs
ZXI6OmdldENvbXBsZXhGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6c2V0dXBGb250Rm9yU2NyaXB0UnVuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5oOgor
ICAgICAgICAoQ29tcGxleFRleHRDb250cm9sbGVyKToKKwogMjAxMi0wNC0xOSAgVGF5IEdyaWdn
ICA8dGdyaWdnQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBIVFRQIGNv
bm5lY3Rpb24gcGVyIGhvc3QgbGltaXQgaW4gUmVzb3VyY2VSZXF1ZXN0QmxhY2tCZXJyeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA4OWU3MWQw
OTI4ZjA5MjY0MzUyNDc0OWMzYjQwNTVmZDZjMmJjYWYzLi45MDYzY2E3YTI4MmE2OTVmODQyYTQ1
ZTgxNTMwZWFmY2RjN2IxYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRG9uJ3Qg
cHVyZ2UgaWYgdGhpcyBjb3VudCBpcyA+IDA7CiAgICAgaW50IG1fcHVyZ2VQcmV2ZW50Q291bnQ7
CiAKLSNpZiBVU0UoQ09SRV9URVhUKQorI2lmIFVTRShDT1JFX1RFWFQpIHx8IE9TKEFORFJPSUQp
CiAgICAgZnJpZW5kIGNsYXNzIENvbXBsZXhUZXh0Q29udHJvbGxlcjsKICNlbmRpZgogICAgIGZy
aWVuZCBjbGFzcyBTaW1wbGVGb250RGF0YTsgLy8gRm9yIGdldENhY2hlZEZvbnREYXRhKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcAppbmRleCA0YWNi
NWZmN2MzNGMzN2VmZGNkMGEzY2EyNjNkZGZmYTIyODdjZWYwLi42ZjA0N2I5YzgzNDIxZDhkNzc3
MjBlMjI5NmY4NzBmYzc4ODA4NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcApAQCAt
MzksNyArMzksNyBAQAogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAKICNpbmNsdWRlICJT
a1BhaW50LmgiCi0jaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2Vf
YW5kcm9pZC5oIgogI2luY2x1ZGUgIlNrVXRpbHMuaCIKIAogI2luY2x1ZGUgPHVuaWNvZGUvbG9j
aWQuaD4KQEAgLTE2NCwzMyArMTY0LDQ2IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAg
aWYgKGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSkKICAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFj
ZTo6a0l0YWxpYzsKIAotICAgIFNrVHlwZWZhY2UqIHR5cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3Jl
YXRlRnJvbU5hbWUobmFtZSwgU2tUeXBlZmFjZTo6a05vcm1hbCk7CisgICAgU2tUeXBlZmFjZSog
dHlwZWZhY2UgPSAwOwogICAgIEZvbnRQbGF0Zm9ybURhdGEqIHJlc3VsdCA9IDA7Ci0KLSAgICAv
LyBDcmVhdGVGcm9tTmFtZSBhbHdheXMgcmV0dXJucyBhIHR5cGVmYWNlLCBmYWxsaW5nIGJhY2sg
dG8gYSBkZWZhdWx0IGZvbnQKLSAgICAvLyBpZiB0aGUgb25lIHJlcXVlc3RlZCBjb3VsZCBub3Qg
YmUgZm91bmQuIENhbGxpbmcgRXF1YWwoKSB3aXRoIGEgbnVsbAotICAgIC8vIHBvaW50ZXIgd2ls
bCBjb21wYXJlIHRoZSByZXR1cm5lZCBmb250IGFnYWluc3QgdGhlIGRlZmF1bHQsIHdpdGggdGhl
Ci0gICAgLy8gY2F2ZWF0IHRoYXQgdGhlIGRlZmF1bHQgaXMgYWx3YXlzIG9mIG5vcm1hbCBzdHls
ZS4gV2hlbiB0aGF0IGhhcHBlbnMsCi0gICAgLy8gaWdub3JlIHRoZSBkZWZhdWx0IGZvbnQgYW5k
IGFsbG93IFdlYkNvcmUgdG8gcHJvdmlkZSB0aGUgbmV4dCBmb250IG9uIHRoZQotICAgIC8vIENT
UyBmYWxsYmFjayBsaXN0LiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBvY2N1cnMgd2hlbiB0
aGUgZmFtaWx5IG5hbWUKLSAgICAvLyBpcyBhIGNvbW1vbmx5IHVzZWQgZ2VuZXJpYyBmYW1pbHks
IHdoaWNoIGlzIHRoZSBjYXNlIHdoZW4gY2FsbGVkIGJ5Ci0gICAgLy8gZ2V0U2ltaWxhckZvbnRQ
bGF0Zm9ybURhdGEoKSBvciBnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KCkuIEluIHRoYXQgY2Fz
ZQotICAgIC8vIHRoZSBkZWZhdWx0IGZvbnQgaXMgYW4gYWNjZXB0YWJsZSByZXN1bHQuCi0KLSAg
ICBpZiAoIVNrVHlwZWZhY2U6OkVxdWFsKHR5cGVmYWNlLCAwKSB8fCBpc0ZhbGxiYWNrRmFtaWx5
KGZhbWlseS5zdHJpbmcoKSkpIHsKLSAgICAgICAgaWYgKHN0eWxlICE9IFNrVHlwZWZhY2U6OmtO
b3JtYWwpIHsKLSAgICAgICAgICAgIHR5cGVmYWNlLT51bnJlZigpOwotICAgICAgICAgICAgdHlw
ZWZhY2UgPSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tTmFtZShuYW1lLCBzdGF0aWNfY2FzdDxTa1R5
cGVmYWNlOjpTdHlsZT4oc3R5bGUpKTsKKyAgICBGYWxsYmFja1NjcmlwdHMgZmFsbGJhY2tTY3Jp
cHQgPSBTa0dldEZhbGxiYWNrU2NyaXB0RnJvbUlEKG5hbWUpOworICAgIGlmIChTa1R5cGVmYWNl
X1ZhbGlkU2NyaXB0KGZhbGxiYWNrU2NyaXB0KSkgeworICAgICAgICB0eXBlZmFjZSA9IFNrQ3Jl
YXRlVHlwZWZhY2VGb3JTY3JpcHQoZmFsbGJhY2tTY3JpcHQpOworICAgICAgICBpZiAodHlwZWZh
Y2UpCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgRm9udFBsYXRmb3JtRGF0YSh0eXBlZmFjZSwg
bmFtZSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYmICF0
eXBlZmFjZS0+aXNCb2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3R5bGUgJiBTa1R5cGVmYWNlOjprSXRhbGljKSAmJiAhdHlwZWZhY2UtPmlzSXRhbGlj
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24ub3JpZW50YXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdHlwZWZhY2UgPSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tTmFtZShuYW1lLCBTa1R5
cGVmYWNlOjprTm9ybWFsKTsKKworICAgICAgICAvLyBDcmVhdGVGcm9tTmFtZSBhbHdheXMgcmV0
dXJucyBhIHR5cGVmYWNlLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQKKyAgICAgICAg
Ly8gaWYgdGhlIG9uZSByZXF1ZXN0ZWQgY291bGQgbm90IGJlIGZvdW5kLiBDYWxsaW5nIEVxdWFs
KCkgd2l0aCBhIG51bGwKKyAgICAgICAgLy8gcG9pbnRlciB3aWxsIGNvbXBhcmUgdGhlIHJldHVy
bmVkIGZvbnQgYWdhaW5zdCB0aGUgZGVmYXVsdCwgd2l0aCB0aGUKKyAgICAgICAgLy8gY2F2ZWF0
IHRoYXQgdGhlIGRlZmF1bHQgaXMgYWx3YXlzIG9mIG5vcm1hbCBzdHlsZS4gV2hlbiB0aGF0IGhh
cHBlbnMsCisgICAgICAgIC8vIGlnbm9yZSB0aGUgZGVmYXVsdCBmb250IGFuZCBhbGxvdyBXZWJD
b3JlIHRvIHByb3ZpZGUgdGhlIG5leHQgZm9udCBvbiB0aGUKKyAgICAgICAgLy8gQ1NTIGZhbGxi
YWNrIGxpc3QuIFRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIG9jY3VycyB3aGVuIHRoZSBmYW1p
bHkgbmFtZQorICAgICAgICAvLyBpcyBhIGNvbW1vbmx5IHVzZWQgZ2VuZXJpYyBmYW1pbHksIHdo
aWNoIGlzIHRoZSBjYXNlIHdoZW4gY2FsbGVkIGJ5CisgICAgICAgIC8vIGdldFNpbWlsYXJGb250
UGxhdGZvcm1EYXRhKCkgb3IgZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCgpLiBJbiB0aGF0IGNh
c2UKKyAgICAgICAgLy8gdGhlIGRlZmF1bHQgZm9udCBpcyBhbiBhY2NlcHRhYmxlIHJlc3VsdC4K
KworICAgICAgICBpZiAoIVNrVHlwZWZhY2U6OkVxdWFsKHR5cGVmYWNlLCAwKSB8fCBpc0ZhbGxi
YWNrRmFtaWx5KGZhbWlseS5zdHJpbmcoKSkpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhZCB0byB1
c2Ugbm9ybWFsIHN0eWxpbmcgdG8gc2VlIGlmIHRoaXMgd2FzIGEgZGVmYXVsdCBmb250LiBJZgor
ICAgICAgICAgICAgLy8gd2UgbmVlZCBib2xkIG9yIGl0YWxpYywgcmVwbGFjZSB3aXRoIHRoZSBj
b3JyZWN0ZWQgdHlwZWZhY2UuCisgICAgICAgICAgICBpZiAoc3R5bGUgIT0gU2tUeXBlZmFjZTo6
a05vcm1hbCkgeworICAgICAgICAgICAgICAgIHR5cGVmYWNlLT51bnJlZigpOworICAgICAgICAg
ICAgICAgIHR5cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgc3RhdGlj
X2Nhc3Q8U2tUeXBlZmFjZTo6U3R5bGU+KHN0eWxlKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXN1bHQgPSBuZXcgRm9udFBsYXRmb3JtRGF0YSh0eXBlZmFjZSwgbmFtZSwgZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYmICF0eXBlZmFjZS0+aXNC
b2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUg
JiBTa1R5cGVmYWNlOjprSXRhbGljKSAmJiAhdHlwZWZhY2UtPmlzSXRhbGljKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24ub3JpZW50
YXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXN1
bHQgPSBuZXcgRm9udFBsYXRmb3JtRGF0YSh0eXBlZmFjZSwgbmFtZSwgZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkU2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3R5bGUgJiBTa1R5cGVmYWNlOjprQm9sZCkgJiYgIXR5cGVmYWNlLT5pc0JvbGQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0l0
YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxpYygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlv
bigpKTsKICAgICB9CiAKLSAgICB0eXBlZmFjZS0+dW5yZWYoKTsKKyAgICBTa1NhZmVVbnJlZih0
eXBlZmFjZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFy
ZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29t
cGxleFRleHRDb250cm9sbGVySGFyZkJ1enouY3BwCmluZGV4IGYyNDRhOTRjMmUwYmNhYjVmMzVj
YzI5N2Y2MTdlY2ExM2YzZGUyY2QuLjk5MTYwMWE0ZDZjYTcxZTgyNWQwNTBhMDY4YjIxYzExNjBh
YWNiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6
ei5jcHAKQEAgLTM2LDYgKzM2LDExIEBACiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJlVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogCisjaWYgT1MoQU5EUk9JRCkKKyNp
bmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJTa1R5cGVmYWNlX2FuZHJvaWQuaCIKKyNl
bmRpZgorCiBleHRlcm4gIkMiIHsKICNpbmNsdWRlICJoYXJmYnV6ei11bmljb2RlLmgiCiB9CkBA
IC0xODEsNiArMTg2LDQ5IEBAIHN0YXRpYyB2b2lkIHNldHVwRm9udEZlYXR1cmVzKGNvbnN0IEZv
bnRGZWF0dXJlU2V0dGluZ3MqIHNldHRpbmdzLCBIQl9GYWNlUmVjXyoKICAgICB9CiB9CiAKKyNp
ZiBPUyhBTkRST0lEKQorY29uc3QgRm9udFBsYXRmb3JtRGF0YSogQ29tcGxleFRleHRDb250cm9s
bGVyOjpnZXRDb21wbGV4Rm9udFBsYXRmb3JtRGF0YSgpCit7CisgICAgLy8gVGhlcmUgYXJlIDIg
a2luZHMgb2YgZm9udCBvbiBBbmRyb2lkOiBzeXN0ZW0gZm9udHMgYW5kIGZhbGxiYWNrIGZvbnRz
LgorICAgIC8vIFN5c3RlbSBmb250cyBoYXZlIGEgbmFtZSwgYW5kIGFyZSBhY2Nlc3NpYmxlIGlu
IEZvbnRQbGF0Zm9ybURhdGEuCisgICAgLy8gRmFsbGJhY2sgZm9udHMgZG8gbm90IGhhdmUgc3Bl
Y2lmaWMgbmFtZXMsIHNvIHRoZXkgYXJlIG5vdCBhY2Nlc3NpYmxlCisgICAgLy8gZnJvbSBXZWJL
aXQgZGlyZWN0bHkuIFRvIGZlZWQgSGFyZmJ1enosIHVzZSBhIHRyaWNrIHRvIGdldCBjb3JyZWN0
CisgICAgLy8gU2tUeXBlZmFjZSBiYXNlZCBvbiBzY3JpcHQuCisgICAgRmFsbGJhY2tTY3JpcHRz
IGZhbGxiYWNrU2NyaXB0ID0ga0ZhbGxiYWNrU2NyaXB0TnVtYmVyOyAvLyBpbnZhbGlkIHNjcmlw
dCB2YWx1ZS4KKyAgICBzd2l0Y2ggKG1faXRlbS5pdGVtLnNjcmlwdCkgeworICAgIGNhc2UgSEJf
U2NyaXB0X0FyYWJpYzoKKyAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBrQXJhYmljX0ZhbGxiYWNr
U2NyaXB0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhCX1NjcmlwdF9IZWJyZXc6CisgICAg
ICAgIGlmIChtX2ZvbnQtPmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpID49IEZvbnRXZWlnaHRC
b2xkKQorICAgICAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBrSGVicmV3Qm9sZF9GYWxsYmFja1Nj
cmlwdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBrSGVicmV3
UmVndWxhcl9GYWxsYmFja1NjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQl9TY3Jp
cHRfVGhhaToKKyAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBrVGhhaV9GYWxsYmFja1NjcmlwdDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQl9TY3JpcHRfQXJtZW5pYW46CisgICAgICAgIGZh
bGxiYWNrU2NyaXB0ID0ga0FybWVuaWFuX0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEhCX1NjcmlwdF9HZW9yZ2lhbjoKKyAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBr
R2VvcmdpYW5fRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEJfU2Ny
aXB0X0RldmFuYWdhcmk6CisgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga0RldmFuYWdhcmlfRmFs
bGJhY2tTY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEJfU2NyaXB0X0JlbmdhbGk6
CisgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0ga0JlbmdhbGlfRmFsbGJhY2tTY3JpcHQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSEJfU2NyaXB0X1RhbWlsOgorICAgICAgICBmYWxsYmFja1Nj
cmlwdCA9IGtUYW1pbF9GYWxsYmFja1NjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBmb250Q2FjaGUoKS0+Z2V0
Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShtX2ZvbnQtPmZvbnREZXNjcmlwdGlvbigpLCBTa0dldEZh
bGxiYWNrU2NyaXB0SUQoZmFsbGJhY2tTY3JpcHQpLCB0cnVlKTsKK30KKyNlbHNlCiBzdGF0aWMg
VUNoYXIzMiBzdXJyb2dhdGVQYWlyQXdhcmVGaXJzdENoYXJhY3Rlcihjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChVMTZfSVNfU1VSUk9HQVRFKGNo
YXJhY3RlcnNbMF0pKSB7CkBAIC0xOTEsNiArMjM5LDE1IEBAIHN0YXRpYyBVQ2hhcjMyIHN1cnJv
Z2F0ZVBhaXJBd2FyZUZpcnN0Q2hhcmFjdGVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNbMF07CiB9CiAKK2NvbnN0IEZvbnRQbGF0Zm9ybURh
dGEqIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Z2V0Q29tcGxleEZvbnRQbGF0Zm9ybURhdGEoKQor
eworICAgIC8vIE5vcm1hbCBsb2dpYyBmb3Igb3RoZXIgcGxhdGZvcm1zLgorICAgIFVDaGFyMzIg
Y3VycmVudCA9IHN1cnJvZ2F0ZVBhaXJBd2FyZUZpcnN0Q2hhcmFjdGVyKHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4oJm1faXRlbS5zdHJpbmdbbV9pdGVtLml0ZW0ucG9zXSksIG1faXRlbS5pdGVt
Lmxlbmd0aCAtIG1faXRlbS5pdGVtLnBvcyk7CisgICAgY29uc3QgRm9udERhdGEqIGZvbnREYXRh
ID0gbV9mb250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoY3VycmVudCwgZmFsc2UsIGZvbnREYXRh
VmFyaWFudCkuZm9udERhdGE7CisgICAgcmV0dXJuICZmb250RGF0YS0+Zm9udERhdGFGb3JDaGFy
YWN0ZXIoJyAnKS0+cGxhdGZvcm1EYXRhKCk7Cit9CisjZW5kaWYKKwogdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OnNldHVwRm9udEZvclNjcmlwdFJ1bigpCiB7CiAgICAgRm9udERhdGFWYXJp
YW50IGZvbnREYXRhVmFyaWFudCA9IEF1dG9WYXJpYW50OwpAQCAtMjA1LDIzICsyNjIsMjEgQEAg
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OnNldHVwRm9udEZvclNjcmlwdFJ1bigpCiAgICAg
ICAgIG1faXRlbS5pdGVtLnBvcyA9IDA7CiAgICAgICAgIGZvbnREYXRhVmFyaWFudCA9IFNtYWxs
Q2Fwc1ZhcmlhbnQ7CiAgICAgfQotICAgIFVDaGFyMzIgY3VycmVudCA9IHN1cnJvZ2F0ZVBhaXJB
d2FyZUZpcnN0Q2hhcmFjdGVyKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oJm1faXRlbS5zdHJp
bmdbbV9pdGVtLml0ZW0ucG9zXSksIG1faXRlbS5pdGVtLmxlbmd0aCAtIG1faXRlbS5pdGVtLnBv
cyk7Ci0gICAgY29uc3QgRm9udERhdGEqIGZvbnREYXRhID0gbV9mb250LT5nbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY3VycmVudCwgZmFsc2UsIGZvbnREYXRhVmFyaWFudCkuZm9udERhdGE7Ci0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udERhdGEtPmZvbnREYXRh
Rm9yQ2hhcmFjdGVyKCcgJyktPnBsYXRmb3JtRGF0YSgpOwotICAgIG1faXRlbS5mYWNlID0gcGxh
dGZvcm1EYXRhLmhhcmZidXp6RmFjZSgpLT5mYWNlKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSogcGxhdGZvcm1EYXRhID0gZ2V0Q29tcGxleEZvbnRQbGF0Zm9ybURhdGEoKTsKKyAgICBt
X2l0ZW0uZmFjZSA9IHBsYXRmb3JtRGF0YS0+aGFyZmJ1enpGYWNlKCktPmZhY2UoKTsKICAgICAv
LyBXZSBvbmx5IG5lZWQgdG8gc2V0dXAgZm9udCBmZWF0dXJlcyBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBydW4uCiAgICAgaWYgKCFtX2l0ZW0uaXRlbS5wb3MpCiAgICAgICAgIHNldHVwRm9udEZl
YXR1cmVzKG1fZm9udC0+Zm9udERlc2NyaXB0aW9uKCkuZmVhdHVyZVNldHRpbmdzKCksIG1faXRl
bS5mYWNlKTsKLSAgICB2b2lkKiBvcGFxdWVQbGF0Zm9ybURhdGEgPSBjb25zdF9jYXN0PEZvbnRQ
bGF0Zm9ybURhdGEqPigmcGxhdGZvcm1EYXRhKTsKKyAgICB2b2lkKiBvcGFxdWVQbGF0Zm9ybURh
dGEgPSBjb25zdF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEqPihwbGF0Zm9ybURhdGEpOwogICAgIG1f
aXRlbS5mb250LT51c2VyRGF0YSA9IG9wYXF1ZVBsYXRmb3JtRGF0YTsKIAotICAgIGludCBzaXpl
ID0gcGxhdGZvcm1EYXRhLnNpemUoKTsKKyAgICBpbnQgc2l6ZSA9IHBsYXRmb3JtRGF0YS0+c2l6
ZSgpOwogICAgIG1faXRlbS5mb250LT54X3BwZW0gPSBzaXplOwogICAgIG1faXRlbS5mb250LT55
X3BwZW0gPSBzaXplOwogICAgIC8vIHhfIGFuZCB5X3NjYWxlIGFyZSB0aGUgY29udmVyc2lvbiBm
YWN0b3JzIGZyb20gZm9udCBkZXNpZ24gc3BhY2UgKGZFbVNpemUpIHRvIDEvNjR0aCBvZiBkZXZp
Y2UgcGl4ZWxzIGluIDE2LjE2IGZvcm1hdC4KICAgICBjb25zdCBpbnQgZGV2aWNlUGl4ZWxGcmFj
dGlvbiA9IDY0OwogICAgIGNvbnN0IGludCBtdWx0aXBseUZvcjE2RG90MTYgPSAxIDw8IDE2Owot
ICAgIGludCBzY2FsZSA9IGRldmljZVBpeGVsRnJhY3Rpb24gKiBzaXplICogbXVsdGlwbHlGb3Ix
NkRvdDE2IC8gcGxhdGZvcm1EYXRhLmVtU2l6ZUluRm9udFVuaXRzKCk7CisgICAgaW50IHNjYWxl
ID0gZGV2aWNlUGl4ZWxGcmFjdGlvbiAqIHNpemUgKiBtdWx0aXBseUZvcjE2RG90MTYgLyBwbGF0
Zm9ybURhdGEtPmVtU2l6ZUluRm9udFVuaXRzKCk7CiAgICAgbV9pdGVtLmZvbnQtPnhfc2NhbGUg
PSBzY2FsZTsKICAgICBtX2l0ZW0uZm9udC0+eV9zY2FsZSA9IHNjYWxlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRD
b250cm9sbGVySGFyZkJ1enouaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmgKaW5kZXggMDllYjhjZDA1ZjUw
YmNjMjUwNDI4OTJjM2YwYzJiYjNmODAyOGU3Yy4uMTc1OGEzY2FiYmJkZWY3MmU3ZTM1ZjcyYWVh
Zjc2OTAyN2YzOTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJI
YXJmQnV6ei5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm4gdGhl
IHdpZHRoIChpbiBweCkgb2YgdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4KICAgICB1bnNpZ25lZCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxXaWR0aDsgfQogCisgICAgY29uc3QgRm9udFBs
YXRmb3JtRGF0YSogZ2V0Q29tcGxleEZvbnRQbGF0Zm9ybURhdGEoKTsKICAgICB2b2lkIHNldHVw
Rm9udEZvclNjcmlwdFJ1bigpOwogICAgIHZvaWQgZGVsZXRlR2x5cGhBcnJheXMoKTsKICAgICB2
b2lkIGNyZWF0ZUdseXBoQXJyYXlzKGludCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138228</attachid>
            <date>2012-04-21 02:07:42 -0700</date>
            <delta_ts>2012-04-26 14:50:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84431-20120421170740.patch</filename>
            <type>text/plain</type>
            <size>12419</size>
            <attacher name="Hao Zheng">zhenghao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0MTAwNGZhYjhkZDdk
ZjdjYzA4MDFlNmVhZGE2NTczNjZiMGNmMi4uMDE1NjViOTAwMTY5MmY4Zjg0NDIzNjc4YTg5ODNj
ZjhlMzUzY2ZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTIxICBIYW8g
WmhlbmcgIDx6aGVuZ2hhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb21w
bGV4IHRleHQgc3VwcG9ydCBmb3IgQW5kcm9pZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDMxCisKKyAgICAgICAgQ29tcGxleCB0ZXh0IHN1cHBv
cnQgaXMgZGlmZmVyZW50IG9uIEFuZHJvaWQgZnJvbSBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAg
IFRoZXJlIGFyZSAyIGtpbmRzIG9mIGZvbnQgb24gQW5kcm9pZDogc3lzdGVtIGZvbnRzIGFuZCBm
YWxsYmFjayBmb250cy4KKyAgICAgICAgU3lzdGVtIGZvbnRzIGhhdmUgYSBuYW1lLCBhbmQgYXJl
IGFjY2Vzc2libGUgaW4gRm9udFBsYXRmb3JtRGF0YS4KKyAgICAgICAgRmFsbGJhY2sgZm9udHMg
ZG8gbm90IGhhdmUgc3BlY2lmaWMgbmFtZXMsIHNvIHRoZXkgYXJlIG5vdCBhY2Nlc3NpYmxlCisg
ICAgICAgIGZyb20gV2ViS2l0IGRpcmVjdGx5LiBUaGVyZSBpcyBvbmUgZm9udCBmb3IgZWFjaCBz
Y3JpcHQgc3VwcG9ydC4KKyAgICAgICAgVG8gZmVlZCBIYXJmYnV6eiwgdXNlIGEgdHJpY2sgdG8g
Z2V0IGNvcnJlY3QgU2tUeXBlZmFjZSBiYXNlZCBvbiBzY3JpcHQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDdXJyZW50IHRl
c3RzIGFyZSBydW5uYWJsZSBvbiBBbmRyb2lkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmg6CisgICAgICAgIChGb250Q2FjaGUpOiBNYWtlIENvbXBsZXhUZXh0Q29u
dHJvbGxlciBmcmllbmQgb2YgRm9udENhY2hlIG9uIEFuZHJvaWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Z2V0Q29tcGxleEZvbnRQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
bGV4VGV4dENvbnRyb2xsZXI6OnNldHVwRm9udEZvclNjcmlwdFJ1bik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouaDoK
KyAgICAgICAgKENvbXBsZXhUZXh0Q29udHJvbGxlcik6CisKIDIwMTItMDQtMTkgIFRheSBHcmln
ZyAgPHRncmlnZ0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBVcGRhdGUgSFRUUCBj
b25uZWN0aW9uIHBlciBob3N0IGxpbWl0IGluIFJlc291cmNlUmVxdWVzdEJsYWNrQmVycnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggODllNzFk
MDkyOGYwOTI2NDM1MjQ3NDljM2I0MDU1ZmQ2YzJiY2FmMy4uOTA2M2NhN2EyODJhNjk1Zjg0MmE0
NWU4MTUzMGVhZmNkYzdiMWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIC8vIERvbid0
IHB1cmdlIGlmIHRoaXMgY291bnQgaXMgPiAwOwogICAgIGludCBtX3B1cmdlUHJldmVudENvdW50
OwogCi0jaWYgVVNFKENPUkVfVEVYVCkKKyNpZiBVU0UoQ09SRV9URVhUKSB8fCBPUyhBTkRST0lE
KQogICAgIGZyaWVuZCBjbGFzcyBDb21wbGV4VGV4dENvbnRyb2xsZXI7CiAjZW5kaWYKICAgICBm
cmllbmQgY2xhc3MgU2ltcGxlRm9udERhdGE7IC8vIEZvciBnZXRDYWNoZWRGb250RGF0YShjb25z
dCBGb250UGxhdGZvcm1EYXRhKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKaW5kZXggNGFj
YjVmZjdjMzRjMzdlZmRjZDBhM2NhMjYzZGRmZmEyMjg3Y2VmMC4uNmYwNDdiOWM4MzQyMWQ4ZDc3
NzIwZTIyOTZmODcwZmM3ODgwODVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogCiAjaW5jbHVkZSAi
U2tQYWludC5oIgotI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJTa1R5cGVmYWNl
X2FuZHJvaWQuaCIKICNpbmNsdWRlICJTa1V0aWxzLmgiCiAKICNpbmNsdWRlIDx1bmljb2RlL2xv
Y2lkLmg+CkBAIC0xNjQsMzMgKzE2NCw0NiBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAg
IGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCiAgICAgICAgIHN0eWxlIHw9IFNrVHlwZWZh
Y2U6OmtJdGFsaWM7CiAKLSAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNy
ZWF0ZUZyb21OYW1lKG5hbWUsIFNrVHlwZWZhY2U6OmtOb3JtYWwpOworICAgIFNrVHlwZWZhY2Uq
IHR5cGVmYWNlID0gMDsKICAgICBGb250UGxhdGZvcm1EYXRhKiByZXN1bHQgPSAwOwotCi0gICAg
Ly8gQ3JlYXRlRnJvbU5hbWUgYWx3YXlzIHJldHVybnMgYSB0eXBlZmFjZSwgZmFsbGluZyBiYWNr
IHRvIGEgZGVmYXVsdCBmb250Ci0gICAgLy8gaWYgdGhlIG9uZSByZXF1ZXN0ZWQgY291bGQgbm90
IGJlIGZvdW5kLiBDYWxsaW5nIEVxdWFsKCkgd2l0aCBhIG51bGwKLSAgICAvLyBwb2ludGVyIHdp
bGwgY29tcGFyZSB0aGUgcmV0dXJuZWQgZm9udCBhZ2FpbnN0IHRoZSBkZWZhdWx0LCB3aXRoIHRo
ZQotICAgIC8vIGNhdmVhdCB0aGF0IHRoZSBkZWZhdWx0IGlzIGFsd2F5cyBvZiBub3JtYWwgc3R5
bGUuIFdoZW4gdGhhdCBoYXBwZW5zLAotICAgIC8vIGlnbm9yZSB0aGUgZGVmYXVsdCBmb250IGFu
ZCBhbGxvdyBXZWJDb3JlIHRvIHByb3ZpZGUgdGhlIG5leHQgZm9udCBvbiB0aGUKLSAgICAvLyBD
U1MgZmFsbGJhY2sgbGlzdC4gVGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgb2NjdXJzIHdoZW4g
dGhlIGZhbWlseSBuYW1lCi0gICAgLy8gaXMgYSBjb21tb25seSB1c2VkIGdlbmVyaWMgZmFtaWx5
LCB3aGljaCBpcyB0aGUgY2FzZSB3aGVuIGNhbGxlZCBieQotICAgIC8vIGdldFNpbWlsYXJGb250
UGxhdGZvcm1EYXRhKCkgb3IgZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCgpLiBJbiB0aGF0IGNh
c2UKLSAgICAvLyB0aGUgZGVmYXVsdCBmb250IGlzIGFuIGFjY2VwdGFibGUgcmVzdWx0LgotCi0g
ICAgaWYgKCFTa1R5cGVmYWNlOjpFcXVhbCh0eXBlZmFjZSwgMCkgfHwgaXNGYWxsYmFja0ZhbWls
eShmYW1pbHkuc3RyaW5nKCkpKSB7Ci0gICAgICAgIGlmIChzdHlsZSAhPSBTa1R5cGVmYWNlOjpr
Tm9ybWFsKSB7Ci0gICAgICAgICAgICB0eXBlZmFjZS0+dW5yZWYoKTsKLSAgICAgICAgICAgIHR5
cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgc3RhdGljX2Nhc3Q8U2tU
eXBlZmFjZTo6U3R5bGU+KHN0eWxlKSk7CisgICAgRmFsbGJhY2tTY3JpcHRzIGZhbGxiYWNrU2Ny
aXB0ID0gU2tHZXRGYWxsYmFja1NjcmlwdEZyb21JRChuYW1lKTsKKyAgICBpZiAoU2tUeXBlZmFj
ZV9WYWxpZFNjcmlwdChmYWxsYmFja1NjcmlwdCkpIHsKKyAgICAgICAgdHlwZWZhY2UgPSBTa0Ny
ZWF0ZVR5cGVmYWNlRm9yU2NyaXB0KGZhbGxiYWNrU2NyaXB0KTsKKyAgICAgICAgaWYgKHR5cGVm
YWNlKQorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2Us
IG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAh
dHlwZWZhY2UtPmlzQm9sZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0l0YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxp
YygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLm9yaWVudGF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHR5cGVmYWNlID0gU2tUeXBlZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgU2tU
eXBlZmFjZTo6a05vcm1hbCk7CisKKyAgICAgICAgLy8gQ3JlYXRlRnJvbU5hbWUgYWx3YXlzIHJl
dHVybnMgYSB0eXBlZmFjZSwgZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCBmb250CisgICAgICAg
IC8vIGlmIHRoZSBvbmUgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZC4gQ2FsbGluZyBFcXVh
bCgpIHdpdGggYSBudWxsCisgICAgICAgIC8vIHBvaW50ZXIgd2lsbCBjb21wYXJlIHRoZSByZXR1
cm5lZCBmb250IGFnYWluc3QgdGhlIGRlZmF1bHQsIHdpdGggdGhlCisgICAgICAgIC8vIGNhdmVh
dCB0aGF0IHRoZSBkZWZhdWx0IGlzIGFsd2F5cyBvZiBub3JtYWwgc3R5bGUuIFdoZW4gdGhhdCBo
YXBwZW5zLAorICAgICAgICAvLyBpZ25vcmUgdGhlIGRlZmF1bHQgZm9udCBhbmQgYWxsb3cgV2Vi
Q29yZSB0byBwcm92aWRlIHRoZSBuZXh0IGZvbnQgb24gdGhlCisgICAgICAgIC8vIENTUyBmYWxs
YmFjayBsaXN0LiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBvY2N1cnMgd2hlbiB0aGUgZmFt
aWx5IG5hbWUKKyAgICAgICAgLy8gaXMgYSBjb21tb25seSB1c2VkIGdlbmVyaWMgZmFtaWx5LCB3
aGljaCBpcyB0aGUgY2FzZSB3aGVuIGNhbGxlZCBieQorICAgICAgICAvLyBnZXRTaW1pbGFyRm9u
dFBsYXRmb3JtRGF0YSgpIG9yIGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoKS4gSW4gdGhhdCBj
YXNlCisgICAgICAgIC8vIHRoZSBkZWZhdWx0IGZvbnQgaXMgYW4gYWNjZXB0YWJsZSByZXN1bHQu
CisKKyAgICAgICAgaWYgKCFTa1R5cGVmYWNlOjpFcXVhbCh0eXBlZmFjZSwgMCkgfHwgaXNGYWxs
YmFja0ZhbWlseShmYW1pbHkuc3RyaW5nKCkpKSB7CisgICAgICAgICAgICAvLyBXZSBoYWQgdG8g
dXNlIG5vcm1hbCBzdHlsaW5nIHRvIHNlZSBpZiB0aGlzIHdhcyBhIGRlZmF1bHQgZm9udC4gSWYK
KyAgICAgICAgICAgIC8vIHdlIG5lZWQgYm9sZCBvciBpdGFsaWMsIHJlcGxhY2Ugd2l0aCB0aGUg
Y29ycmVjdGVkIHR5cGVmYWNlLgorICAgICAgICAgICAgaWYgKHN0eWxlICE9IFNrVHlwZWZhY2U6
OmtOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICB0eXBlZmFjZS0+dW5yZWYoKTsKKyAgICAgICAg
ICAgICAgICB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRp
Y19jYXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2UsIG5hbWUsIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtCb2xkKSAmJiAhdHlwZWZhY2UtPmlz
Qm9sZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxl
ICYgU2tUeXBlZmFjZTo6a0l0YWxpYykgJiYgIXR5cGVmYWNlLT5pc0l0YWxpYygpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24udGV4dE9yaWVudGF0aW9uKCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmVz
dWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlwZWZhY2UsIG5hbWUsIGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYmICF0eXBlZmFjZS0+aXNCb2xkKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtJ
dGFsaWMpICYmICF0eXBlZmFjZS0+aXNJdGFsaWMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRp
b24oKSk7CiAgICAgfQogCi0gICAgdHlwZWZhY2UtPnVucmVmKCk7CisgICAgU2tTYWZlVW5yZWYo
dHlwZWZhY2UpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhh
cmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0Nv
bXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCBmMjQ0YTk0YzJlMGJjYWI1ZjM1
Y2MyOTdmNjE3ZWNhMTNmM2RlMmNkLi5iYTQ2YzdmMDIxZDNiZDNlYmY1YjdiY2I3YjBkMDgzODM2
YWMxODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1
enouY3BwCkBAIC0zNiw2ICszNiwxMSBAQAogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKIAorI2lmIE9TKEFORFJPSUQpCisj
aW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiU2tUeXBlZmFjZV9hbmRyb2lkLmgiCisj
ZW5kaWYKKwogZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSAiaGFyZmJ1enotdW5pY29kZS5oIgogfQpA
QCAtMTkxLDYgKzE5Niw1MyBAQCBzdGF0aWMgVUNoYXIzMiBzdXJyb2dhdGVQYWlyQXdhcmVGaXJz
dENoYXJhY3Rlcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZQogICAgIHJldHVybiBj
aGFyYWN0ZXJzWzBdOwogfQogCitjb25zdCBGb250UGxhdGZvcm1EYXRhKiBDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmdldENvbXBsZXhGb250UGxhdGZvcm1EYXRhKCkKK3sKKyNpZiBPUyhBTkRST0lE
KQorICAgIC8vIFRoZXJlIGFyZSAyIGtpbmRzIG9mIGZvbnQgb24gQW5kcm9pZDogc3lzdGVtIGZv
bnRzIGFuZCBmYWxsYmFjayBmb250cy4KKyAgICAvLyBTeXN0ZW0gZm9udHMgaGF2ZSBhIG5hbWUs
IGFuZCBhcmUgYWNjZXNzaWJsZSBpbiBGb250UGxhdGZvcm1EYXRhLgorICAgIC8vIEZhbGxiYWNr
IGZvbnRzIGRvIG5vdCBoYXZlIHNwZWNpZmljIG5hbWVzLCBzbyB0aGV5IGFyZSBub3QgYWNjZXNz
aWJsZQorICAgIC8vIGZyb20gV2ViS2l0IGRpcmVjdGx5LiBUbyBmZWVkIEhhcmZidXp6LCB1c2Ug
YSB0cmljayB0byBnZXQgY29ycmVjdAorICAgIC8vIFNrVHlwZWZhY2UgYmFzZWQgb24gc2NyaXB0
LgorICAgIEZhbGxiYWNrU2NyaXB0cyBmYWxsYmFja1NjcmlwdCA9IGtGYWxsYmFja1NjcmlwdE51
bWJlcjsgLy8gaW52YWxpZCBzY3JpcHQgdmFsdWUuCisgICAgc3dpdGNoIChtX2l0ZW0uaXRlbS5z
Y3JpcHQpIHsKKyAgICBjYXNlIEhCX1NjcmlwdF9BcmFiaWM6CisgICAgICAgIGZhbGxiYWNrU2Ny
aXB0ID0ga0FyYWJpY19GYWxsYmFja1NjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBI
Ql9TY3JpcHRfSGVicmV3OgorICAgICAgICBpZiAobV9mb250LT5mb250RGVzY3JpcHRpb24oKS53
ZWlnaHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0g
a0hlYnJld0JvbGRfRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZh
bGxiYWNrU2NyaXB0ID0ga0hlYnJld1JlZ3VsYXJfRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSEJfU2NyaXB0X1RoYWk6CisgICAgICAgIGZhbGxiYWNrU2NyaXB0ID0g
a1RoYWlfRmFsbGJhY2tTY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSEJfU2NyaXB0
X0FybWVuaWFuOgorICAgICAgICBmYWxsYmFja1NjcmlwdCA9IGtBcm1lbmlhbl9GYWxsYmFja1Nj
cmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIQl9TY3JpcHRfR2VvcmdpYW46CisgICAg
ICAgIGZhbGxiYWNrU2NyaXB0ID0ga0dlb3JnaWFuX0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEhCX1NjcmlwdF9EZXZhbmFnYXJpOgorICAgICAgICBmYWxsYmFja1Nj
cmlwdCA9IGtEZXZhbmFnYXJpX0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEhCX1NjcmlwdF9CZW5nYWxpOgorICAgICAgICBmYWxsYmFja1NjcmlwdCA9IGtCZW5nYWxp
X0ZhbGxiYWNrU2NyaXB0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhCX1NjcmlwdF9UYW1p
bDoKKyAgICAgICAgZmFsbGJhY2tTY3JpcHQgPSBrVGFtaWxfRmFsbGJhY2tTY3JpcHQ7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBy
ZXR1cm4gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEobV9mb250LT5mb250
RGVzY3JpcHRpb24oKSwgU2tHZXRGYWxsYmFja1NjcmlwdElEKGZhbGxiYWNrU2NyaXB0KSwgdHJ1
ZSk7CisjZWxzZQorICAgIC8vIE9ubHkgQW5kcm9pZCBuZWVkcyB0aGUgZXh0cmEgbG9naWMuCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OnNl
dHVwRm9udEZvclNjcmlwdFJ1bigpCiB7CiAgICAgRm9udERhdGFWYXJpYW50IGZvbnREYXRhVmFy
aWFudCA9IEF1dG9WYXJpYW50OwpAQCAtMjA1LDIzICsyNTcsMjYgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OnNldHVwRm9udEZvclNjcmlwdFJ1bigpCiAgICAgICAgIG1faXRlbS5pdGVt
LnBvcyA9IDA7CiAgICAgICAgIGZvbnREYXRhVmFyaWFudCA9IFNtYWxsQ2Fwc1ZhcmlhbnQ7CiAg
ICAgfQotICAgIFVDaGFyMzIgY3VycmVudCA9IHN1cnJvZ2F0ZVBhaXJBd2FyZUZpcnN0Q2hhcmFj
dGVyKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oJm1faXRlbS5zdHJpbmdbbV9pdGVtLml0ZW0u
cG9zXSksIG1faXRlbS5pdGVtLmxlbmd0aCAtIG1faXRlbS5pdGVtLnBvcyk7Ci0gICAgY29uc3Qg
Rm9udERhdGEqIGZvbnREYXRhID0gbV9mb250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoY3VycmVu
dCwgZmFsc2UsIGZvbnREYXRhVmFyaWFudCkuZm9udERhdGE7Ci0gICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udERhdGEtPmZvbnREYXRhRm9yQ2hhcmFjdGVyKCcg
JyktPnBsYXRmb3JtRGF0YSgpOwotICAgIG1faXRlbS5mYWNlID0gcGxhdGZvcm1EYXRhLmhhcmZi
dXp6RmFjZSgpLT5mYWNlKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1E
YXRhID0gZ2V0Q29tcGxleEZvbnRQbGF0Zm9ybURhdGEoKTsKKyAgICBpZiAoIXBsYXRmb3JtRGF0
YSkgeworICAgICAgICBVQ2hhcjMyIGN1cnJlbnQgPSBzdXJyb2dhdGVQYWlyQXdhcmVGaXJzdENo
YXJhY3RlcihzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KCZtX2l0ZW0uc3RyaW5nW21faXRlbS5p
dGVtLnBvc10pLCBtX2l0ZW0uaXRlbS5sZW5ndGggLSBtX2l0ZW0uaXRlbS5wb3MpOworICAgICAg
ICBjb25zdCBGb250RGF0YSogZm9udERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJhY3Rl
cihjdXJyZW50LCBmYWxzZSwgZm9udERhdGFWYXJpYW50KS5mb250RGF0YTsKKyAgICAgICAgcGxh
dGZvcm1EYXRhID0gJmZvbnREYXRhLT5mb250RGF0YUZvckNoYXJhY3RlcignICcpLT5wbGF0Zm9y
bURhdGEoKTsKKyAgICB9CisgICAgbV9pdGVtLmZhY2UgPSBwbGF0Zm9ybURhdGEtPmhhcmZidXp6
RmFjZSgpLT5mYWNlKCk7CiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIHNldHVwIGZvbnQgZmVhdHVy
ZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcnVuLgogICAgIGlmICghbV9pdGVtLml0ZW0ucG9z
KQogICAgICAgICBzZXR1cEZvbnRGZWF0dXJlcyhtX2ZvbnQtPmZvbnREZXNjcmlwdGlvbigpLmZl
YXR1cmVTZXR0aW5ncygpLCBtX2l0ZW0uZmFjZSk7Ci0gICAgdm9pZCogb3BhcXVlUGxhdGZvcm1E
YXRhID0gY29uc3RfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oJnBsYXRmb3JtRGF0YSk7CisgICAg
dm9pZCogb3BhcXVlUGxhdGZvcm1EYXRhID0gY29uc3RfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4o
cGxhdGZvcm1EYXRhKTsKICAgICBtX2l0ZW0uZm9udC0+dXNlckRhdGEgPSBvcGFxdWVQbGF0Zm9y
bURhdGE7CiAKLSAgICBpbnQgc2l6ZSA9IHBsYXRmb3JtRGF0YS5zaXplKCk7CisgICAgaW50IHNp
emUgPSBwbGF0Zm9ybURhdGEtPnNpemUoKTsKICAgICBtX2l0ZW0uZm9udC0+eF9wcGVtID0gc2l6
ZTsKICAgICBtX2l0ZW0uZm9udC0+eV9wcGVtID0gc2l6ZTsKICAgICAvLyB4XyBhbmQgeV9zY2Fs
ZSBhcmUgdGhlIGNvbnZlcnNpb24gZmFjdG9ycyBmcm9tIGZvbnQgZGVzaWduIHNwYWNlIChmRW1T
aXplKSB0byAxLzY0dGggb2YgZGV2aWNlIHBpeGVscyBpbiAxNi4xNiBmb3JtYXQuCiAgICAgY29u
c3QgaW50IGRldmljZVBpeGVsRnJhY3Rpb24gPSA2NDsKICAgICBjb25zdCBpbnQgbXVsdGlwbHlG
b3IxNkRvdDE2ID0gMSA8PCAxNjsKLSAgICBpbnQgc2NhbGUgPSBkZXZpY2VQaXhlbEZyYWN0aW9u
ICogc2l6ZSAqIG11bHRpcGx5Rm9yMTZEb3QxNiAvIHBsYXRmb3JtRGF0YS5lbVNpemVJbkZvbnRV
bml0cygpOworICAgIGludCBzY2FsZSA9IGRldmljZVBpeGVsRnJhY3Rpb24gKiBzaXplICogbXVs
dGlwbHlGb3IxNkRvdDE2IC8gcGxhdGZvcm1EYXRhLT5lbVNpemVJbkZvbnRVbml0cygpOwogICAg
IG1faXRlbS5mb250LT54X3NjYWxlID0gc2NhbGU7CiAgICAgbV9pdGVtLmZvbnQtPnlfc2NhbGUg
PSBzY2FsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6
ei5oCmluZGV4IDA5ZWI4Y2QwNWY1MGJjYzI1MDQyODkyYzNmMGMyYmIzZjgwMjhlN2MuLjE3NThh
M2NhYmJiZGVmNzJlN2UzNWY3MmFlYWY3NjkwMjdmMzk4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhh
cmZCdXp6LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
Q29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouaApAQCAtMTA1LDYgKzEwNSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gUmV0dXJuIHRoZSB3aWR0aCAoaW4gcHgpIG9mIHRoZSBjdXJyZW50IHNjcmlw
dCBydW4uCiAgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsV2lkdGg7
IH0KIAorICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIGdldENvbXBsZXhGb250UGxhdGZvcm1E
YXRhKCk7CiAgICAgdm9pZCBzZXR1cEZvbnRGb3JTY3JpcHRSdW4oKTsKICAgICB2b2lkIGRlbGV0
ZUdseXBoQXJyYXlzKCk7CiAgICAgdm9pZCBjcmVhdGVHbHlwaEFycmF5cyhpbnQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>