<?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>31802</bug_id>
          
          <creation_ts>2009-11-23 05:12:22 -0800</creation_ts>
          <short_desc>Switch Chrome on Mac to Core Text APIs</short_desc>
          <delta_ts>2009-12-13 05:37:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mark</cc>
    
    <cc>mitz</cc>
    
    <cc>mrowe</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165824</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-11-23 05:12:22 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/50259/trunk caused a regression in Arabic text rendering on Chrome under10.6 described at http://crbug.com/27195 .

Chrome uses the ATSUI APIs rather than Core Text on both 10.5 &amp; 10.6 for historical reasons.

ATSUI is deprecated on 10.6 in favor of Core Text so it makes sense to switch over the rendering APIs, rather than working around them in the ATSUI interface code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165825</commentid>
    <comment_count>1</comment_count>
      <attachid>43703</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-11-23 05:21:01 -0800</bug_when>
    <thetext>Created attachment 43703
Switch Chrome/Mac from ATSUI -&gt; Core TExt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165826</commentid>
    <comment_count>2</comment_count>
      <attachid>43704</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-11-23 05:22:52 -0800</bug_when>
    <thetext>Created attachment 43704
Switch Chrome/Mac from ATSUI -&gt; Core Text

Fix Typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165854</commentid>
    <comment_count>3</comment_count>
      <attachid>43704</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-11-23 07:44:30 -0800</bug_when>
    <thetext>Comment on attachment 43704
Switch Chrome/Mac from ATSUI -&gt; Core Text

&gt; diff --git a/WebCore/platform/graphics/SimpleFontData.h b/WebCore/platform/graphics/SimpleFontData.h
&gt; index 387a5c7..eb31f66 100644
&gt; --- a/WebCore/platform/graphics/SimpleFontData.h
&gt; +++ b/WebCore/platform/graphics/SimpleFontData.h
&gt; @@ -115,7 +115,7 @@ public:
&gt;      virtual String description() const;
&gt;  #endif
&gt;  
&gt; -#if PLATFORM(MAC)
&gt; +#if PLATFORM(DARWIN)
&gt;      NSFont* getNSFont() const { return m_platformData.font(); }
&gt;  #endif

NSFont is an AppKit level API, well above the Darwin layer.  It makes no sense to bracket it with “PLATFORM(DARWIN)”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165868</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-11-23 09:28:58 -0800</bug_when>
    <thetext>I’d be wary of using the Core Text code path on Leopard. It has received virtually no testing; last I tested it, on Leopard, it was slower than the ATSUI code path; and it requires you to use SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165871</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-11-23 09:34:16 -0800</bug_when>
    <thetext>Dan: Thanks!  Since we compile a single binary for 10.5/10.6 are you OK with switching APIs at runtime rather than compile time?

Would you want such a change to be Chrome-only or are you OK with making that change on all platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166217</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-11-24 11:59:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Dan: Thanks!  Since we compile a single binary for 10.5/10.6 are you OK with
&gt; switching APIs at runtime rather than compile time?

In most cases we know at compile time which implementation will be used.  We shouldn’t introduce overhead in to those cases.

&gt; 
&gt; Would you want such a change to be Chrome-only or are you OK with making that
&gt; change on all platforms?

There’s nothing Chrome-specific about such a change.  It’s specific to building on one version of Mac OS X with a deployment target of an older version.  The code should be written as such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167589</commentid>
    <comment_count>7</comment_count>
      <attachid>44073</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-01 07:10:41 -0800</bug_when>
    <thetext>Created attachment 44073
Switch Chrome/Mac from ATSUI -&gt; Core Text

mrowe: fixed.

After some testing and further discussion I&apos;m going to try committing this, if we see regressions or other issues on our perf bots I&apos;ll revert and will look into toggling at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167592</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-01 07:15:55 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44073 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167613</commentid>
    <comment_count>9</comment_count>
      <attachid>44077</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-01 08:02:05 -0800</bug_when>
    <thetext>Created attachment 44077
Switch Chrome/Mac from ATSUI -&gt; Core Text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167614</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-01 08:02:40 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44077 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167615</commentid>
    <comment_count>11</comment_count>
      <attachid>44078</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-01 08:04:45 -0800</bug_when>
    <thetext>Created attachment 44078
Switch Chrome/Mac from ATSUI -&gt; Core Text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167620</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-01 08:08:04 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44078 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168152</commentid>
    <comment_count>13</comment_count>
      <attachid>44078</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-02 13:55:24 -0800</bug_when>
    <thetext>Comment on attachment 44078
Switch Chrome/Mac from ATSUI -&gt; Core Text

I don&apos;t see how this is different from the version Mark r-&apos;d?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168157</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-02 14:02:51 -0800</bug_when>
    <thetext>Eric: If you look at SimpleFontData.h the version Mark r-ed changed
PLATFORM(MAC) -&gt; PLATFORM(DARWIN)

The current patch uses:
PLATFORM(MAC) || (PLATFORM(CHROMIUM) &amp;&amp; PLATFORM(DARWIN))

The Changelog comment has also been updated to reflect this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168159</commentid>
    <comment_count>15</comment_count>
      <attachid>44078</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-02 14:05:46 -0800</bug_when>
    <thetext>Comment on attachment 44078
Switch Chrome/Mac from ATSUI -&gt; Core Text

OK.  I was reading comment 6 and ending up confused. :)

So long as this is the current approved method for doing deployment target stuff.  I thought that Mark Mentovai recently added some DEPLOY_ON macros or similar.  But I guess this is actually a building on question and not a deploy on question?  Since these symbols are present in both 10.5 and 10.6, they&apos;re just only public in 10.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168380</commentid>
    <comment_count>16</comment_count>
      <attachid>44078</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-03 05:53:37 -0800</bug_when>
    <thetext>Comment on attachment 44078
Switch Chrome/Mac from ATSUI -&gt; Core Text

Clear commit-queue, patch landed manually as r51633</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169652</commentid>
    <comment_count>17</comment_count>
      <attachid>44468</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-08 05:48:10 -0800</bug_when>
    <thetext>Created attachment 44468
Add optional ATSUI/Core Text runtime switch.

We observed the slowdown Dan was referring to on the Chrome perf bots and rolled back the previous patch.

This patch adds the ability to define both USE(ATSUI) and USE(CORE_TEXT) in which case the API is toggled at runtime.  If a port defines only one of these, things should work exactly as they do today.

I made sure that indexAt() and collectComplexTextRunsForCharacters() are indeed inlined by the compiler so there should be virtually no runtime hit for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169653</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 05:51:00 -0800</bug_when>
    <thetext>Attachment 44468 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/mac/ComplexTextController.cpp:280:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/mac/ComplexTextController.cpp:280:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/graphics/mac/ComplexTextController.cpp:304:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169655</commentid>
    <comment_count>19</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-08 06:02:31 -0800</bug_when>
    <thetext>Regarding the stylebot warnings:
ComplexTextController.cpp#280: This matches the example code for CTGetCoreTextVersion.
ComplexTextController#304: This isn&apos;t technically a style violation in my reading of the guide and IMHO the current code is a bit more readable.

I can change these if a reviewer feels strongly on the subject.

In summary: The review? flag still stands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169705</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-08 10:01:59 -0800</bug_when>
    <thetext>It&apos;s up to whoever reviews your patch, but I&apos;d ask you to change ComplexTextController.cpp#280.  I&apos;m not sure what the sample code has to do with anything.  As for ComplexTextController#304, that&apos;s a grayer area, IMHO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169979</commentid>
    <comment_count>21</comment_count>
      <attachid>44532</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-09 05:42:17 -0800</bug_when>
    <thetext>Created attachment 44532
Add optional ATSUI/Core Text runtime switch

Fixed 2 style warnings, per abarth&apos;s comment.

Can&apos;t remove the == 0 since gcc warns that &quot;the address of ‘uint32_t CTGetCoreTextVersion()’ will always evaluate as ‘true’&quot; and Chrome compiles with -Werror.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170033</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 10:12:57 -0800</bug_when>
    <thetext>Attachment 44532 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/mac/ComplexTextController.cpp:280:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170993</commentid>
    <comment_count>23</comment_count>
      <attachid>44532</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-11 16:41:09 -0800</bug_when>
    <thetext>Comment on attachment 44532
Add optional ATSUI/Core Text runtime switch

I dont&apos; think the ALWAYS_INLINE actually does anything here:
 90         ALWAYS_INLINE CFIndex indexAt(size_t i) const;

One of these days we should change these to take an ENUM which is RTL vs. LTR, as that would make all the callsites easier to read:
 101         void createTextRunFromFontDataATSUI(bool ltr);
(Yes, totally out of scope for this patch.)

In general this looks fine.  It would be nice to see mitz&apos;s stamp of approval on this, but I feel pretty confident this is correct.

Lets give mitz a few days to comment in case he&apos;s just been swamped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171198</commentid>
    <comment_count>24</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-12-13 05:37:10 -0800</bug_when>
    <thetext>Committed as r52067

Eric: Empirically ALWAYS_INLINE does appear to cause the function to be inlined, I was also surprised it made a difference :|</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43703</attachid>
            <date>2009-11-23 05:21:01 -0800</date>
            <delta_ts>2009-11-23 05:22:52 -0800</delta_ts>
            <desc>Switch Chrome/Mac from ATSUI -&gt; Core TExt</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>3401</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDA2MDg3NmJlOTE2NzMzNDg2YTNmOGI3N2YyN2Q1NDhmYmRiOTZjMzAKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBOb3YgMjMg
MTU6MTc6MDQgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBDaHJvbWUvTWFjIHRvIHVzZSBDb3JlIFRl
eHQgQVBJcyByYXRoZXIgdGhhbiBBVFNVSSAuCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4MDIKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiNTFkOC4uYzlkZWE4MyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0
aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiAjZGVmaW5lIFVTRV9DT1JFX1RFWFQgZm9yIENocm9tZS9NYWMuCisKIDIwMDktMTEt
MTkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFuZHJv
aWQgcG9ydCBsYWNrcyBjb25maWd1cmF0aW9uIGluIFBsYXRmb3JtLmggYW5kIGNvbmZpZy5oLgpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAppbmRleCBkM2E0MDc3Li4yMzgxNjM3IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaApAQCAtMjAzLDcgKzIwMyw4IEBACiAjaWYgUExBVEZPUk0oREFSV0lOKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0cgMQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQotI2RlZmluZSBXVEZf
VVNFX0FUU1VJIDEKKyNkZWZpbmUgV1RGX1VTRV9BVFNVSSAwCisjZGVmaW5lIFdURl9VU0VfQ09S
RV9URVhUIDEKICNlbHNlCiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMDUz
ZWE5Li4wYzZjNmU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNo
ICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMg
cmF0aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6IENoYW5nZSAjaWZkZWYgZnJvbSBNQUMgLT4g
REFSV0lOCisgICAgICAgIHNvIHdlIGNhbiB1c2UgZnVuY3Rpb24gaW4gQ2hyb21lLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5j
cHA6IFByb3ZpZGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgQ29yZSBUZXh0IGZ1
bmN0aW9ucyB0aGF0IGFyZXB1YmxpYyBvbiAxMC42IGJ1dCBTUEkgb24gMTAuNS4KKwogMjAwOS0x
MS0yMCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUZvbnREYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmgKaW5kZXggMzg3YTVjNy4uZWIzMWY2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oREFSV0lOKQogICAgIE5TRm9udCogZ2V0TlNGb250KCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURhdGEuZm9udCgpOyB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQ29yZVRleHQuY3BwCmluZGV4IGM5ZGFmODQuLjU2MzU4Y2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAKQEAgLTI5LDYgKzI5LDE1IEBACiAKICNpbmNsdWRlICJGb250
LmgiCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisvLyBUaGUgZm9sbG93aW5n
IHN5bWJvbHMgYXJlIFNQSSBpbiAxMC41LgorZXh0ZXJuICJDIiB7Cit2b2lkIENUUnVuR2V0QWR2
YW5jZXMoQ1RSdW5SZWYgcnVuLCBDRlJhbmdlIHJhbmdlLCBDR1NpemUgYnVmZmVyW10pOworY29u
c3QgQ0dTaXplKiBDVFJ1bkdldEFkdmFuY2VzUHRyKENUUnVuUmVmIHJ1bik7CitleHRlcm4gY29u
c3QgQ0ZTdHJpbmdSZWYga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVsOwor
fQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29tcGxleFRleHRDb250cm9sbGVy
OjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43704</attachid>
            <date>2009-11-23 05:22:52 -0800</date>
            <delta_ts>2009-12-01 07:10:41 -0800</delta_ts>
            <desc>Switch Chrome/Mac from ATSUI -&gt; Core Text</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>3402</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDc5MzZmNGI0NGE4NzIwYzM2MmEzM2QwMTM1NTRhNzBjYjRkMjdhNzcKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBOb3YgMjMg
MTU6MTc6MDQgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBDaHJvbWUvTWFjIHRvIHVzZSBDb3JlIFRl
eHQgQVBJcyByYXRoZXIgdGhhbiBBVFNVSSAuCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4MDIKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZmNiNTFkOC4uYzlkZWE4MyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0
aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiAjZGVmaW5lIFVTRV9DT1JFX1RFWFQgZm9yIENocm9tZS9NYWMuCisKIDIwMDktMTEt
MTkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFuZHJv
aWQgcG9ydCBsYWNrcyBjb25maWd1cmF0aW9uIGluIFBsYXRmb3JtLmggYW5kIGNvbmZpZy5oLgpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAppbmRleCBkM2E0MDc3Li4yMzgxNjM3IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaApAQCAtMjAzLDcgKzIwMyw4IEBACiAjaWYgUExBVEZPUk0oREFSV0lOKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0cgMQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQotI2RlZmluZSBXVEZf
VVNFX0FUU1VJIDEKKyNkZWZpbmUgV1RGX1VTRV9BVFNVSSAwCisjZGVmaW5lIFdURl9VU0VfQ09S
RV9URVhUIDEKICNlbHNlCiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMDUz
ZWE5Li5iZjdkODhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNo
ICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMg
cmF0aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFs
cmVhZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6IENoYW5nZSAjaWZkZWYgZnJvbSBNQUMgLT4g
REFSV0lOCisgICAgICAgIHNvIHdlIGNhbiB1c2UgZnVuY3Rpb24gaW4gQ2hyb21lLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5j
cHA6IFByb3ZpZGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgQ29yZSBUZXh0IGZ1
bmN0aW9ucyB0aGF0IGFyZSBwdWJsaWMgb24gMTAuNiBidXQgU1BJIG9uIDEwLjUuCisKIDIwMDkt
MTEtMjAgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5oCmluZGV4IDM4N2E1YzcuLmViMzFmNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKERBUldJTikKICAgICBOU0ZvbnQqIGdldE5TRm9udCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhLmZvbnQoKTsgfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0LmNwcAppbmRleCBjOWRhZjg0Li41NjM1OGNhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyQ29yZVRleHQuY3BwCkBAIC0yOSw2ICsyOSwxNSBAQAogCiAjaW5jbHVkZSAiRm9u
dC5oIgogCisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorLy8gVGhlIGZvbGxvd2lu
ZyBzeW1ib2xzIGFyZSBTUEkgaW4gMTAuNS4KK2V4dGVybiAiQyIgewordm9pZCBDVFJ1bkdldEFk
dmFuY2VzKENUUnVuUmVmIHJ1biwgQ0ZSYW5nZSByYW5nZSwgQ0dTaXplIGJ1ZmZlcltdKTsKK2Nv
bnN0IENHU2l6ZSogQ1RSdW5HZXRBZHZhbmNlc1B0cihDVFJ1blJlZiBydW4pOworZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDVFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbDsK
K30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKENUUnVuUmVmIGN0UnVuLCBjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCkK
</data>
<flag name="review"
          id="25437"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44073</attachid>
            <date>2009-12-01 07:10:41 -0800</date>
            <delta_ts>2009-12-01 08:02:05 -0800</delta_ts>
            <desc>Switch Chrome/Mac from ATSUI -&gt; Core Text</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>3422</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDc2ZTFlOTBkNjQ1MmU0Y2Y5YTMyYWFkNzQwN2UxODM1NzViYTk1MWIKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBOb3YgMjMg
MTU6MTc6MDQgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBDaHJvbWUvTWFjIHRvIHVzZSBDb3JlIFRl
eHQgQVBJcyByYXRoZXIgdGhhbiBBVFNVSSAuCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4MDIKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmMjVlZC4uOGZjNDc3MiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0
aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiAjZGVmaW5lIFVTRV9DT1JFX1RFWFQgZm9yIENocm9tZS9NYWMuCisKIDIwMDktMTEt
MzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgQnVpbGQgZml4LiAgUmV2aWV3ZWQgYnkgTk9CT0RZLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAppbmRleCBjYzcwNGZlLi5hODhhNWNiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTk5LDcg
KzE5OSw4IEBACiAjaWYgUExBVEZPUk0oREFSV0lOKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cg
MQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQotI2RlZmluZSBXVEZfVVNFX0FUU1VJIDEKKyNk
ZWZpbmUgV1RGX1VTRV9BVFNVSSAwCisjZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEKICNlbHNl
CiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTAxMjVhLi41NWUyZWI4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0aGVyIHRoYW4gQVRT
VUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmg6IENoYW5nZSAjaWZkZWYgZnJvbSBNQUMgLT4gREFSV0lOCisgICAgICAg
IHNvIHdlIGNhbiB1c2UgZnVuY3Rpb24gaW4gQ2hyb21lLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHA6IFByb3ZpZGUgZm9y
d2FyZCBkZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgQ29yZSBUZXh0IGZ1bmN0aW9ucyB0aGF0IGFy
ZSBwdWJsaWMgb24gMTAuNiBidXQgU1BJIG9uIDEwLjUuCisKIDIwMDktMTItMDEgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBI
dW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0
YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IDM4
N2E1YzcuLjdkNzg3NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnRE
YXRhLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVz
Y3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pKQogICAg
IE5TRm9udCogZ2V0TlNGb250KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURhdGEuZm9udCgp
OyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCmluZGV4IGM5ZGFmODQu
LjU2MzU4Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAKQEAgLTI5LDYgKzI5LDE1
IEBACiAKICNpbmNsdWRlICJGb250LmgiCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpCisvLyBUaGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIFNQSSBpbiAxMC41LgorZXh0ZXJuICJD
IiB7Cit2b2lkIENUUnVuR2V0QWR2YW5jZXMoQ1RSdW5SZWYgcnVuLCBDRlJhbmdlIHJhbmdlLCBD
R1NpemUgYnVmZmVyW10pOworY29uc3QgQ0dTaXplKiBDVFJ1bkdldEFkdmFuY2VzUHRyKENUUnVu
UmVmIHJ1bik7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVHlwZXNldHRlck9wdGlvbkZv
cmNlZEVtYmVkZGluZ0xldmVsOworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oQ1RS
dW5SZWYgY3RSdW4sIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3Ro
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44077</attachid>
            <date>2009-12-01 08:02:05 -0800</date>
            <delta_ts>2009-12-01 08:04:45 -0800</delta_ts>
            <desc>Switch Chrome/Mac from ATSUI -&gt; Core Text </desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>3441</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDhlYTkwZjI5MTE1ZTgwYmFhNzY1NTViN2Y3YWYyMmNmMjY3MjQ1MDIKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBOb3YgMjMg
MTU6MTc6MDQgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBDaHJvbWUvTWFjIHRvIHVzZSBDb3JlIFRl
eHQgQVBJcyByYXRoZXIgdGhhbiBBVFNVSSAuCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4MDIKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmMjVlZC4uOGZjNDc3MiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0
aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiAjZGVmaW5lIFVTRV9DT1JFX1RFWFQgZm9yIENocm9tZS9NYWMuCisKIDIwMDktMTEt
MzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgQnVpbGQgZml4LiAgUmV2aWV3ZWQgYnkgTk9CT0RZLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAppbmRleCBjYzcwNGZlLi5hODhhNWNiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTk5LDcg
KzE5OSw4IEBACiAjaWYgUExBVEZPUk0oREFSV0lOKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cg
MQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQotI2RlZmluZSBXVEZfVVNFX0FUU1VJIDEKKyNk
ZWZpbmUgV1RGX1VTRV9BVFNVSSAwCisjZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEKICNlbHNl
CiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTAxMjVhLi5iYTM5ZTMwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0aGVyIHRoYW4gQVRT
VUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmg6IENoYW5nZSAjaWZkZWYgdG8gZGVmaW5lIGdldE5TRm9udCgpIG9uIENo
cm9tZS9NYWMgLgorICAgICAgICBzbyB3ZSBjYW4gdXNlIGZ1bmN0aW9uIGluIENocm9tZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRl
eHQuY3BwOiBQcm92aWRlIGZvcndhcmQgZGVjbGFyYXRpb25zCisgICAgICAgIG9mIENvcmUgVGV4
dCBmdW5jdGlvbnMgdGhhdCBhcmUgcHVibGljIG9uIDEwLjYgYnV0IFNQSSBvbiAxMC41LgorCiAy
MDA5LTEyLTAxICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxl
Rm9udERhdGEuaAppbmRleCAzODdhNWM3Li43ZDc4NzU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExB
VEZPUk0oREFSV0lOKSkKICAgICBOU0ZvbnQqIGdldE5TRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1EYXRhLmZvbnQoKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
LmNwcAppbmRleCBjOWRhZjg0Li41NjM1OGNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
Y3BwCkBAIC0yOSw2ICsyOSwxNSBAQAogCiAjaW5jbHVkZSAiRm9udC5oIgogCisjaWYgZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQorLy8gVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBTUEkg
aW4gMTAuNS4KK2V4dGVybiAiQyIgewordm9pZCBDVFJ1bkdldEFkdmFuY2VzKENUUnVuUmVmIHJ1
biwgQ0ZSYW5nZSByYW5nZSwgQ0dTaXplIGJ1ZmZlcltdKTsKK2NvbnN0IENHU2l6ZSogQ1RSdW5H
ZXRBZHZhbmNlc1B0cihDVFJ1blJlZiBydW4pOworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbDsKK30KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46
OkNvbXBsZXhUZXh0UnVuKENUUnVuUmVmIGN0UnVuLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwg
c2l6ZV90IHN0cmluZ0xlbmd0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44078</attachid>
            <date>2009-12-01 08:04:45 -0800</date>
            <delta_ts>2009-12-03 05:53:36 -0800</delta_ts>
            <desc>Switch Chrome/Mac from ATSUI -&gt; Core Text</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>3398</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IGE5NTczYzY0NzI0YWIxNzc1ZmQ3N2FiODZiNGEzZTc2YjE4ODdkZjcKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBOb3YgMjMg
MTU6MTc6MDQgMjAwOSArMDIwMAoKICAgIFN3aXRjaCBDaHJvbWUvTWFjIHRvIHVzZSBDb3JlIFRl
eHQgQVBJcyByYXRoZXIgdGhhbiBBVFNVSSAuCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4MDIKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmMjVlZC4uOGZjNDc3MiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0
aGVyIHRoYW4gQVRTVUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVh
ZHkgY292ZXJlZCBieSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOiAjZGVmaW5lIFVTRV9DT1JFX1RFWFQgZm9yIENocm9tZS9NYWMuCisKIDIwMDktMTEt
MzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgQnVpbGQgZml4LiAgUmV2aWV3ZWQgYnkgTk9CT0RZLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAppbmRleCBjYzcwNGZlLi5hODhhNWNiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtMTk5LDcg
KzE5OSw4IEBACiAjaWYgUExBVEZPUk0oREFSV0lOKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cg
MQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQotI2RlZmluZSBXVEZfVVNFX0FUU1VJIDEKKyNk
ZWZpbmUgV1RGX1VTRV9BVFNVSSAwCisjZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEKICNlbHNl
CiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTAxMjVhLi44NjI0Nzk5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDA5LTExLTIzICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTd2l0Y2ggQ2hyb21lL01hYyB0byB1c2UgQ29yZSBUZXh0IEFQSXMgcmF0aGVyIHRoYW4gQVRT
VUkgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxODAyCisKKyAgICAgICAgTm8gdGVzdCBzaW5jZSB0aGlzIGlzIGFscmVhZHkgY292ZXJlZCBi
eSBleGlzdGluZyBwaXhlbCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmg6IENoYW5nZSAjaWZkZWYgdG8gZGVmaW5lIGdldE5TRm9udCgpIG9uIENo
cm9tZS9NYWMgLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHA6IFByb3ZpZGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMKKyAgICAg
ICAgb2YgQ29yZSBUZXh0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwdWJsaWMgb24gMTAuNiBidXQgU1BJ
IG9uIDEwLjUuCisKIDIwMDktMTItMDEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IDM4N2E1YzcuLjdkNzg3NTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTExNSw3ICsxMTUsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pKQogICAgIE5TRm9udCogZ2V0TlNGb250KCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybURhdGEuZm9udCgpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQuY3BwCmluZGV4IGM5ZGFmODQuLjU2MzU4Y2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5jcHAKQEAgLTI5LDYgKzI5LDE1IEBACiAKICNpbmNsdWRlICJGb250Lmgi
CiAKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisvLyBUaGUgZm9sbG93aW5nIHN5
bWJvbHMgYXJlIFNQSSBpbiAxMC41LgorZXh0ZXJuICJDIiB7Cit2b2lkIENUUnVuR2V0QWR2YW5j
ZXMoQ1RSdW5SZWYgcnVuLCBDRlJhbmdlIHJhbmdlLCBDR1NpemUgYnVmZmVyW10pOworY29uc3Qg
Q0dTaXplKiBDVFJ1bkdldEFkdmFuY2VzUHRyKENUUnVuUmVmIHJ1bik7CitleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVsOworfQor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29tcGxleFRleHRDb250cm9sbGVyOjpD
b21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0
cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoKQo=
</data>
<flag name="review"
          id="25856"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44468</attachid>
            <date>2009-12-08 05:48:10 -0800</date>
            <delta_ts>2009-12-09 05:42:17 -0800</delta_ts>
            <desc>Add optional ATSUI/Core Text runtime switch.</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>21597</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDJmODAwZjRiMjcwNTUwOWFlZmQ2ZjU4ZGQyZjljN2MzMmI4MWU5ZmEKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFR1ZSBEZWMgOCAx
NDo1MDo0NSAyMDA5ICswMjAwCgogICAgQWRkIGNvZGUgdG8gYWxsb3cgdG9nZ2xpbmcgQVRTVUkv
Q29yZSBUZXh0IHJlbmRlcmluZyBhdCBydW50aW1lIGluIENvbXBsZXhUZXh0Q29udHJvbGxlci4K
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgwMgogICAgCiAg
ICBUaGUgZ29hbCBoZXJlIGlzIHRvIGFsbG93IGZvciBhIHplcm8gcnVudGltZSBoaXQgZm9yIHBv
cnRzIHRoYXQgZGVjaWRlIHRvIHNlbGVjdAogICAgdGhlIEFQSSBhdCBjb21waWxlIHRpbWUuCiAg
ICBXaGVuIGJvdGggVVNFKEFUU1VJKSBhbmQgVVNFKENPUkVfVEVYVCkgYXJlIHRydWUsIHRoZSBB
UEkgaXMgdG9nZ2xlZAogICAgYXQgcnVudGltZS4gIENvcmUgVGV4dCBpcyB1c2VkIGZvciBPUyBW
ZXJzaW9ucyA+PSAxMC42LgogICAgCiAgICBObyB0ZXN0IHNpbmNlIHRoaXMgaXMgYWxyZWFkeSBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHBpeGVsIHRlc3RzLgoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAyOTVlZWYzLi4w
MjY3NTk2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTItMDggIEplcmVteSBN
b3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBjb2RlIHRvIGFsbG93IHRvZ2dsaW5nIEFUU1VJ
L0NvcmUgVGV4dCByZW5kZXJpbmcgYXQgcnVudGltZSBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgwMgor
CisgICAgICAgIFRoZSBnb2FsIGhlcmUgaXMgdG8gYWxsb3cgZm9yIGEgemVybyBydW50aW1lIGhp
dCBmb3IgcG9ydHMgdGhhdCBkZWNpZGUgdG8gc2VsZWN0CisgICAgICAgIHRoZSBBUEkgYXQgY29t
cGlsZSB0aW1lLgorICAgICAgICBXaGVuIGJvdGggVVNFKEFUU1VJKSBhbmQgVVNFKENPUkVfVEVY
VCkgYXJlIHRydWUsIHRoZSBBUEkgaXMgdG9nZ2xlZAorICAgICAgICBhdCBydW50aW1lLiAgQ29y
ZSBUZXh0IGlzIHVzZWQgZm9yIE9TIFZlcnNpb25zID49IDEwLjYuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDogI2RlZmluZSBVU0VfQ09SRV9URVhUIGFuZCBVU0VfQVRTVUkgb24gQ2hyb21l
L01hYy4KKwogMjAwOS0xMi0wNCAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDllMWRiY2IuLmIyYmE0NDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0yMDAsNiArMjAw
LDcgQEAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NJ
IDEKICNkZWZpbmUgV1RGX1VTRV9BVFNVSSAxCisjZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEK
ICNlbHNlCiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YmY3ZjU4Li41ZDEz
OWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDA5LTEyLTA4ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgY29kZSB0byBhbGxvdyB0b2dnbGluZyBBVFNVSS9Db3JlIFRleHQgcmVuZGVy
aW5nIGF0IHJ1bnRpbWUgaW4gQ29tcGxleFRleHRDb250cm9sbGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MDIKKworICAgICAgICBUaGUgZ29h
bCBoZXJlIGlzIHRvIGFsbG93IGZvciBhIHplcm8gcnVudGltZSBoaXQgZm9yIHBvcnRzIHRoYXQg
ZGVjaWRlIHRvIHNlbGVjdAorICAgICAgICB0aGUgQVBJIGF0IGNvbXBpbGUgdGltZS4KKyAgICAg
ICAgV2hlbiBib3RoIFVTRShBVFNVSSkgYW5kIFVTRShDT1JFX1RFWFQpIGFyZSB0cnVlLCB0aGUg
QVBJIGlzIHRvZ2dsZWQKKyAgICAgICAgYXQgcnVudGltZS4gIENvcmUgVGV4dCBpcyB1c2VkIGZv
ciBPUyBWZXJzaW9ucyA+PSAxMC42LgorCisgICAgICAgIE5vIHRlc3Qgc2luY2UgdGhpcyBpcyBh
bHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgcGl4ZWwgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOiAgQ2hhbmdlICNpZmRlZiB0byBkZWZpbmUg
Z2V0TlNGb250KCkgb24gQ2hyb21lL01hYyAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRV
c2VBVFNVSUFQSSk6IENhY2hlIGRlY2lzaW9uIGFib3V0IHdoaWNoIEFQSSB0byB1c2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjppbmRl
eEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOiBTdHViIGZ1bmN0aW9uIHRvIGNhbGwgdGhyb3Vn
aAorICAgICAgICB0byBBVFNVSS9Db3JlIHRleHQgdmFyaWFudHMuCisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bik6
IFRoZSBhY3R1YWwgd29yayBmb3Igb2JqZWN0IGNvbnN0cnVjdGlvbgorICAgICAgICBpcyBkZWxl
Z2F0ZSB0byBjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkvY3JlYXRlVGV4dFJ1bkZyb21G
b250RGF0YUNvcmVUZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQVRTVUkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRD
b250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6b3ZlcnJpZGVMYXlvdXRPcGVyYXRpb24pOiBTbWFs
bCBzdHlsZSBmaXguCisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNv
bXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9y
Q2hhcmFjdGVyc0FUU1VJKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlVGV4
dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dCk6
CisKIDIwMDktMTItMDQgIEFkYW0gTGFuZ2xleSAgPGFnbEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5oCmluZGV4IDM4N2E1YzcuLjdkNzg3NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQ
TEFURk9STShEQVJXSU4pKQogICAgIE5TRm9udCogZ2V0TlNGb250KCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybURhdGEuZm9udCgpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMjY1
YjJjMy4uZWNiOGJjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yOSw2ICsyOSwxMyBAQAogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
Ly8gVW5kZWZpbmVkIHdoZW4gY29tcGlsaW5nIGFnYWlucyB0aGUgMTAuNSBTREsuCisjZGVmaW5l
IGtDVFZlcnNpb25OdW1iZXIxMF82IDB4MDAwMzAwMDAKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNjMsNiArMjcwLDYzIEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zKCkKICAgICAgICAg
Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoJmh5cGhlbiwgMSwgbV9lbmQgLSAx
LCBtX2ZvbnQuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGh5cGhlbiwgZmFsc2UpLmZvbnREYXRhKTsK
IH0KIAorI2lmIFVTRShDT1JFX1RFWFQpICYmIFVTRShBVFNVSSkKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRVc2VBVFNVSUFQSSgpCit7CisgICAgZW51bSBUeXBlUmVuZGVyaW5nQVBJVG9Vc2Ug
eyBVbkluaXRpYWxpemVkLCBVc2VBVFNVSSwgVXNlQ29yZVRleHQgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFR5cGVSZW5kZXJpbmdBUElUb1VzZSwgYXBpVG9Vc2UsIChVbkluaXRpYWxpemVk
KSk7CisKKyAgICBpZiAoVU5MSUtFTFkoYXBpVG9Vc2UgPT0gVW5Jbml0aWFsaXplZCkpIHsKKyAg
ICAgICAgaWYgKCZDVEdldENvcmVUZXh0VmVyc2lvbiAhPSBOVUxMICYmIENUR2V0Q29yZVRleHRW
ZXJzaW9uKCkgPj0ga0NUVmVyc2lvbk51bWJlcjEwXzYpCisgICAgICAgICAgICBhcGlUb1VzZSA9
IFVzZUNvcmVUZXh0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcGlUb1VzZSA9IFVzZUFU
U1VJOworICAgIH0KKworICAgIHJldHVybiBhcGlUb1VzZSA9PSBVc2VBVFNVSTsKK30KKyNlbmRp
ZgorCitDRkluZGV4IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmluZGV4
QXQoc2l6ZV90IGkpIGNvbnN0Cit7CisjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFUU1VJKQor
ICAgIHJldHVybiBzaG91bGRVc2VBVFNVSUFQSSgpID8gbV9hdHN1aUluZGljZXNbaV0gOiBtX2Nv
cmVUZXh0SW5kaWNlc1tpXTsKKyNlbGlmIFVTRShBVFNVSSkKKyAgICByZXR1cm4gbV9hdHN1aUlu
ZGljZXNbaV07CisjZWxpZiBVU0UoQ09SRV9URVhUKQorICAgIHJldHVybiBtX2NvcmVUZXh0SW5k
aWNlc1tpXTsKKyNlbmRpZgorfQorCit2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dERhdGEpCit7CisjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFUU1VJKQorICAgIGlmIChzaG91
bGRVc2VBVFNVSUFQSSgpKQorICAgICAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNBVFNVSShjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0
ZXJzQ29yZVRleHQoY3AsIGxlbmd0aCwgc3RyaW5nTG9jYXRpb24sIGZvbnREYXRhKTsKKyNlbGlm
IFVTRShBVFNVSSkKKyAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3Rl
cnNBVFNVSShjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEpOworI2VsaWYgVVNF
KENPUkVfVEVYVCkKKyAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3Rl
cnNDb3JlVGV4dChjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEpOworI2VuZGlm
Cit9CisKK0NvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0
UnVuKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoLCBib29sIGx0
cikKKyAgICA6IG1fZm9udERhdGEoZm9udERhdGEpCisgICAgLCBtX2NoYXJhY3RlcnMoY2hhcmFj
dGVycykKKyAgICAsIG1fc3RyaW5nTG9jYXRpb24oc3RyaW5nTG9jYXRpb24pCisgICAgLCBtX3N0
cmluZ0xlbmd0aChzdHJpbmdMZW5ndGgpCit7CisjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFU
U1VJKQorICAgIHNob3VsZFVzZUFUU1VJQVBJKCkgPyBjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRh
QVRTVUkobHRyKSA6IGNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFDb3JlVGV4dChsdHIpOworI2Vs
aWYgVVNFKEFUU1VJKQorICAgIGNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFBVFNVSShsdHIpOwor
I2VsaWYgVVNFKENPUkVfVEVYVCkKKyAgICBjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQ29yZVRl
eHQobHRyKTsKKyNlbmRpZgorfQorCiB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5j
ZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKIHsKICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihvZmZzZXQpID4gbV9lbmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IDdhOTE1ZTIu
LjNmZWMxOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5oCkBAIC0zOSw2ICszOSwxMSBAQCBjbGFzcyBGb250OwogY2xh
c3MgU2ltcGxlRm9udERhdGE7CiBjbGFzcyBUZXh0UnVuOwogCisvLyBDb21wbGV4VGV4dENvbnRy
b2xsZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyBhbmQgbWVhc3VyaW5nIGdseXBocyBm
b3IKKy8vIGNvbXBsZXggc2NyaXB0cyBvbiBPUyBYLgorLy8gVGhlIHVuZGVybHlpbmcgQVBJIGNh
biBiZSBzZWxlY3RlZCBhdCBjb21waWxlIHRpbWUgYmFzZWQgb24gVVNFKEFUU1VJKSBhbmQKKy8v
IFVTRShDT1JFX1RFWFQpLiAgSWYgYm90aCBhcmUgZGVmaW5lZCB0aGVuIHRoZSBDb3JlIFRleHQg
QVBJcyBhcmUgdXNlZCBmb3IKKy8vIE9TIFZlcnNpb25zID49IDEwLjYsIEFUU1VJIGlzIHVzZWQg
b3RoZXJ3aXNlLgogY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBD
b21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3QgRm9udCosIGNvbnN0IFRleHRSdW4mLCBib29sIG1h
eVVzZU5hdHVyYWxXcml0aW5nRGlyZWN0aW9uID0gZmFsc2UsIEhhc2hTZXQ8Y29uc3QgU2ltcGxl
Rm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDApOwpAQCAtNjUsNyArNzAsOCBAQCBwcml2YXRl
OgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbXBsZXhUZXh0
UnVuKGN0UnVuLCBmb250RGF0YSwgY2hhcmFjdGVycywgc3RyaW5nTG9jYXRpb24sIHN0cmluZ0xl
bmd0aCkpOwogICAgICAgICB9Ci0jZWxpZiBVU0UoQVRTVUkpCisjZW5kaWYKKyNpZiBVU0UoQVRT
VUkpCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbXBsZXhUZXh0UnVuPiBjcmVhdGUoQVRT
VVRleHRMYXlvdXQgYXRzdVRleHRMYXlvdXQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0
YSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXpl
X3Qgc3RyaW5nTGVuZ3RoLCBib29sIGx0ciwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbXBsZXhUZXh0UnVuKGF0
c3VUZXh0TGF5b3V0LCBmb250RGF0YSwgY2hhcmFjdGVycywgc3RyaW5nTG9jYXRpb24sIHN0cmlu
Z0xlbmd0aCwgbHRyLCBkaXJlY3Rpb25hbE92ZXJyaWRlKSk7CkBAIC04MSwxNSArODcsMTggQEAg
cHJpdmF0ZToKICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NoYXJhY3RlcnM7IH0KICAgICAgICAgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZ0xvY2F0aW9uOyB9CiAgICAgICAgIHNpemVfdCBzdHJpbmdMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ0xlbmd0aDsgfQotICAgICAgICBDRkluZGV4IGlu
ZGV4QXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNlc1tpXTsgfQorICAgICAgICBB
TFdBWVNfSU5MSU5FIENGSW5kZXggaW5kZXhBdChzaXplX3QgaSkgY29uc3Q7CiAgICAgICAgIGNv
bnN0IENHR2x5cGgqIGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CiAgICAgICAg
IGNvbnN0IENHU2l6ZSogYWR2YW5jZXMoKSBjb25zdCB7IHJldHVybiBtX2FkdmFuY2VzOyB9CiAK
ICAgICBwcml2YXRlOgogI2lmIFVTRShDT1JFX1RFWFQpCiAgICAgICAgIENvbXBsZXhUZXh0UnVu
KENUUnVuUmVmLCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCk7Ci0jZWxpZiBV
U0UoQVRTVUkpCisgICAgICAgIHZvaWQgY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0
KGJvb2wgbHRyKTsKKyNlbmRpZgorI2lmIFVTRShBVFNVSSkKICAgICAgICAgQ29tcGxleFRleHRS
dW4oQVRTVVRleHRMYXlvdXQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoLCBi
b29sIGx0ciwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKKyAgICAgICAgdm9pZCBjcmVhdGVU
ZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkoYm9vbCBsdHIpOwogI2VuZGlmCiAgICAgICAgIENvbXBs
ZXhUZXh0UnVuKGNvbnN0IFNpbXBsZUZvbnREYXRhKiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoLCBib29sIGx0cik7
CiAKQEAgLTEwMSw3ICsxMTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBVU0UoQ09SRV9U
RVhUKQotICAgICAgICBSZXRhaW5QdHI8Q1RSdW5SZWY+IG1fQ1RSdW47CisgICAgICAgIFJldGFp
blB0cjxDVFJ1blJlZj4gbV9jb3JlVGV4dFJ1bjsKICNlbmRpZgogICAgICAgICB1bnNpZ25lZCBt
X2dseXBoQ291bnQ7CiAgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBtX2ZvbnREYXRhOwpA
QCAtMTA5LDEwICsxMTgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV9zdHJpbmdM
b2NhdGlvbjsKICAgICAgICAgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOwogI2lmIFVTRShDT1JFX1RF
WFQpCi0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBtX2luZGljZXNEYXRhOwot
ICAgICAgICBjb25zdCBDRkluZGV4KiBtX2luZGljZXM7Ci0jZWxpZiBVU0UoQVRTVUkpCi0gICAg
ICAgIFZlY3RvcjxDRkluZGV4LCA2ND4gbV9pbmRpY2VzOworICAgICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4gbV9jb3JlVGV4dEluZGljZXNEYXRhOworICAgICAgICBjb25zdCBDRklu
ZGV4KiBtX2NvcmVUZXh0SW5kaWNlczsKKyNlbmRpZgorI2lmIFVTRShBVFNVSSkKKyAgICAgICAg
VmVjdG9yPENGSW5kZXgsIDY0PiBtX2F0c3VpSW5kaWNlczsKICNlbmRpZgogICAgICAgICBWZWN0
b3I8Q0dHbHlwaCwgNjQ+IG1fZ2x5cGhzVmVjdG9yOwogICAgICAgICBjb25zdCBDR0dseXBoKiBt
X2dseXBoczsKQEAgLTEyNSw3ICsxMzUsMTIgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9p
ZCBjb2xsZWN0Q29tcGxleFRleHRSdW5zKCk7CisKKyAgICAvLyBjb2xsZWN0Q29tcGxleFRleHRS
dW5zRm9yQ2hhcmFjdGVycygpIGlzIGEgc3R1YiBmdW5jdGlvbiB0aGF0IGNhbGxzIHRocm91Z2gg
dG8gdGhlIEFUU1VJIG9yIENvcmUgVGV4dCB2YXJpYW50cyBiYXNlZAorICAgIC8vIG9uIHRoZSBB
UEkgaW4gdXNlLgogICAgIHZvaWQgY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBj
b25zdCBTaW1wbGVGb250RGF0YSopOworICAgIHZvaWQgY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNBVFNVSShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RyaW5nTG9jYXRpb24sIGNvbnN0IFNpbXBsZUZvbnREYXRhKik7CisgICAgdm9pZCBjb2xsZWN0
Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgY29uc3QgU2ltcGxlRm9udERhdGEq
KTsKICAgICB2b2lkIGFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCk7CiAKICAgICBjb25zdCBGb250
JiBtX2ZvbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21w
bGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAKaW5kZXggNzhjNTg4Zi4uMDBjNzEzNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcApAQCAtNDUsNyArNDUsNyBAQCBPU1N0YXR1cyBDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpvdmVycmlkZUxheW91dE9wZXJhdGlv
bihBVFNVTGF5bwogICAgIENvbXBsZXhUZXh0UnVuKiBjb21wbGV4VGV4dFJ1biA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Q29tcGxleFRleHRSdW4qPihyZWZDb24pOwogICAgIE9TU3RhdHVzIHN0YXR1czsK
ICAgICBJdGVtQ291bnQgY291bnQ7Ci0gICAgQVRTTGF5b3V0UmVjb3JkICpsYXlvdXRSZWNvcmRz
OworICAgIEFUU0xheW91dFJlY29yZCogbGF5b3V0UmVjb3JkczsKIAogICAgIHN0YXR1cyA9IEFU
U1VEaXJlY3RHZXRMYXlvdXREYXRhQXJyYXlQdHJGcm9tTGluZVJlZihhdHN1TGluZVJlZiwga0FU
U1VEaXJlY3REYXRhTGF5b3V0UmVjb3JkQVRTTGF5b3V0UmVjb3JkQ3VycmVudCwgdHJ1ZSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZsYXlvdXRSZWNvcmRzKSwgJmNvdW50KTsKICAgICBpZiAo
c3RhdHVzICE9IG5vRXJyKSB7CkBAIC02Niw3ICs2Niw3IEBAIE9TU3RhdHVzIENvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46Om92ZXJyaWRlTGF5b3V0T3BlcmF0aW9uKEFUU1VM
YXlvCiAgICAgY29tcGxleFRleHRSdW4tPm1fZ2x5cGhDb3VudCA9IGNvdW50OwogICAgIGNvbXBs
ZXhUZXh0UnVuLT5tX2dseXBoc1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGNv
bXBsZXhUZXh0UnVuLT5tX2FkdmFuY2VzVmVjdG9yLnJlc2VydmVDYXBhY2l0eShjb3VudCk7Ci0g
ICAgY29tcGxleFRleHRSdW4tPm1faW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAg
IGNvbXBsZXhUZXh0UnVuLT5tX2F0c3VpSW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwog
CiAgICAgYm9vbCBhdEJlZ2lubmluZyA9IHRydWU7CiAgICAgQ0dGbG9hdCBsYXN0WCA9IDA7CkBA
IC03Nyw3ICs3Nyw3IEBAIE9TU3RhdHVzIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRl
eHRSdW46Om92ZXJyaWRlTGF5b3V0T3BlcmF0aW9uKEFUU1VMYXlvCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBjb21wbGV4VGV4dFJ1bi0+bV9nbHlwaHNWZWN0b3Iu
dW5jaGVja2VkQXBwZW5kKGxheW91dFJlY29yZHNbal0uZ2x5cGhJRCk7Ci0gICAgICAgIGNvbXBs
ZXhUZXh0UnVuLT5tX2luZGljZXMudW5jaGVja2VkQXBwZW5kKGxheW91dFJlY29yZHNbal0ub3Jp
Z2luYWxPZmZzZXQgLyAyICsgaW5kZXhPZmZzZXQpOworICAgICAgICBjb21wbGV4VGV4dFJ1bi0+
bV9hdHN1aUluZGljZXMudW5jaGVja2VkQXBwZW5kKGxheW91dFJlY29yZHNbal0ub3JpZ2luYWxP
ZmZzZXQgLyAyICsgaW5kZXhPZmZzZXQpOwogICAgICAgICBDR0Zsb2F0IHggPSBGaXhlZFRvRmxv
YXQobGF5b3V0UmVjb3Jkc1tqXS5yZWFsUG9zKTsKICAgICAgICAgaWYgKCFhdEJlZ2lubmluZykK
ICAgICAgICAgICAgIGNvbXBsZXhUZXh0UnVuLT5tX2FkdmFuY2VzVmVjdG9yLnVuY2hlY2tlZEFw
cGVuZChDR1NpemVNYWtlKHggLSBsYXN0WCwgMCkpOwpAQCAtMjE5LDMzICsyMTksMjkgQEAgQ29t
cGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oQVRTVVRl
eHRMYXlvdXQgYXRzdVRleHRMYXkKICAgICBzdGF0dXMgPSBBVFNVRGlzcG9zZVRleHRMYXlvdXQo
YXRzdVRleHRMYXlvdXQpOwogfQogCi1Db21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0
UnVuOjpDb21wbGV4VGV4dFJ1bihjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmlu
Z0xlbmd0aCwgYm9vbCBsdHIpCi0gICAgOiBtX2ZvbnREYXRhKGZvbnREYXRhKQotICAgICwgbV9j
aGFyYWN0ZXJzKGNoYXJhY3RlcnMpCi0gICAgLCBtX3N0cmluZ0xvY2F0aW9uKHN0cmluZ0xvY2F0
aW9uKQotICAgICwgbV9zdHJpbmdMZW5ndGgoc3RyaW5nTGVuZ3RoKQordm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRT
VUkoYm9vbCBsdHIpCiB7Ci0gICAgbV9pbmRpY2VzLnJlc2VydmVDYXBhY2l0eShzdHJpbmdMZW5n
dGgpOworICAgIG1fYXRzdWlJbmRpY2VzLnJlc2VydmVDYXBhY2l0eShtX3N0cmluZ0xlbmd0aCk7
CiAgICAgdW5zaWduZWQgciA9IDA7Ci0gICAgd2hpbGUgKHIgPCBzdHJpbmdMZW5ndGgpIHsKLSAg
ICAgICAgbV9pbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgaWYgKFVfSVNfU1VS
Uk9HQVRFKGNoYXJhY3RlcnNbcl0pKSB7Ci0gICAgICAgICAgICBBU1NFUlQociArIDEgPCBzdHJp
bmdMZW5ndGgpOwotICAgICAgICAgICAgQVNTRVJUKFVfSVNfU1VSUk9HQVRFX0xFQUQoY2hhcmFj
dGVyc1tyXSkpOwotICAgICAgICAgICAgQVNTRVJUKFVfSVNfVFJBSUwoY2hhcmFjdGVyc1tyICsg
MV0pKTsKKyAgICB3aGlsZSAociA8IG1fc3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIG1fYXRzdWlJ
bmRpY2VzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgaWYgKFVfSVNfU1VSUk9HQVRFKG1f
Y2hhcmFjdGVyc1tyXSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChyICsgMSA8IG1fc3RyaW5nTGVu
Z3RoKTsKKyAgICAgICAgICAgIEFTU0VSVChVX0lTX1NVUlJPR0FURV9MRUFEKG1fY2hhcmFjdGVy
c1tyXSkpOworICAgICAgICAgICAgQVNTRVJUKFVfSVNfVFJBSUwobV9jaGFyYWN0ZXJzW3IgKyAx
XSkpOwogICAgICAgICAgICAgciArPSAyOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHIr
KzsKICAgICB9Ci0gICAgbV9nbHlwaENvdW50ID0gbV9pbmRpY2VzLnNpemUoKTsKKyAgICBtX2ds
eXBoQ291bnQgPSBtX2F0c3VpSW5kaWNlcy5zaXplKCk7CiAgICAgaWYgKCFsdHIpIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCByID0gMCwgZW5kID0gbV9nbHlwaENvdW50IC0gMTsgciA8IG1fZ2x5
cGhDb3VudCAvIDI7ICsrciwgLS1lbmQpCi0gICAgICAgICAgICBzdGQ6OnN3YXAobV9pbmRpY2Vz
W3JdLCBtX2luZGljZXNbZW5kXSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAobV9hdHN1aUluZGlj
ZXNbcl0sIG1fYXRzdWlJbmRpY2VzW2VuZF0pOwogICAgIH0KIAogICAgIG1fZ2x5cGhzVmVjdG9y
LmZpbGwoMCwgbV9nbHlwaENvdW50KTsKICAgICBtX2dseXBocyA9IG1fZ2x5cGhzVmVjdG9yLmRh
dGEoKTsKLSAgICBtX2FkdmFuY2VzVmVjdG9yLmZpbGwoQ0dTaXplTWFrZShmb250RGF0YS0+d2lk
dGhGb3JHbHlwaCgwKSwgMCksIG1fZ2x5cGhDb3VudCk7CisgICAgbV9hZHZhbmNlc1ZlY3Rvci5m
aWxsKENHU2l6ZU1ha2UobV9mb250RGF0YS0+d2lkdGhGb3JHbHlwaCgwKSwgMCksIG1fZ2x5cGhD
b3VudCk7CiAgICAgbV9hZHZhbmNlcyA9IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpOwogfQogCkBA
IC0zMTEsNyArMzA3LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFUU1VTdHlsZShjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udERhdGEsIFRleHRSZW5kZXJpbmdNb2QKICAgICBmb250RGF0YS0+
bV9BVFNVU3R5bGVJbml0aWFsaXplZCA9IHRydWU7CiB9CiAKLXZvaWQgQ29tcGxleFRleHRDb250
cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciog
Y3AsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBmb250RGF0YSkKK3ZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0
Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0FUU1VJKGNvbnN0IFVDaGFyKiBjcCwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhKQogewogICAgIGlmICghZm9udERhdGEpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEg
cnVuIG9mIG1pc3NpbmcgZ2x5cGhzIGZyb20gdGhlIHByaW1hcnkgZm9udC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlckNvcmVUZXh0LmNwcAppbmRleCBjOWRhZjg0Li40ZWZlOTZhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQuY3BwCkBAIC0yOSwzNSArMjksNDQgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIK
IAorI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKy8vIFRoZSBmb2xsb3dpbmcgc3lt
Ym9scyBhcmUgU1BJIGluIDEwLjUuCitleHRlcm4gIkMiIHsKK3ZvaWQgQ1RSdW5HZXRBZHZhbmNl
cyhDVFJ1blJlZiBydW4sIENGUmFuZ2UgcmFuZ2UsIENHU2l6ZSBidWZmZXJbXSk7Citjb25zdCBD
R1NpemUqIENUUnVuR2V0QWR2YW5jZXNQdHIoQ1RSdW5SZWYgcnVuKTsKK2V4dGVybiBjb25zdCBD
RlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVyT3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWw7Cit9Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNv
bXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihDVFJ1blJlZiBjdFJ1biwgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgc3Ry
aW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgpCi0gICAgOiBtX0NUUnVuKGN0UnVuKQor
ICAgIDogbV9jb3JlVGV4dFJ1bihjdFJ1bikKICAgICAsIG1fZm9udERhdGEoZm9udERhdGEpCiAg
ICAgLCBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKICAgICAsIG1fc3RyaW5nTG9jYXRpb24oc3Ry
aW5nTG9jYXRpb24pCiAgICAgLCBtX3N0cmluZ0xlbmd0aChzdHJpbmdMZW5ndGgpCiB7Ci0gICAg
bV9nbHlwaENvdW50ID0gQ1RSdW5HZXRHbHlwaENvdW50KG1fQ1RSdW4uZ2V0KCkpOwotICAgIG1f
aW5kaWNlcyA9IENUUnVuR2V0U3RyaW5nSW5kaWNlc1B0cihtX0NUUnVuLmdldCgpKTsKLSAgICBp
ZiAoIW1faW5kaWNlcykgewotICAgICAgICBtX2luZGljZXNEYXRhLmFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2dseXBoQ291bnQgKiBzaXplb2YoQ0ZJ
bmRleCkpKTsKLSAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9pbmRpY2VzRGF0YS5nZXQo
KSwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgpKTsKLSAgICAgICAgbV9pbmRpY2VzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBDRkluZGV4Kj4oQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIo
bV9pbmRpY2VzRGF0YS5nZXQoKSkpOwotICAgICAgICBDVFJ1bkdldFN0cmluZ0luZGljZXMobV9D
VFJ1bi5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgMCksIGNvbnN0X2Nhc3Q8Q0ZJbmRleCo+KG1faW5k
aWNlcykpOworICAgIG1fZ2x5cGhDb3VudCA9IENUUnVuR2V0R2x5cGhDb3VudChtX2NvcmVUZXh0
UnVuLmdldCgpKTsKKyAgICBtX2NvcmVUZXh0SW5kaWNlcyA9IENUUnVuR2V0U3RyaW5nSW5kaWNl
c1B0cihtX2NvcmVUZXh0UnVuLmdldCgpKTsKKyAgICBpZiAoIW1fY29yZVRleHRJbmRpY2VzKSB7
CisgICAgICAgIG1fY29yZVRleHRJbmRpY2VzRGF0YS5hZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgpKSk7
CisgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fY29yZVRleHRJbmRpY2VzRGF0YS5nZXQo
KSwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgpKTsKKyAgICAgICAgbV9jb3JlVGV4dElu
ZGljZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IENGSW5kZXgqPihDRkRhdGFHZXRNdXRhYmxl
Qnl0ZVB0cihtX2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0KCkpKTsKKyAgICAgICAgQ1RSdW5HZXRT
dHJpbmdJbmRpY2VzKG1fY29yZVRleHRSdW4uZ2V0KCksIENGUmFuZ2VNYWtlKDAsIDApLCBjb25z
dF9jYXN0PENGSW5kZXgqPihtX2NvcmVUZXh0SW5kaWNlcykpOwogICAgIH0KIAotICAgIG1fZ2x5
cGhzID0gQ1RSdW5HZXRHbHlwaHNQdHIobV9DVFJ1bi5nZXQoKSk7CisgICAgbV9nbHlwaHMgPSBD
VFJ1bkdldEdseXBoc1B0cihtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBpZiAoIW1fZ2x5cGhz
KSB7CiAgICAgICAgIG1fZ2x5cGhzVmVjdG9yLmdyb3cobV9nbHlwaENvdW50KTsKLSAgICAgICAg
Q1RSdW5HZXRHbHlwaHMobV9DVFJ1bi5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgMCksIG1fZ2x5cGhz
VmVjdG9yLmRhdGEoKSk7CisgICAgICAgIENUUnVuR2V0R2x5cGhzKG1fY29yZVRleHRSdW4uZ2V0
KCksIENGUmFuZ2VNYWtlKDAsIDApLCBtX2dseXBoc1ZlY3Rvci5kYXRhKCkpOwogICAgICAgICBt
X2dseXBocyA9IG1fZ2x5cGhzVmVjdG9yLmRhdGEoKTsKICAgICB9CiAKLSAgICBtX2FkdmFuY2Vz
ID0gQ1RSdW5HZXRBZHZhbmNlc1B0cihtX0NUUnVuLmdldCgpKTsKKyAgICBtX2FkdmFuY2VzID0g
Q1RSdW5HZXRBZHZhbmNlc1B0cihtX2NvcmVUZXh0UnVuLmdldCgpKTsKICAgICBpZiAoIW1fYWR2
YW5jZXMpIHsKICAgICAgICAgbV9hZHZhbmNlc1ZlY3Rvci5ncm93KG1fZ2x5cGhDb3VudCk7Ci0g
ICAgICAgIENUUnVuR2V0QWR2YW5jZXMobV9DVFJ1bi5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgMCks
IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAgQ1RSdW5HZXRBZHZhbmNlcyhtX2Nv
cmVUZXh0UnVuLmdldCgpLCBDRlJhbmdlTWFrZSgwLCAwKSwgbV9hZHZhbmNlc1ZlY3Rvci5kYXRh
KCkpOwogICAgICAgICBtX2FkdmFuY2VzID0gbV9hZHZhbmNlc1ZlY3Rvci5kYXRhKCk7CiAgICAg
fQogCkBAIC02NSwyMCArNzQsMTYgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4
dFJ1bjo6Q29tcGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IFNpbXAKIAogLy8gTWlz
c2luZyBnbHlwaHMgcnVuIGNvbnN0cnVjdG9yLiBDb3JlIFRleHQgd2lsbCBub3QgZ2VuZXJhdGUg
YSBydW4gb2YgbWlzc2luZyBnbHlwaHMsIGluc3RlYWQgZmFsbGluZyBiYWNrIG9uCiAvLyBnbHlw
aHMgZnJvbSBMYXN0UmVzb3J0LiBXZSB3YW50IHRvIHVzZSB0aGUgcHJpbWFyeSBmb250J3MgbWlz
c2luZyBnbHlwaCBpbiBvcmRlciB0byBtYXRjaCB0aGUgZmFzdCB0ZXh0IGNvZGUgcGF0aC4KLUNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoLCBib29sIGx0cikKLSAgICA6
IG1fZm9udERhdGEoZm9udERhdGEpCi0gICAgLCBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKLSAg
ICAsIG1fc3RyaW5nTG9jYXRpb24oc3RyaW5nTG9jYXRpb24pCi0gICAgLCBtX3N0cmluZ0xlbmd0
aChzdHJpbmdMZW5ndGgpCit2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRS
dW46OmNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFDb3JlVGV4dChib29sIGx0cikKIHsKICAgICBW
ZWN0b3I8Q0ZJbmRleCwgMTY+IGluZGljZXM7CiAgICAgdW5zaWduZWQgciA9IDA7Ci0gICAgd2hp
bGUgKHIgPCBzdHJpbmdMZW5ndGgpIHsKKyAgICB3aGlsZSAociA8IG1fc3RyaW5nTGVuZ3RoKSB7
CiAgICAgICAgIGluZGljZXMuYXBwZW5kKHIpOwotICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUo
Y2hhcmFjdGVyc1tyXSkpIHsKLSAgICAgICAgICAgIEFTU0VSVChyICsgMSA8IHN0cmluZ0xlbmd0
aCk7Ci0gICAgICAgICAgICBBU1NFUlQoVV9JU19TVVJST0dBVEVfTEVBRChjaGFyYWN0ZXJzW3Jd
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoVV9JU19UUkFJTChjaGFyYWN0ZXJzW3IgKyAxXSkpOwor
ICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUobV9jaGFyYWN0ZXJzW3JdKSkgeworICAgICAgICAg
ICAgQVNTRVJUKHIgKyAxIDwgbV9zdHJpbmdMZW5ndGgpOworICAgICAgICAgICAgQVNTRVJUKFVf
SVNfU1VSUk9HQVRFX0xFQUQobV9jaGFyYWN0ZXJzW3JdKSk7CisgICAgICAgICAgICBBU1NFUlQo
VV9JU19UUkFJTChtX2NoYXJhY3RlcnNbciArIDFdKSk7CiAgICAgICAgICAgICByICs9IDI7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcisrOwpAQCAtODgsOSArOTMsOSBAQCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udAogICAgICAgICBmb3IgKHVuc2lnbmVkIHIgPSAwLCBlbmQgPSBtX2ds
eXBoQ291bnQgLSAxOyByIDwgbV9nbHlwaENvdW50IC8gMjsgKytyLCAtLWVuZCkKICAgICAgICAg
ICAgIHN0ZDo6c3dhcChpbmRpY2VzW3JdLCBpbmRpY2VzW2VuZF0pOwogICAgIH0KLSAgICBtX2lu
ZGljZXNEYXRhLmFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX2dseXBoQ291bnQgKiBzaXplb2YoQ0ZJbmRleCkpKTsKLSAgICBDRkRhdGFBcHBlbmRCeXRl
cyhtX2luZGljZXNEYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaW5k
aWNlcy5kYXRhKCkpLCBtX2dseXBoQ291bnQgKiBzaXplb2YoQ0ZJbmRleCkpOwotICAgIG1faW5k
aWNlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ0ZJbmRleCo+KENGRGF0YUdldEJ5dGVQdHIo
bV9pbmRpY2VzRGF0YS5nZXQoKSkpOworICAgIG1fY29yZVRleHRJbmRpY2VzRGF0YS5hZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9nbHlwaENvdW50ICog
c2l6ZW9mKENGSW5kZXgpKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9jb3JlVGV4dEluZGlj
ZXNEYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaW5kaWNlcy5kYXRh
KCkpLCBtX2dseXBoQ291bnQgKiBzaXplb2YoQ0ZJbmRleCkpOworICAgIG1fY29yZVRleHRJbmRp
Y2VzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBDRkluZGV4Kj4oQ0ZEYXRhR2V0Qnl0ZVB0ciht
X2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0KCkpKTsKIAogICAgIC8vIFN5bnRoZXNpemUgYSBydW4g
b2YgbWlzc2luZyBnbHlwaHMuCiAgICAgbV9nbHlwaHNWZWN0b3IuZmlsbCgwLCBtX2dseXBoQ291
bnQpOwpAQCAtOTksNyArMTA0LDcgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4
dFJ1bjo6Q29tcGxleFRleHRSdW4oY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQKICAgICBtX2Fk
dmFuY2VzID0gbV9hZHZhbmNlc1ZlY3Rvci5kYXRhKCk7CiB9CiAKLXZvaWQgQ29tcGxleFRleHRD
b250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hh
ciogY3AsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250RGF0YSkKK3ZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xs
ZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KGNvbnN0IFVDaGFyKiBjcCwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhKQogewogICAgIGlmICghZm9udERhdGEpIHsKICAgICAgICAgLy8gQ3Jl
YXRlIGEgcnVuIG9mIG1pc3NpbmcgZ2x5cGhzIGZyb20gdGhlIHByaW1hcnkgZm9udC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44532</attachid>
            <date>2009-12-09 05:42:17 -0800</date>
            <delta_ts>2009-12-11 16:41:09 -0800</delta_ts>
            <desc>Add optional ATSUI/Core Text runtime switch</desc>
            <filename>core_text.patch</filename>
            <type>text/plain</type>
            <size>21580</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IGUyOTU1NGNkM2QyOTUzMDczZTg1MTY3NWViMjFmNmUzOTRmN2Q1NDYKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFR1ZSBEZWMgOCAx
NDo1MDo0NSAyMDA5ICswMjAwCgogICAgQWRkIGNvZGUgdG8gYWxsb3cgdG9nZ2xpbmcgQVRTVUkv
Q29yZSBUZXh0IHJlbmRlcmluZyBhdCBydW50aW1lIGluIENvbXBsZXhUZXh0Q29udHJvbGxlci4K
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgwMgogICAgCiAg
ICBUaGUgZ29hbCBoZXJlIGlzIHRvIGFsbG93IGZvciBhIHplcm8gcnVudGltZSBoaXQgZm9yIHBv
cnRzIHRoYXQgZGVjaWRlIHRvIHNlbGVjdAogICAgdGhlIEFQSSBhdCBjb21waWxlIHRpbWUuCiAg
ICBXaGVuIGJvdGggVVNFKEFUU1VJKSBhbmQgVVNFKENPUkVfVEVYVCkgYXJlIHRydWUsIHRoZSBB
UEkgaXMgdG9nZ2xlZAogICAgYXQgcnVudGltZS4gIENvcmUgVGV4dCBpcyB1c2VkIGZvciBPUyBW
ZXJzaW9ucyA+PSAxMC42LgogICAgCiAgICBObyB0ZXN0IHNpbmNlIHRoaXMgaXMgYWxyZWFkeSBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHBpeGVsIHRlc3RzLgoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAyOTVlZWYzLi4w
MjY3NTk2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTItMDggIEplcmVteSBN
b3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBjb2RlIHRvIGFsbG93IHRvZ2dsaW5nIEFUU1VJ
L0NvcmUgVGV4dCByZW5kZXJpbmcgYXQgcnVudGltZSBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgwMgor
CisgICAgICAgIFRoZSBnb2FsIGhlcmUgaXMgdG8gYWxsb3cgZm9yIGEgemVybyBydW50aW1lIGhp
dCBmb3IgcG9ydHMgdGhhdCBkZWNpZGUgdG8gc2VsZWN0CisgICAgICAgIHRoZSBBUEkgYXQgY29t
cGlsZSB0aW1lLgorICAgICAgICBXaGVuIGJvdGggVVNFKEFUU1VJKSBhbmQgVVNFKENPUkVfVEVY
VCkgYXJlIHRydWUsIHRoZSBBUEkgaXMgdG9nZ2xlZAorICAgICAgICBhdCBydW50aW1lLiAgQ29y
ZSBUZXh0IGlzIHVzZWQgZm9yIE9TIFZlcnNpb25zID49IDEwLjYuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDogI2RlZmluZSBVU0VfQ09SRV9URVhUIGFuZCBVU0VfQVRTVUkgb24gQ2hyb21l
L01hYy4KKwogMjAwOS0xMi0wNCAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDllMWRiY2IuLmIyYmE0NDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0yMDAsNiArMjAw
LDcgQEAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NJ
IDEKICNkZWZpbmUgV1RGX1VTRV9BVFNVSSAxCisjZGVmaW5lIFdURl9VU0VfQ09SRV9URVhUIDEK
ICNlbHNlCiAjZGVmaW5lIFdURl9QTEFURk9STV9TS0lBIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YmY3ZjU4Li41ZDEz
OWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDA5LTEyLTA4ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgY29kZSB0byBhbGxvdyB0b2dnbGluZyBBVFNVSS9Db3JlIFRleHQgcmVuZGVy
aW5nIGF0IHJ1bnRpbWUgaW4gQ29tcGxleFRleHRDb250cm9sbGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4MDIKKworICAgICAgICBUaGUgZ29h
bCBoZXJlIGlzIHRvIGFsbG93IGZvciBhIHplcm8gcnVudGltZSBoaXQgZm9yIHBvcnRzIHRoYXQg
ZGVjaWRlIHRvIHNlbGVjdAorICAgICAgICB0aGUgQVBJIGF0IGNvbXBpbGUgdGltZS4KKyAgICAg
ICAgV2hlbiBib3RoIFVTRShBVFNVSSkgYW5kIFVTRShDT1JFX1RFWFQpIGFyZSB0cnVlLCB0aGUg
QVBJIGlzIHRvZ2dsZWQKKyAgICAgICAgYXQgcnVudGltZS4gIENvcmUgVGV4dCBpcyB1c2VkIGZv
ciBPUyBWZXJzaW9ucyA+PSAxMC42LgorCisgICAgICAgIE5vIHRlc3Qgc2luY2UgdGhpcyBpcyBh
bHJlYWR5IGNvdmVyZWQgYnkgZXhpc3RpbmcgcGl4ZWwgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOiAgQ2hhbmdlICNpZmRlZiB0byBkZWZpbmUg
Z2V0TlNGb250KCkgb24gQ2hyb21lL01hYyAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRV
c2VBVFNVSUFQSSk6IENhY2hlIGRlY2lzaW9uIGFib3V0IHdoaWNoIEFQSSB0byB1c2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjppbmRl
eEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOiBTdHViIGZ1bmN0aW9uIHRvIGNhbGwgdGhyb3Vn
aAorICAgICAgICB0byBBVFNVSS9Db3JlIHRleHQgdmFyaWFudHMuCisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bik6
IFRoZSBhY3R1YWwgd29yayBmb3Igb2JqZWN0IGNvbnN0cnVjdGlvbgorICAgICAgICBpcyBkZWxl
Z2F0ZSB0byBjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkvY3JlYXRlVGV4dFJ1bkZyb21G
b250RGF0YUNvcmVUZXh0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQVRTVUkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRD
b250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6b3ZlcnJpZGVMYXlvdXRPcGVyYXRpb24pOiBTbWFs
bCBzdHlsZSBmaXguCisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNv
bXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9y
Q2hhcmFjdGVyc0FUU1VJKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlVGV4
dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dCk6
CisKIDIwMDktMTItMDQgIEFkYW0gTGFuZ2xleSAgPGFnbEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5oCmluZGV4IDM4N2E1YzcuLjdkNzg3NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQ
TEFURk9STShEQVJXSU4pKQogICAgIE5TRm9udCogZ2V0TlNGb250KCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybURhdGEuZm9udCgpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMjY1
YjJjMy4uNGNmY2JkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yOSw2ICsyOSwxMyBAQAogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
Ly8gVW5kZWZpbmVkIHdoZW4gY29tcGlsaW5nIGFnYWlucyB0aGUgMTAuNSBTREsuCisjZGVmaW5l
IGtDVFZlcnNpb25OdW1iZXIxMF82IDB4MDAwMzAwMDAKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNjMsNiArMjcwLDYyIEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zKCkKICAgICAgICAg
Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoJmh5cGhlbiwgMSwgbV9lbmQgLSAx
LCBtX2ZvbnQuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGh5cGhlbiwgZmFsc2UpLmZvbnREYXRhKTsK
IH0KIAorI2lmIFVTRShDT1JFX1RFWFQpICYmIFVTRShBVFNVSSkKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRVc2VBVFNVSUFQSSgpCit7CisgICAgZW51bSBUeXBlUmVuZGVyaW5nQVBJVG9Vc2Ug
eyBVbkluaXRpYWxpemVkLCBVc2VBVFNVSSwgVXNlQ29yZVRleHQgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFR5cGVSZW5kZXJpbmdBUElUb1VzZSwgYXBpVG9Vc2UsIChVbkluaXRpYWxpemVk
KSk7CisKKyAgICBpZiAoVU5MSUtFTFkoYXBpVG9Vc2UgPT0gVW5Jbml0aWFsaXplZCkpIHsKKyAg
ICAgICAgaWYgKCZDVEdldENvcmVUZXh0VmVyc2lvbiAhPSAwICYmIENUR2V0Q29yZVRleHRWZXJz
aW9uKCkgPj0ga0NUVmVyc2lvbk51bWJlcjEwXzYpCisgICAgICAgICAgICBhcGlUb1VzZSA9IFVz
ZUNvcmVUZXh0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcGlUb1VzZSA9IFVzZUFUU1VJ
OworICAgIH0KKworICAgIHJldHVybiBhcGlUb1VzZSA9PSBVc2VBVFNVSTsKK30KKyNlbmRpZgor
CitDRkluZGV4IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmluZGV4QXQo
c2l6ZV90IGkpIGNvbnN0Cit7CisjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFUU1VJKQorICAg
IHJldHVybiBzaG91bGRVc2VBVFNVSUFQSSgpID8gbV9hdHN1aUluZGljZXNbaV0gOiBtX2NvcmVU
ZXh0SW5kaWNlc1tpXTsKKyNlbGlmIFVTRShBVFNVSSkKKyAgICByZXR1cm4gbV9hdHN1aUluZGlj
ZXNbaV07CisjZWxpZiBVU0UoQ09SRV9URVhUKQorICAgIHJldHVybiBtX2NvcmVUZXh0SW5kaWNl
c1tpXTsKKyNlbmRpZgorfQorCit2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERh
dGEpCit7CisjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFUU1VJKQorICAgIGlmIChzaG91bGRV
c2VBVFNVSUFQSSgpKQorICAgICAgICByZXR1cm4gY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnNBVFNVSShjcCwgbGVuZ3RoLCBzdHJpbmdMb2NhdGlvbiwgZm9udERhdGEpOworICAg
IHJldHVybiBjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KGNwLCBs
ZW5ndGgsIHN0cmluZ0xvY2F0aW9uLCBmb250RGF0YSk7CisjZWxpZiBVU0UoQVRTVUkpCisgICAg
cmV0dXJuIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQVRTVUkoY3AsIGxlbmd0
aCwgc3RyaW5nTG9jYXRpb24sIGZvbnREYXRhKTsKKyNlbGlmIFVTRShDT1JFX1RFWFQpCisgICAg
cmV0dXJuIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQ29yZVRleHQoY3AsIGxl
bmd0aCwgc3RyaW5nTG9jYXRpb24sIGZvbnREYXRhKTsKKyNlbmRpZgorfQorCitDb21wbGV4VGV4
dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJp
bmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIpCisgICAgOiBtX2ZvbnRE
YXRhKGZvbnREYXRhKQorICAgICwgbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCisgICAgLCBtX3N0
cmluZ0xvY2F0aW9uKHN0cmluZ0xvY2F0aW9uKQorICAgICwgbV9zdHJpbmdMZW5ndGgoc3RyaW5n
TGVuZ3RoKQoreworI2lmIFVTRShDT1JFX1RFWFQpICYmIFVTRShBVFNVSSkKKyAgICBzaG91bGRV
c2VBVFNVSUFQSSgpID8gY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUFUU1VJKGx0cikgOiBjcmVh
dGVUZXh0UnVuRnJvbUZvbnREYXRhQ29yZVRleHQobHRyKTsKKyNlbGlmIFVTRShBVFNVSSkKKyAg
ICBjcmVhdGVUZXh0UnVuRnJvbUZvbnREYXRhQVRTVUkobHRyKTsKKyNlbGlmIFVTRShDT1JFX1RF
WFQpCisgICAgY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0KGx0cik7CisjZW5kaWYK
K30KKwogdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0
LCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4o
b2Zmc2V0KSA+IG1fZW5kKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29tcGxleFRleHRDb250cm9sbGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAppbmRleCA3YTkxNWUyLi4zZmVjMThhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuaApAQCAtMzksNiArMzksMTEgQEAgY2xhc3MgRm9udDsKIGNsYXNzIFNpbXBsZUZvbnREYXRh
OwogY2xhc3MgVGV4dFJ1bjsKIAorLy8gQ29tcGxleFRleHRDb250cm9sbGVyIGlzIHJlc3BvbnNp
YmxlIGZvciByZW5kZXJpbmcgYW5kIG1lYXN1cmluZyBnbHlwaHMgZm9yCisvLyBjb21wbGV4IHNj
cmlwdHMgb24gT1MgWC4KKy8vIFRoZSB1bmRlcmx5aW5nIEFQSSBjYW4gYmUgc2VsZWN0ZWQgYXQg
Y29tcGlsZSB0aW1lIGJhc2VkIG9uIFVTRShBVFNVSSkgYW5kCisvLyBVU0UoQ09SRV9URVhUKS4g
IElmIGJvdGggYXJlIGRlZmluZWQgdGhlbiB0aGUgQ29yZSBUZXh0IEFQSXMgYXJlIHVzZWQgZm9y
CisvLyBPUyBWZXJzaW9ucyA+PSAxMC42LCBBVFNVSSBpcyB1c2VkIG90aGVyd2lzZS4KIGNsYXNz
IENvbXBsZXhUZXh0Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgQ29tcGxleFRleHRDb250cm9s
bGVyKGNvbnN0IEZvbnQqLCBjb25zdCBUZXh0UnVuJiwgYm9vbCBtYXlVc2VOYXR1cmFsV3JpdGlu
Z0RpcmVjdGlvbiA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxi
YWNrRm9udHMgPSAwKTsKQEAgLTY1LDcgKzcwLDggQEAgcHJpdmF0ZToKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb21wbGV4VGV4dFJ1bihjdFJ1biwgZm9udERh
dGEsIGNoYXJhY3RlcnMsIHN0cmluZ0xvY2F0aW9uLCBzdHJpbmdMZW5ndGgpKTsKICAgICAgICAg
fQotI2VsaWYgVVNFKEFUU1VJKQorI2VuZGlmCisjaWYgVVNFKEFUU1VJKQogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb21wbGV4VGV4dFJ1bj4gY3JlYXRlKEFUU1VUZXh0TGF5b3V0IGF0c3VU
ZXh0TGF5b3V0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwg
Ym9vbCBsdHIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb21wbGV4VGV4dFJ1bihhdHN1VGV4dExheW91dCwgZm9u
dERhdGEsIGNoYXJhY3RlcnMsIHN0cmluZ0xvY2F0aW9uLCBzdHJpbmdMZW5ndGgsIGx0ciwgZGly
ZWN0aW9uYWxPdmVycmlkZSkpOwpAQCAtODEsMTUgKzg3LDE4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CiAgICAgICAgIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmdMb2NhdGlvbjsgfQogICAgICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdMZW5ndGg7IH0KLSAgICAgICAgQ0ZJbmRleCBpbmRleEF0KHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBtX2luZGljZXNbaV07IH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBDRklu
ZGV4IGluZGV4QXQoc2l6ZV90IGkpIGNvbnN0OwogICAgICAgICBjb25zdCBDR0dseXBoKiBnbHlw
aHMoKSBjb25zdCB7IHJldHVybiBtX2dseXBoczsgfQogICAgICAgICBjb25zdCBDR1NpemUqIGFk
dmFuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlczsgfQogCiAgICAgcHJpdmF0ZToKICNp
ZiBVU0UoQ09SRV9URVhUKQogICAgICAgICBDb21wbGV4VGV4dFJ1bihDVFJ1blJlZiwgY29uc3Qg
U2ltcGxlRm9udERhdGEqLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgc3RyaW5n
TG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgpOwotI2VsaWYgVVNFKEFUU1VJKQorICAgICAg
ICB2b2lkIGNyZWF0ZVRleHRSdW5Gcm9tRm9udERhdGFDb3JlVGV4dChib29sIGx0cik7CisjZW5k
aWYKKyNpZiBVU0UoQVRTVUkpCiAgICAgICAgIENvbXBsZXhUZXh0UnVuKEFUU1VUZXh0TGF5b3V0
LCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIsIGJvb2wgZGly
ZWN0aW9uYWxPdmVycmlkZSk7CisgICAgICAgIHZvaWQgY3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0
YUFUU1VJKGJvb2wgbHRyKTsKICNlbmRpZgogICAgICAgICBDb21wbGV4VGV4dFJ1bihjb25zdCBT
aW1wbGVGb250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdM
b2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIpOwogCkBAIC0xMDEsNyArMTEw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgVVNFKENPUkVfVEVYVCkKLSAgICAgICAgUmV0
YWluUHRyPENUUnVuUmVmPiBtX0NUUnVuOworICAgICAgICBSZXRhaW5QdHI8Q1RSdW5SZWY+IG1f
Y29yZVRleHRSdW47CiAjZW5kaWYKICAgICAgICAgdW5zaWduZWQgbV9nbHlwaENvdW50OwogICAg
ICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogbV9mb250RGF0YTsKQEAgLTEwOSwxMCArMTE4LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc3RyaW5nTG9jYXRpb247CiAgICAgICAg
IHNpemVfdCBtX3N0cmluZ0xlbmd0aDsKICNpZiBVU0UoQ09SRV9URVhUKQotICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gbV9pbmRpY2VzRGF0YTsKLSAgICAgICAgY29uc3QgQ0ZJ
bmRleCogbV9pbmRpY2VzOwotI2VsaWYgVVNFKEFUU1VJKQotICAgICAgICBWZWN0b3I8Q0ZJbmRl
eCwgNjQ+IG1faW5kaWNlczsKKyAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1f
Y29yZVRleHRJbmRpY2VzRGF0YTsKKyAgICAgICAgY29uc3QgQ0ZJbmRleCogbV9jb3JlVGV4dElu
ZGljZXM7CisjZW5kaWYKKyNpZiBVU0UoQVRTVUkpCisgICAgICAgIFZlY3RvcjxDRkluZGV4LCA2
ND4gbV9hdHN1aUluZGljZXM7CiAjZW5kaWYKICAgICAgICAgVmVjdG9yPENHR2x5cGgsIDY0PiBt
X2dseXBoc1ZlY3RvcjsKICAgICAgICAgY29uc3QgQ0dHbHlwaCogbV9nbHlwaHM7CkBAIC0xMjUs
NyArMTM1LDEyIEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHZvaWQgY29sbGVjdENvbXBsZXhU
ZXh0UnVucygpOworCisgICAgLy8gY29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMo
KSBpcyBhIHN0dWIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aHJvdWdoIHRvIHRoZSBBVFNVSSBvciBD
b3JlIFRleHQgdmFyaWFudHMgYmFzZWQKKyAgICAvLyBvbiB0aGUgQVBJIGluIHVzZS4KICAgICB2
b2lkIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgY29uc3QgU2ltcGxlRm9udERh
dGEqKTsKKyAgICB2b2lkIGNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQVRTVUko
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBj
b25zdCBTaW1wbGVGb250RGF0YSopOworICAgIHZvaWQgY29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNDb3JlVGV4dChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0IFNpbXBsZUZvbnREYXRhKik7CiAgICAgdm9pZCBhZGp1
c3RHbHlwaHNBbmRBZHZhbmNlcygpOwogCiAgICAgY29uc3QgRm9udCYgbV9mb250OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
QVRTVUkuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQVRTVUkuY3BwCmluZGV4IDc4YzU4OGYuLjAwYzcxMzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJB
VFNVSS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgT1NTdGF0dXMgQ29tcGxleFRleHRDb250cm9sbGVy
OjpDb21wbGV4VGV4dFJ1bjo6b3ZlcnJpZGVMYXlvdXRPcGVyYXRpb24oQVRTVUxheW8KICAgICBD
b21wbGV4VGV4dFJ1biogY29tcGxleFRleHRSdW4gPSByZWludGVycHJldF9jYXN0PENvbXBsZXhU
ZXh0UnVuKj4ocmVmQ29uKTsKICAgICBPU1N0YXR1cyBzdGF0dXM7CiAgICAgSXRlbUNvdW50IGNv
dW50OwotICAgIEFUU0xheW91dFJlY29yZCAqbGF5b3V0UmVjb3JkczsKKyAgICBBVFNMYXlvdXRS
ZWNvcmQqIGxheW91dFJlY29yZHM7CiAKICAgICBzdGF0dXMgPSBBVFNVRGlyZWN0R2V0TGF5b3V0
RGF0YUFycmF5UHRyRnJvbUxpbmVSZWYoYXRzdUxpbmVSZWYsIGtBVFNVRGlyZWN0RGF0YUxheW91
dFJlY29yZEFUU0xheW91dFJlY29yZEN1cnJlbnQsIHRydWUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPigmbGF5b3V0UmVjb3JkcyksICZjb3VudCk7CiAgICAgaWYgKHN0YXR1cyAhPSBub0Vycikg
ewpAQCAtNjYsNyArNjYsNyBAQCBPU1N0YXR1cyBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBs
ZXhUZXh0UnVuOjpvdmVycmlkZUxheW91dE9wZXJhdGlvbihBVFNVTGF5bwogICAgIGNvbXBsZXhU
ZXh0UnVuLT5tX2dseXBoQ291bnQgPSBjb3VudDsKICAgICBjb21wbGV4VGV4dFJ1bi0+bV9nbHlw
aHNWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBjb21wbGV4VGV4dFJ1bi0+bV9h
ZHZhbmNlc1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwotICAgIGNvbXBsZXhUZXh0UnVu
LT5tX2luZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICBjb21wbGV4VGV4dFJ1bi0+
bV9hdHN1aUluZGljZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKIAogICAgIGJvb2wgYXRCZWdp
bm5pbmcgPSB0cnVlOwogICAgIENHRmxvYXQgbGFzdFggPSAwOwpAQCAtNzcsNyArNzcsNyBAQCBP
U1N0YXR1cyBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpvdmVycmlkZUxh
eW91dE9wZXJhdGlvbihBVFNVTGF5bwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgY29tcGxleFRleHRSdW4tPm1fZ2x5cGhzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChs
YXlvdXRSZWNvcmRzW2pdLmdseXBoSUQpOwotICAgICAgICBjb21wbGV4VGV4dFJ1bi0+bV9pbmRp
Y2VzLnVuY2hlY2tlZEFwcGVuZChsYXlvdXRSZWNvcmRzW2pdLm9yaWdpbmFsT2Zmc2V0IC8gMiAr
IGluZGV4T2Zmc2V0KTsKKyAgICAgICAgY29tcGxleFRleHRSdW4tPm1fYXRzdWlJbmRpY2VzLnVu
Y2hlY2tlZEFwcGVuZChsYXlvdXRSZWNvcmRzW2pdLm9yaWdpbmFsT2Zmc2V0IC8gMiArIGluZGV4
T2Zmc2V0KTsKICAgICAgICAgQ0dGbG9hdCB4ID0gRml4ZWRUb0Zsb2F0KGxheW91dFJlY29yZHNb
al0ucmVhbFBvcyk7CiAgICAgICAgIGlmICghYXRCZWdpbm5pbmcpCiAgICAgICAgICAgICBjb21w
bGV4VGV4dFJ1bi0+bV9hZHZhbmNlc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoQ0dTaXplTWFrZSh4
IC0gbGFzdFgsIDApKTsKQEAgLTIxOSwzMyArMjE5LDI5IEBAIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKEFUU1VUZXh0TGF5b3V0IGF0c3VUZXh0
TGF5CiAgICAgc3RhdHVzID0gQVRTVURpc3Bvc2VUZXh0TGF5b3V0KGF0c3VUZXh0TGF5b3V0KTsK
IH0KIAotQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRS
dW4oY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgsIGJvb2wgbHRy
KQotICAgIDogbV9mb250RGF0YShmb250RGF0YSkKLSAgICAsIG1fY2hhcmFjdGVycyhjaGFyYWN0
ZXJzKQotICAgICwgbV9zdHJpbmdMb2NhdGlvbihzdHJpbmdMb2NhdGlvbikKLSAgICAsIG1fc3Ry
aW5nTGVuZ3RoKHN0cmluZ0xlbmd0aCkKK3ZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21w
bGV4VGV4dFJ1bjo6Y3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUFUU1VJKGJvb2wgbHRyKQogewot
ICAgIG1faW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkoc3RyaW5nTGVuZ3RoKTsKKyAgICBtX2F0c3Vp
SW5kaWNlcy5yZXNlcnZlQ2FwYWNpdHkobV9zdHJpbmdMZW5ndGgpOwogICAgIHVuc2lnbmVkIHIg
PSAwOwotICAgIHdoaWxlIChyIDwgc3RyaW5nTGVuZ3RoKSB7Ci0gICAgICAgIG1faW5kaWNlcy51
bmNoZWNrZWRBcHBlbmQocik7Ci0gICAgICAgIGlmIChVX0lTX1NVUlJPR0FURShjaGFyYWN0ZXJz
W3JdKSkgewotICAgICAgICAgICAgQVNTRVJUKHIgKyAxIDwgc3RyaW5nTGVuZ3RoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChVX0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNbcl0pKTsKLSAgICAg
ICAgICAgIEFTU0VSVChVX0lTX1RSQUlMKGNoYXJhY3RlcnNbciArIDFdKSk7CisgICAgd2hpbGUg
KHIgPCBtX3N0cmluZ0xlbmd0aCkgeworICAgICAgICBtX2F0c3VpSW5kaWNlcy51bmNoZWNrZWRB
cHBlbmQocik7CisgICAgICAgIGlmIChVX0lTX1NVUlJPR0FURShtX2NoYXJhY3RlcnNbcl0pKSB7
CisgICAgICAgICAgICBBU1NFUlQociArIDEgPCBtX3N0cmluZ0xlbmd0aCk7CisgICAgICAgICAg
ICBBU1NFUlQoVV9JU19TVVJST0dBVEVfTEVBRChtX2NoYXJhY3RlcnNbcl0pKTsKKyAgICAgICAg
ICAgIEFTU0VSVChVX0lTX1RSQUlMKG1fY2hhcmFjdGVyc1tyICsgMV0pKTsKICAgICAgICAgICAg
IHIgKz0gMjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByKys7CiAgICAgfQotICAgIG1f
Z2x5cGhDb3VudCA9IG1faW5kaWNlcy5zaXplKCk7CisgICAgbV9nbHlwaENvdW50ID0gbV9hdHN1
aUluZGljZXMuc2l6ZSgpOwogICAgIGlmICghbHRyKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQg
ciA9IDAsIGVuZCA9IG1fZ2x5cGhDb3VudCAtIDE7IHIgPCBtX2dseXBoQ291bnQgLyAyOyArK3Is
IC0tZW5kKQotICAgICAgICAgICAgc3RkOjpzd2FwKG1faW5kaWNlc1tyXSwgbV9pbmRpY2VzW2Vu
ZF0pOworICAgICAgICAgICAgc3RkOjpzd2FwKG1fYXRzdWlJbmRpY2VzW3JdLCBtX2F0c3VpSW5k
aWNlc1tlbmRdKTsKICAgICB9CiAKICAgICBtX2dseXBoc1ZlY3Rvci5maWxsKDAsIG1fZ2x5cGhD
b3VudCk7CiAgICAgbV9nbHlwaHMgPSBtX2dseXBoc1ZlY3Rvci5kYXRhKCk7Ci0gICAgbV9hZHZh
bmNlc1ZlY3Rvci5maWxsKENHU2l6ZU1ha2UoZm9udERhdGEtPndpZHRoRm9yR2x5cGgoMCksIDAp
LCBtX2dseXBoQ291bnQpOworICAgIG1fYWR2YW5jZXNWZWN0b3IuZmlsbChDR1NpemVNYWtlKG1f
Zm9udERhdGEtPndpZHRoRm9yR2x5cGgoMCksIDApLCBtX2dseXBoQ291bnQpOwogICAgIG1fYWR2
YW5jZXMgPSBtX2FkdmFuY2VzVmVjdG9yLmRhdGEoKTsKIH0KIApAQCAtMzExLDcgKzMwNyw3IEBA
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVBVFNVU3R5bGUoY29uc3QgU2ltcGxlRm9udERhdGEqIGZv
bnREYXRhLCBUZXh0UmVuZGVyaW5nTW9kCiAgICAgZm9udERhdGEtPm1fQVRTVVN0eWxlSW5pdGlh
bGl6ZWQgPSB0cnVlOwogfQogCi12b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERh
dGEpCit2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnNBVFNVSShjb25zdCBVQ2hhciogY3AsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkKIHsKICAg
ICBpZiAoIWZvbnREYXRhKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHJ1biBvZiBtaXNzaW5nIGds
eXBocyBmcm9tIHRoZSBwcmltYXJ5IGZvbnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAK
aW5kZXggYzlkYWY4NC4uNGVmZTk2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcApA
QCAtMjksMzUgKzI5LDQ0IEBACiAKICNpbmNsdWRlICJGb250LmgiCiAKKyNpZiBkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisvLyBUaGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIFNQSSBpbiAx
MC41LgorZXh0ZXJuICJDIiB7Cit2b2lkIENUUnVuR2V0QWR2YW5jZXMoQ1RSdW5SZWYgcnVuLCBD
RlJhbmdlIHJhbmdlLCBDR1NpemUgYnVmZmVyW10pOworY29uc3QgQ0dTaXplKiBDVFJ1bkdldEFk
dmFuY2VzUHRyKENUUnVuUmVmIHJ1bik7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVHlw
ZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVsOworfQorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29t
cGxleFRleHRSdW4oQ1RSdW5SZWYgY3RSdW4sIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0
YSwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXpl
X3Qgc3RyaW5nTGVuZ3RoKQotICAgIDogbV9DVFJ1bihjdFJ1bikKKyAgICA6IG1fY29yZVRleHRS
dW4oY3RSdW4pCiAgICAgLCBtX2ZvbnREYXRhKGZvbnREYXRhKQogICAgICwgbV9jaGFyYWN0ZXJz
KGNoYXJhY3RlcnMpCiAgICAgLCBtX3N0cmluZ0xvY2F0aW9uKHN0cmluZ0xvY2F0aW9uKQogICAg
ICwgbV9zdHJpbmdMZW5ndGgoc3RyaW5nTGVuZ3RoKQogewotICAgIG1fZ2x5cGhDb3VudCA9IENU
UnVuR2V0R2x5cGhDb3VudChtX0NUUnVuLmdldCgpKTsKLSAgICBtX2luZGljZXMgPSBDVFJ1bkdl
dFN0cmluZ0luZGljZXNQdHIobV9DVFJ1bi5nZXQoKSk7Ci0gICAgaWYgKCFtX2luZGljZXMpIHsK
LSAgICAgICAgbV9pbmRpY2VzRGF0YS5hZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbV9nbHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgpKSk7Ci0gICAgICAg
IENGRGF0YUluY3JlYXNlTGVuZ3RoKG1faW5kaWNlc0RhdGEuZ2V0KCksIG1fZ2x5cGhDb3VudCAq
IHNpemVvZihDRkluZGV4KSk7Ci0gICAgICAgIG1faW5kaWNlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgQ0ZJbmRleCo+KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1faW5kaWNlc0RhdGEuZ2V0
KCkpKTsKLSAgICAgICAgQ1RSdW5HZXRTdHJpbmdJbmRpY2VzKG1fQ1RSdW4uZ2V0KCksIENGUmFu
Z2VNYWtlKDAsIDApLCBjb25zdF9jYXN0PENGSW5kZXgqPihtX2luZGljZXMpKTsKKyAgICBtX2ds
eXBoQ291bnQgPSBDVFJ1bkdldEdseXBoQ291bnQobV9jb3JlVGV4dFJ1bi5nZXQoKSk7CisgICAg
bV9jb3JlVGV4dEluZGljZXMgPSBDVFJ1bkdldFN0cmluZ0luZGljZXNQdHIobV9jb3JlVGV4dFJ1
bi5nZXQoKSk7CisgICAgaWYgKCFtX2NvcmVUZXh0SW5kaWNlcykgeworICAgICAgICBtX2NvcmVU
ZXh0SW5kaWNlc0RhdGEuYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fZ2x5cGhDb3VudCAqIHNpemVvZihDRkluZGV4KSkpOworICAgICAgICBDRkRhdGFJ
bmNyZWFzZUxlbmd0aChtX2NvcmVUZXh0SW5kaWNlc0RhdGEuZ2V0KCksIG1fZ2x5cGhDb3VudCAq
IHNpemVvZihDRkluZGV4KSk7CisgICAgICAgIG1fY29yZVRleHRJbmRpY2VzID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBDRkluZGV4Kj4oQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9jb3JlVGV4
dEluZGljZXNEYXRhLmdldCgpKSk7CisgICAgICAgIENUUnVuR2V0U3RyaW5nSW5kaWNlcyhtX2Nv
cmVUZXh0UnVuLmdldCgpLCBDRlJhbmdlTWFrZSgwLCAwKSwgY29uc3RfY2FzdDxDRkluZGV4Kj4o
bV9jb3JlVGV4dEluZGljZXMpKTsKICAgICB9CiAKLSAgICBtX2dseXBocyA9IENUUnVuR2V0R2x5
cGhzUHRyKG1fQ1RSdW4uZ2V0KCkpOworICAgIG1fZ2x5cGhzID0gQ1RSdW5HZXRHbHlwaHNQdHIo
bV9jb3JlVGV4dFJ1bi5nZXQoKSk7CiAgICAgaWYgKCFtX2dseXBocykgewogICAgICAgICBtX2ds
eXBoc1ZlY3Rvci5ncm93KG1fZ2x5cGhDb3VudCk7Ci0gICAgICAgIENUUnVuR2V0R2x5cGhzKG1f
Q1RSdW4uZ2V0KCksIENGUmFuZ2VNYWtlKDAsIDApLCBtX2dseXBoc1ZlY3Rvci5kYXRhKCkpOwor
ICAgICAgICBDVFJ1bkdldEdseXBocyhtX2NvcmVUZXh0UnVuLmdldCgpLCBDRlJhbmdlTWFrZSgw
LCAwKSwgbV9nbHlwaHNWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgbV9nbHlwaHMgPSBtX2dseXBo
c1ZlY3Rvci5kYXRhKCk7CiAgICAgfQogCi0gICAgbV9hZHZhbmNlcyA9IENUUnVuR2V0QWR2YW5j
ZXNQdHIobV9DVFJ1bi5nZXQoKSk7CisgICAgbV9hZHZhbmNlcyA9IENUUnVuR2V0QWR2YW5jZXNQ
dHIobV9jb3JlVGV4dFJ1bi5nZXQoKSk7CiAgICAgaWYgKCFtX2FkdmFuY2VzKSB7CiAgICAgICAg
IG1fYWR2YW5jZXNWZWN0b3IuZ3JvdyhtX2dseXBoQ291bnQpOwotICAgICAgICBDVFJ1bkdldEFk
dmFuY2VzKG1fQ1RSdW4uZ2V0KCksIENGUmFuZ2VNYWtlKDAsIDApLCBtX2FkdmFuY2VzVmVjdG9y
LmRhdGEoKSk7CisgICAgICAgIENUUnVuR2V0QWR2YW5jZXMobV9jb3JlVGV4dFJ1bi5nZXQoKSwg
Q0ZSYW5nZU1ha2UoMCwgMCksIG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgbV9h
ZHZhbmNlcyA9IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpOwogICAgIH0KIApAQCAtNjUsMjAgKzc0
LDE2IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0
UnVuKENUUnVuUmVmIGN0UnVuLCBjb25zdCBTaW1wCiAKIC8vIE1pc3NpbmcgZ2x5cGhzIHJ1biBj
b25zdHJ1Y3Rvci4gQ29yZSBUZXh0IHdpbGwgbm90IGdlbmVyYXRlIGEgcnVuIG9mIG1pc3Npbmcg
Z2x5cGhzLCBpbnN0ZWFkIGZhbGxpbmcgYmFjayBvbgogLy8gZ2x5cGhzIGZyb20gTGFzdFJlc29y
dC4gV2Ugd2FudCB0byB1c2UgdGhlIHByaW1hcnkgZm9udCdzIG1pc3NpbmcgZ2x5cGggaW4gb3Jk
ZXIgdG8gbWF0Y2ggdGhlIGZhc3QgdGV4dCBjb2RlIHBhdGguCi1Db21wbGV4VGV4dENvbnRyb2xs
ZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihjb25zdCBTaW1wbGVGb250RGF0YSog
Zm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlv
biwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgYm9vbCBsdHIpCi0gICAgOiBtX2ZvbnREYXRhKGZvbnRE
YXRhKQotICAgICwgbV9jaGFyYWN0ZXJzKGNoYXJhY3RlcnMpCi0gICAgLCBtX3N0cmluZ0xvY2F0
aW9uKHN0cmluZ0xvY2F0aW9uKQotICAgICwgbV9zdHJpbmdMZW5ndGgoc3RyaW5nTGVuZ3RoKQor
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGVUZXh0UnVu
RnJvbUZvbnREYXRhQ29yZVRleHQoYm9vbCBsdHIpCiB7CiAgICAgVmVjdG9yPENGSW5kZXgsIDE2
PiBpbmRpY2VzOwogICAgIHVuc2lnbmVkIHIgPSAwOwotICAgIHdoaWxlIChyIDwgc3RyaW5nTGVu
Z3RoKSB7CisgICAgd2hpbGUgKHIgPCBtX3N0cmluZ0xlbmd0aCkgewogICAgICAgICBpbmRpY2Vz
LmFwcGVuZChyKTsKLSAgICAgICAgaWYgKFVfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcnNbcl0pKSB7
Ci0gICAgICAgICAgICBBU1NFUlQociArIDEgPCBzdHJpbmdMZW5ndGgpOwotICAgICAgICAgICAg
QVNTRVJUKFVfSVNfU1VSUk9HQVRFX0xFQUQoY2hhcmFjdGVyc1tyXSkpOwotICAgICAgICAgICAg
QVNTRVJUKFVfSVNfVFJBSUwoY2hhcmFjdGVyc1tyICsgMV0pKTsKKyAgICAgICAgaWYgKFVfSVNf
U1VSUk9HQVRFKG1fY2hhcmFjdGVyc1tyXSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChyICsgMSA8
IG1fc3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIEFTU0VSVChVX0lTX1NVUlJPR0FURV9MRUFE
KG1fY2hhcmFjdGVyc1tyXSkpOworICAgICAgICAgICAgQVNTRVJUKFVfSVNfVFJBSUwobV9jaGFy
YWN0ZXJzW3IgKyAxXSkpOwogICAgICAgICAgICAgciArPSAyOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHIrKzsKQEAgLTg4LDkgKzkzLDkgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpD
b21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQK
ICAgICAgICAgZm9yICh1bnNpZ25lZCByID0gMCwgZW5kID0gbV9nbHlwaENvdW50IC0gMTsgciA8
IG1fZ2x5cGhDb3VudCAvIDI7ICsrciwgLS1lbmQpCiAgICAgICAgICAgICBzdGQ6OnN3YXAoaW5k
aWNlc1tyXSwgaW5kaWNlc1tlbmRdKTsKICAgICB9Ci0gICAgbV9pbmRpY2VzRGF0YS5hZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9nbHlwaENvdW50ICog
c2l6ZW9mKENGSW5kZXgpKSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9pbmRpY2VzRGF0YS5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGluZGljZXMuZGF0YSgpKSwgbV9n
bHlwaENvdW50ICogc2l6ZW9mKENGSW5kZXgpKTsKLSAgICBtX2luZGljZXMgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IENGSW5kZXgqPihDRkRhdGFHZXRCeXRlUHRyKG1faW5kaWNlc0RhdGEuZ2V0
KCkpKTsKKyAgICBtX2NvcmVUZXh0SW5kaWNlc0RhdGEuYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fZ2x5cGhDb3VudCAqIHNpemVvZihDRkluZGV4KSkp
OworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fY29yZVRleHRJbmRpY2VzRGF0YS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGluZGljZXMuZGF0YSgpKSwgbV9nbHlwaENvdW50
ICogc2l6ZW9mKENGSW5kZXgpKTsKKyAgICBtX2NvcmVUZXh0SW5kaWNlcyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgQ0ZJbmRleCo+KENGRGF0YUdldEJ5dGVQdHIobV9jb3JlVGV4dEluZGljZXNE
YXRhLmdldCgpKSk7CiAKICAgICAvLyBTeW50aGVzaXplIGEgcnVuIG9mIG1pc3NpbmcgZ2x5cGhz
LgogICAgIG1fZ2x5cGhzVmVjdG9yLmZpbGwoMCwgbV9nbHlwaENvdW50KTsKQEAgLTk5LDcgKzEw
NCw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0
UnVuKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250CiAgICAgbV9hZHZhbmNlcyA9IG1fYWR2YW5j
ZXNWZWN0b3IuZGF0YSgpOwogfQogCi12b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9u
dERhdGEpCit2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVu
c0ZvckNoYXJhY3RlcnNDb3JlVGV4dChjb25zdCBVQ2hhciogY3AsIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkK
IHsKICAgICBpZiAoIWZvbnREYXRhKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHJ1biBvZiBtaXNz
aW5nIGdseXBocyBmcm9tIHRoZSBwcmltYXJ5IGZvbnQuCg==
</data>
<flag name="review"
          id="26409"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>