<?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>103392</bug_id>
          
          <creation_ts>2012-11-27 04:23:23 -0800</creation_ts>
          <short_desc>Canvas does not draw any text if the font is not fully loaded yet</short_desc>
          <delta_ts>2012-12-13 14:32:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87355</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>haraken</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776606</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 04:23:23 -0800</bug_when>
    <thetext>As per the latest Canvas Element specification (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html):
&quot;If a font is used before it is fully loaded, or if the font style source object does not have that font in scope at the time the font is to be used, then it must be treated as if it was an unknown font, falling back to another as described by the relevant CSS specifications.&quot;

However, WebKit currently does not draw the text at all if the custom font is not fully loaded yet. We should handle this case better and follow the specification so that we use a fallback font for this case and draw the text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776617</commentid>
    <comment_count>1</comment_count>
      <attachid>176232</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 04:38:45 -0800</bug_when>
    <thetext>Created attachment 176232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776620</commentid>
    <comment_count>2</comment_count>
      <attachid>176234</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 04:40:10 -0800</bug_when>
    <thetext>Created attachment 176234
Patch

Fix typo in bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776625</commentid>
    <comment_count>3</comment_count>
      <attachid>176234</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-27 04:45:25 -0800</bug_when>
    <thetext>Comment on attachment 176234
Patch

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

&gt; Source/WebCore/platform/graphics/Font.cpp:159
&gt; +void Font::drawText(GraphicsContext* context, const TextRun&amp; run, const FloatPoint&amp; point, int from, int to, bool force) const

isn&apos;t enum better than bool?

&gt; Source/WebCore/platform/graphics/Font.cpp:162
&gt; +    // except if the &apos;force&apos; argument is set to true.

so what will it draw if fonts are not yet loaded?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776629</commentid>
    <comment_count>4</comment_count>
      <attachid>176237</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 04:57:09 -0800</bug_when>
    <thetext>Created attachment 176237
Patch

Converted test into a ref test as advised by Dominik offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776632</commentid>
    <comment_count>5</comment_count>
      <attachid>176232</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-27 04:59:07 -0800</bug_when>
    <thetext>Comment on attachment 176232
Patch

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

&gt; LayoutTests/http/tests/canvas/canvas-slow-font-loading-expected.txt:3
&gt; +On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.

You actually see more

&gt; LayoutTests/http/tests/canvas/canvas-slow-font-loading-expected.txt:10
&gt; +The 2 canvas should be identical (2 green &apos;X&apos; on a red background).

this should be moved up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776635</commentid>
    <comment_count>6</comment_count>
      <attachid>176237</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-27 05:00:45 -0800</bug_when>
    <thetext>Comment on attachment 176237
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2306
&gt; +            maskImageContext-&gt;drawBidiText(font, textRun, FloatPoint(0, 0), true /*force*/);

I don&apos;t think force is easy to understand here. Force what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776638</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 05:02:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 176232 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176232&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/canvas/canvas-slow-font-loading-expected.txt:3
&gt; &gt; +On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
&gt; 
&gt; You actually see more
&gt; 
&gt; &gt; LayoutTests/http/tests/canvas/canvas-slow-font-loading-expected.txt:10
&gt; &gt; +The 2 canvas should be identical (2 green &apos;X&apos; on a red background).
&gt; 
&gt; this should be moved up

It&apos;s a ref test now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776639</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 05:03:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 176237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2306
&gt; &gt; +            maskImageContext-&gt;drawBidiText(font, textRun, FloatPoint(0, 0), true /*force*/);
&gt; 
&gt; I don&apos;t think force is easy to understand here. Force what?

Agreed. Mikhail&apos;s suggestion to use an enum instead is good. I plan to do that to make it more understandable. I&apos;m currently think about a good enum name :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776709</commentid>
    <comment_count>9</comment_count>
      <attachid>176255</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 06:38:12 -0800</bug_when>
    <thetext>Created attachment 176255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776731</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 07:28:04 -0800</bug_when>
    <thetext>Sadly, I&apos;m getting a build error due to a conflict between &quot;Complex&quot; typedef from WTF::Complex and Complex enum value in Font.h.

I&apos;ll reupload a patch renaming &quot;Complex&quot; enum value to &quot;ComplexPath&quot; to avoid conflict with WTF::Complex :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776732</commentid>
    <comment_count>11</comment_count>
      <attachid>176262</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 07:28:32 -0800</bug_when>
    <thetext>Created attachment 176262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776781</commentid>
    <comment_count>12</comment_count>
      <attachid>176262</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 08:32:56 -0800</bug_when>
    <thetext>Comment on attachment 176262
Patch

Based on Kenneth&apos;s offline feedback, I&apos;ll split the &quot;Complex&quot; enum value renaming to a separate (dependent) patch. Clearing flags for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776918</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 10:05:49 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sadly, I&apos;m getting a build error due to a conflict between &quot;Complex&quot; typedef from WTF::Complex and Complex enum value in Font.h.
&gt; 
&gt; I&apos;ll reupload a patch renaming &quot;Complex&quot; enum value to &quot;ComplexPath&quot; to avoid conflict with WTF::Complex :(

My initial thinking was wrong. It is not conflicting with WTF::Complex. However, the &quot;Complex&quot; enum value in Font.h is conflicting with something on EFL port: I just don&apos;t know what yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776922</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 10:12:05 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #10)
&gt; &gt; Sadly, I&apos;m getting a build error due to a conflict between &quot;Complex&quot; typedef from WTF::Complex and Complex enum value in Font.h.
&gt; &gt; 
&gt; &gt; I&apos;ll reupload a patch renaming &quot;Complex&quot; enum value to &quot;ComplexPath&quot; to avoid conflict with WTF::Complex :(
&gt; 
&gt; My initial thinking was wrong. It is not conflicting with WTF::Complex. However, the &quot;Complex&quot; enum value in Font.h is conflicting with something on EFL port: I just don&apos;t know what yet.

Ah, I believe I finally found it:
/usr/include/X11/X.h:#define Complex			0	/* paths may intersect */

Any proposal on how to fix this? Is renaming &quot;Complex&quot; to &quot;ComplexPath&quot; an acceptable solution for everyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776925</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 10:14:52 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; Sadly, I&apos;m getting a build error due to a conflict between &quot;Complex&quot; typedef from WTF::Complex and Complex enum value in Font.h.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;ll reupload a patch renaming &quot;Complex&quot; enum value to &quot;ComplexPath&quot; to avoid conflict with WTF::Complex :(
&gt; &gt; 
&gt; &gt; My initial thinking was wrong. It is not conflicting with WTF::Complex. However, the &quot;Complex&quot; enum value in Font.h is conflicting with something on EFL port: I just don&apos;t know what yet.
&gt; 
&gt; Ah, I believe I finally found it:
&gt; /usr/include/X11/X.h:#define Complex            0    /* paths may intersect */
&gt; 
&gt; Any proposal on how to fix this? Is renaming &quot;Complex&quot; to &quot;ComplexPath&quot; an acceptable solution for everyone?

Alternatively, I could add the following to Font.h:
#ifdef Complex  // &quot;X11/X.h&quot; defines Complex to 0.
    #undef Complex
#endif

Any preference? I would personally prefer the #undef as it requires less change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776981</commentid>
    <comment_count>16</comment_count>
      <attachid>176303</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-27 10:54:29 -0800</bug_when>
    <thetext>Created attachment 176303
Patch

Proposal with the #undef to fix EFL port build break and minimize the amount of changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777017</commentid>
    <comment_count>17</comment_count>
      <attachid>176303</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 11:26:42 -0800</bug_when>
    <thetext>Comment on attachment 176303
Patch

Clearing flags on attachment: 176303

Committed r135888: &lt;http://trac.webkit.org/changeset/135888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777018</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 11:26:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790938</commentid>
    <comment_count>19</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-12-13 14:32:27 -0800</bug_when>
    <thetext>The new test is failing on Mac. I filed https://bugs.webkit.org/show_bug.cgi?id=104954</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176232</attachid>
            <date>2012-11-27 04:38:45 -0800</date>
            <delta_ts>2012-11-27 04:59:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_fallback_text.patch</filename>
            <type>text/plain</type>
            <size>11647</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWYzZmUyLi5lM2NkYzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpcyB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2Fu
dmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0yNiAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIENocm9t
aXVtIHRlc3QgZXhwZWN0YXRpb24gZm9yIHRlc3QgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmct
cmVwbGFjZW1lbnQtb3V0b2ZtZW1vcnkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ0ZjQ0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93
LWZvbnQtbG9hZGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0
aGF0IGlmIGEgZm9udCBpcyB1c2VkIGZvciBkcmF3aW5nIGJlZm9yZSBpdCBpcyBmdWxseSBsb2Fk
ZWQsIHRoZW4gYSBmYWxsYmFjayBmb250IGlzIHVzZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGlkZW50aWNhbCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1RoZSAyIGNhbnZhcyBzaG91bGQgYmUgaWRlbnRp
Y2FsICgyIGdyZWVuICdYJyBvbiBhIHJlZCBiYWNrZ3JvdW5kKS4KKworIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZiODcwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ct
Zm9udC1sb2FkaW5nLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DYW52YXMgdGVzdDogc2xvdyBmb250IGxvYWRpbmc8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitA
Zm9udC1mYWNlIHsKKyAgZm9udC1mYW1pbHk6IEFoZW07CisgIHNyYzogdXJsKCIuLi93ZWJmb250
L3Nsb3ctYWhlbS1sb2FkaW5nLmNnaSIpOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8cD48Yj5UaGUgMiBjYW52YXMgc2hvdWxkIGJlIGlkZW50aWNhbCAoMiBncmVlbiAnWCcgb24g
YSByZWQgYmFja2dyb3VuZCkuPC9iPjwvcD4KKworPGNhbnZhcyBpZD0icmVzdWx0Q2FudmFzIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cD5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2Nh
bnZhcz4KKworPGNhbnZhcyBpZD0icmVmZXJlbmNlQ2FudmFzIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjUwIj48cD5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaWYgYSBmb250IGlzIHVzZWQgZm9yIGRyYXdp
bmcgYmVmb3JlIGl0IGlzIGZ1bGx5IGxvYWRlZCwgdGhlbiBhIGZhbGxiYWNrIGZvbnQgaXMgdXNl
ZC4iKTsKKwordmFyIGlkZW50aWNhbCA9IHRydWU7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICB2YXIgcmVzdWx0Q2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdENhbnZhcycpOworICAgIHZhciByZXN1bHRDb250ZXh0ID0gcmVzdWx0Q2FudmFzLmdldENv
bnRleHQoJzJkJyk7CisgICAgdmFyIHJlZmVyZW5jZUNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZWZlcmVuY2VDYW52YXMnKTsKKyAgICB2YXIgcmVmZXJlbmNlQ29udGV4dCA9IHJl
ZmVyZW5jZUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCisgICAgLy8gQWhlbSBmb250IGxvYWRp
bmcgaXMgc2xvdyBzbyBpdCB3aWxsIG5vdCBiZSByZWFkeQorICAgIC8vIGluIHRpbWUgZm9yIGRy
YXdpbmcgdGhlIHRleHQuIEFzIGEgY29uc2VxdWVuY2UsIHRoZQorICAgIC8vIGZhbGxiYWNrIGZv
bnQgc2hvdWxkIGJlIHVzZWQgYW5kIHRoZSByZXN1bHQgc2hvdWxkCisgICAgLy8gYmUgMiBncmVl
biAnWCcgb24gYSByZWQgYmFja2dyb3VuZC4KKyAgICByZXN1bHRDb250ZXh0LmZvbnQgPSAnNjdw
eCBBaGVtLCBBcmlhbCc7CisgICAgcmVzdWx0Q29udGV4dC5maWxsU3R5bGUgPSAnI2YwMCc7Cisg
ICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKKyAgICByZXN1bHRDb250
ZXh0LmZpbGxTdHlsZSA9ICcjMGYwJzsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxUZXh0KCdYWCcs
IDAsIDUwKTsKKworICAgIC8vIEdlbmVyYXRlIHJlZmVyZW5jZS4KKyAgICByZWZlcmVuY2VDb250
ZXh0LmZvbnQgPSAnNjdweCBBcmlhbCc7CisgICAgcmVmZXJlbmNlQ29udGV4dC5maWxsU3R5bGUg
PSAnI2YwMCc7CisgICAgcmVmZXJlbmNlQ29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsK
KyAgICByZWZlcmVuY2VDb250ZXh0LmZpbGxTdHlsZSA9ICcjMGYwJzsKKyAgICByZWZlcmVuY2VD
b250ZXh0LmZpbGxUZXh0KCdYWCcsIDAsIDUwKTsKKworICAgIHZhciByZWZlcmVuY2VEYXRhID0g
cmVmZXJlbmNlQ29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgMTAwLCA1MCkKKyAgICB2YXIgcmVz
dWx0RGF0YSA9IHJlZmVyZW5jZUNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEwMCwgNTApCisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZmVyZW5jZURhdGEuZGF0YS5sZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAocmVmZXJlbmNlRGF0YS5kYXRhW2ldICE9IHJlc3VsdERhdGEuZGF0YVtp
XSkgeworICAgICAgICAgICAgaWRlbnRpY2FsID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgiaWRlbnRpY2FsIik7Cit9CisK
K3J1blRlc3QoKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2I1NTk2Li4wNWFmZjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTEtMjcgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBDYW52YXMgZG9lcyBub3Qg
ZHJhdyBhbnkgdGV4dCBpcyB0aGUgZm9udCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCgpIHNvIHRoYXQgdGhlCisgICAgICAg
IHRleHQgaXMgYmVpbmcgZHJhd24sIGV2ZW4gaWYgY3VzdG9tIGZvbnRzIGFyZSBzdGlsbCBiZWlu
ZyBsb2FkZWQuCisgICAgICAgIFdpdGhvdXQgdGhpcywgV2ViS2l0IHdhcyBub3QgZHJhd2luZyBh
bnkgdGV4dCBvbiB0aGUgY2FudmFzIGlmCisgICAgICAgIHRoZSBuZWVkZWQgZm9udCBpcyBjdXN0
b20gYW5kIGlzIG5vdCBmdWxseSBsb2FkZWQgeWV0LiBUaGlzIHNlZW1zCisgICAgICAgIGJyb2tl
bi4KKworICAgICAgICBUaGUgbmV3IGJlaGF2aW9yIGlzIGFjY29yZGluZyB0byBzcGVjaWZpY2F0
aW9uOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoZSBz
cGVjaWZpY2F0aW9uIHNheXM6ICJJZiBhIGZvbnQgaXMgdXNlZCBiZWZvcmUgaXQgaXMgZnVsbHkK
KyAgICAgICAgbG9hZGVkLCBvciBpZiB0aGUgZm9udCBzdHlsZSBzb3VyY2Ugb2JqZWN0IGRvZXMg
bm90IGhhdmUgdGhhdAorICAgICAgICBmb250IGluIHNjb3BlIGF0IHRoZSB0aW1lIHRoZSBmb250
IGlzIHRvIGJlIHVzZWQsIHRoZW4gaXQgbXVzdCBiZQorICAgICAgICB0cmVhdGVkIGFzIGlmIGl0
IHdhcyBhbiB1bmtub3duIGZvbnQsIGZhbGxpbmcgYmFjayB0byBhbm90aGVyIGFzCisgICAgICAg
IGRlc2NyaWJlZCBieSB0aGUgcmVsZXZhbnQgQ1NTIHNwZWNpZmljYXRpb25zLiIKKworICAgICAg
ICBUZXN0OiBodHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbAor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpkcmF3VGV4dCk6IEFkZCAnZm9yY2UnIGFyZ3VtZW50IGFuZCBkcmF3CisgICAg
ICAgIHRoZSB0ZXh0IGlmIGl0IGlzIHNldCB0byB0cnVlLCBldmVuIGlmIGN1c3RvbSBmb250cyBh
cmUKKyAgICAgICAgYmVpbmcgbG9hZGVkLiBUaGlzIGlzIG5lZWRlZCBieSBDYW52YXMgY29kZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQpOiBBZGQgJ2ZvcmNlJworICAg
ICAgICBhcmd1bWVudCBzbyB0aGF0IGl0IGlzIHBhc3NlZCBvbiB0byBGb250OjpkcmF3VGV4dCgp
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0KToKKwogMjAxMi0xMS0yNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogU2V0
IHZpc2liaWxpdHkgdG8gYSBtYXNrIGxheWVyIGluIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
VmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZWY3NTRmNS4uNGI4YTU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0yMzAzLDEwICsyMzAzLDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAg
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIHRydWUgLypm
b3JjZSovKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKLSAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7Cisg
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwg
bG9jYXRpb24sIHRydWUgLypmb3JjZSovKTsKICAgICAgICAgfQogCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBjLT50cmFuc2xhdGUobG9jYXRpb24ueCgp
LCBsb2NhdGlvbi55KCkpOwogICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAg
c28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgog
ICAgICAgICBjLT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBmb250
V2lkdGgpIDogMCksIDEpKTsKLSAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4s
IEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1
biwgRmxvYXRQb2ludCgwLCAwKSwgdHJ1ZSAvKmZvcmNlKi8pOwogICAgIH0gZWxzZQotICAgICAg
ICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOworICAgICAgICBjLT5k
cmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIHRydWUgLypmb3JjZSovKTsKIAog
ICAgIGRpZERyYXcodGV4dFJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDBmMzJlNDkuLjc2ZjNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNTYsMTAgKzE1NiwxMSBAQCB2b2lkIEZvbnQ6OnVw
ZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1f
dHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAK
LXZvaWQgRm9udDo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAordm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIGJv
b2wgZm9yY2UpIGNvbnN0CiB7Ci0gICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGlsZSB3ZSBh
cmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcu
Ci0gICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpKQorICAgIC8vIERvbid0IGRyYXcgYW55dGhp
bmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUgcHJvY2Vz
cyBvZiBsb2FkaW5nLAorICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVudCBpcyBz
ZXQgdG8gdHJ1ZS4KKyAgICBpZiAobG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgIWZvcmNlKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgdG8gPSAodG8gPT0gLTEgPyBydW4ubGVuZ3RoKCkgOiB0
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggYjYwZDlkZC4u
NTQ5YTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtOTcs
NyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4pIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEp
IGNvbnN0OworICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBib29sIGZv
cmNlID0gZmFsc2UpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OwogCiAgICAgZmxv
YXQgd2lkdGgoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiog
ZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1NWYzMWY0Li4zN2IzNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjbwogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3ModGhpcywgcnVuLCBt
YXJrLCBwb2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Jp
ZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJv
b2wgZm9yY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDI4LDcgKzQyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgICAgIHN1
YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwgPyBSVEwgOiBMVFIpOwogICAgICAgICBzdWJydW4uc2V0
RGlyZWN0aW9uYWxPdmVycmlkZShiaWRpUnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCi0gICAg
ICAgIGZvbnQuZHJhd1RleHQodGhpcywgc3VicnVuLCBjdXJyUG9pbnQpOworICAgICAgICBmb250
LmRyYXdUZXh0KHRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCAtMSwgZm9yY2UpOwogCiAgICAg
ICAgIGJpZGlSdW4gPSBiaWRpUnVuLT5uZXh0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBIYXZlIEZv
bnQ6OmRyYXdUZXh0IHJldHVybiB0aGUgd2lkdGggb2Ygd2hhdCBpdCBkcmV3IHNvIHRoYXQgd2Ug
ZG9uJ3QgaGF2ZSB0byByZS1tZWFzdXJlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg1Y2ZmOTkuLjNhZjBjMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNTUsNyArMzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAgICAgICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3MoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mICwgY29uc3QgQXRvbWljU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7Ci0g
ICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYpOworICAgICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGZvcmNlID0gZmFsc2UpOwog
ICAgICAgICB2b2lkIGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBoLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yLCBDb2xvclNwYWNlLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKTsKIAogICAgICAgICBl
bnVtIFJvdW5kaW5nTW9kZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176234</attachid>
            <date>2012-11-27 04:40:10 -0800</date>
            <delta_ts>2012-11-27 04:57:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_fallback_text.patch</filename>
            <type>text/plain</type>
            <size>11647</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWYzZmUyLi43NjI0ZDY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY2Fu
dmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0yNiAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIENocm9t
aXVtIHRlc3QgZXhwZWN0YXRpb24gZm9yIHRlc3QgTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmct
cmVwbGFjZW1lbnQtb3V0b2ZtZW1vcnkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ0ZjQ0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93
LWZvbnQtbG9hZGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0
aGF0IGlmIGEgZm9udCBpcyB1c2VkIGZvciBkcmF3aW5nIGJlZm9yZSBpdCBpcyBmdWxseSBsb2Fk
ZWQsIHRoZW4gYSBmYWxsYmFjayBmb250IGlzIHVzZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGlkZW50aWNhbCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1RoZSAyIGNhbnZhcyBzaG91bGQgYmUgaWRlbnRp
Y2FsICgyIGdyZWVuICdYJyBvbiBhIHJlZCBiYWNrZ3JvdW5kKS4KKworIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZiODcwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ct
Zm9udC1sb2FkaW5nLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DYW52YXMgdGVzdDogc2xvdyBmb250IGxvYWRpbmc8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitA
Zm9udC1mYWNlIHsKKyAgZm9udC1mYW1pbHk6IEFoZW07CisgIHNyYzogdXJsKCIuLi93ZWJmb250
L3Nsb3ctYWhlbS1sb2FkaW5nLmNnaSIpOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8cD48Yj5UaGUgMiBjYW52YXMgc2hvdWxkIGJlIGlkZW50aWNhbCAoMiBncmVlbiAnWCcgb24g
YSByZWQgYmFja2dyb3VuZCkuPC9iPjwvcD4KKworPGNhbnZhcyBpZD0icmVzdWx0Q2FudmFzIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cD5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2Nh
bnZhcz4KKworPGNhbnZhcyBpZD0icmVmZXJlbmNlQ2FudmFzIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjUwIj48cD5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKworPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgaWYgYSBmb250IGlzIHVzZWQgZm9yIGRyYXdp
bmcgYmVmb3JlIGl0IGlzIGZ1bGx5IGxvYWRlZCwgdGhlbiBhIGZhbGxiYWNrIGZvbnQgaXMgdXNl
ZC4iKTsKKwordmFyIGlkZW50aWNhbCA9IHRydWU7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICB2YXIgcmVzdWx0Q2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdENhbnZhcycpOworICAgIHZhciByZXN1bHRDb250ZXh0ID0gcmVzdWx0Q2FudmFzLmdldENv
bnRleHQoJzJkJyk7CisgICAgdmFyIHJlZmVyZW5jZUNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZWZlcmVuY2VDYW52YXMnKTsKKyAgICB2YXIgcmVmZXJlbmNlQ29udGV4dCA9IHJl
ZmVyZW5jZUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCisgICAgLy8gQWhlbSBmb250IGxvYWRp
bmcgaXMgc2xvdyBzbyBpdCB3aWxsIG5vdCBiZSByZWFkeQorICAgIC8vIGluIHRpbWUgZm9yIGRy
YXdpbmcgdGhlIHRleHQuIEFzIGEgY29uc2VxdWVuY2UsIHRoZQorICAgIC8vIGZhbGxiYWNrIGZv
bnQgc2hvdWxkIGJlIHVzZWQgYW5kIHRoZSByZXN1bHQgc2hvdWxkCisgICAgLy8gYmUgMiBncmVl
biAnWCcgb24gYSByZWQgYmFja2dyb3VuZC4KKyAgICByZXN1bHRDb250ZXh0LmZvbnQgPSAnNjdw
eCBBaGVtLCBBcmlhbCc7CisgICAgcmVzdWx0Q29udGV4dC5maWxsU3R5bGUgPSAnI2YwMCc7Cisg
ICAgcmVzdWx0Q29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKKyAgICByZXN1bHRDb250
ZXh0LmZpbGxTdHlsZSA9ICcjMGYwJzsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxUZXh0KCdYWCcs
IDAsIDUwKTsKKworICAgIC8vIEdlbmVyYXRlIHJlZmVyZW5jZS4KKyAgICByZWZlcmVuY2VDb250
ZXh0LmZvbnQgPSAnNjdweCBBcmlhbCc7CisgICAgcmVmZXJlbmNlQ29udGV4dC5maWxsU3R5bGUg
PSAnI2YwMCc7CisgICAgcmVmZXJlbmNlQ29udGV4dC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsK
KyAgICByZWZlcmVuY2VDb250ZXh0LmZpbGxTdHlsZSA9ICcjMGYwJzsKKyAgICByZWZlcmVuY2VD
b250ZXh0LmZpbGxUZXh0KCdYWCcsIDAsIDUwKTsKKworICAgIHZhciByZWZlcmVuY2VEYXRhID0g
cmVmZXJlbmNlQ29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgMTAwLCA1MCkKKyAgICB2YXIgcmVz
dWx0RGF0YSA9IHJlZmVyZW5jZUNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEwMCwgNTApCisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZmVyZW5jZURhdGEuZGF0YS5sZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAocmVmZXJlbmNlRGF0YS5kYXRhW2ldICE9IHJlc3VsdERhdGEuZGF0YVtp
XSkgeworICAgICAgICAgICAgaWRlbnRpY2FsID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNob3VsZEJlVHJ1ZSgiaWRlbnRpY2FsIik7Cit9CisK
K3J1blRlc3QoKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2I1NTk2Li5mNTE1MjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTEtMjcgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBDYW52YXMgZG9lcyBub3Qg
ZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCgpIHNvIHRoYXQgdGhlCisgICAgICAg
IHRleHQgaXMgYmVpbmcgZHJhd24sIGV2ZW4gaWYgY3VzdG9tIGZvbnRzIGFyZSBzdGlsbCBiZWlu
ZyBsb2FkZWQuCisgICAgICAgIFdpdGhvdXQgdGhpcywgV2ViS2l0IHdhcyBub3QgZHJhd2luZyBh
bnkgdGV4dCBvbiB0aGUgY2FudmFzIGlmCisgICAgICAgIHRoZSBuZWVkZWQgZm9udCBpcyBjdXN0
b20gYW5kIGlzIG5vdCBmdWxseSBsb2FkZWQgeWV0LiBUaGlzIHNlZW1zCisgICAgICAgIGJyb2tl
bi4KKworICAgICAgICBUaGUgbmV3IGJlaGF2aW9yIGlzIGFjY29yZGluZyB0byBzcGVjaWZpY2F0
aW9uOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoZSBz
cGVjaWZpY2F0aW9uIHNheXM6ICJJZiBhIGZvbnQgaXMgdXNlZCBiZWZvcmUgaXQgaXMgZnVsbHkK
KyAgICAgICAgbG9hZGVkLCBvciBpZiB0aGUgZm9udCBzdHlsZSBzb3VyY2Ugb2JqZWN0IGRvZXMg
bm90IGhhdmUgdGhhdAorICAgICAgICBmb250IGluIHNjb3BlIGF0IHRoZSB0aW1lIHRoZSBmb250
IGlzIHRvIGJlIHVzZWQsIHRoZW4gaXQgbXVzdCBiZQorICAgICAgICB0cmVhdGVkIGFzIGlmIGl0
IHdhcyBhbiB1bmtub3duIGZvbnQsIGZhbGxpbmcgYmFjayB0byBhbm90aGVyIGFzCisgICAgICAg
IGRlc2NyaWJlZCBieSB0aGUgcmVsZXZhbnQgQ1NTIHNwZWNpZmljYXRpb25zLiIKKworICAgICAg
ICBUZXN0OiBodHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbAor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpkcmF3VGV4dCk6IEFkZCAnZm9yY2UnIGFyZ3VtZW50IGFuZCBkcmF3CisgICAg
ICAgIHRoZSB0ZXh0IGlmIGl0IGlzIHNldCB0byB0cnVlLCBldmVuIGlmIGN1c3RvbSBmb250cyBh
cmUKKyAgICAgICAgYmVpbmcgbG9hZGVkLiBUaGlzIGlzIG5lZWRlZCBieSBDYW52YXMgY29kZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChGb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQpOiBBZGQgJ2ZvcmNlJworICAg
ICAgICBhcmd1bWVudCBzbyB0aGF0IGl0IGlzIHBhc3NlZCBvbiB0byBGb250OjpkcmF3VGV4dCgp
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0KToKKwogMjAxMi0xMS0yNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogU2V0
IHZpc2liaWxpdHkgdG8gYSBtYXNrIGxheWVyIGluIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
VmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZWY3NTRmNS4uNGI4YTU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0yMzAzLDEwICsyMzAzLDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAg
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIHRydWUgLypm
b3JjZSovKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKLSAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7Cisg
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwg
bG9jYXRpb24sIHRydWUgLypmb3JjZSovKTsKICAgICAgICAgfQogCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBjLT50cmFuc2xhdGUobG9jYXRpb24ueCgp
LCBsb2NhdGlvbi55KCkpOwogICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAg
c28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgog
ICAgICAgICBjLT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBmb250
V2lkdGgpIDogMCksIDEpKTsKLSAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4s
IEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1
biwgRmxvYXRQb2ludCgwLCAwKSwgdHJ1ZSAvKmZvcmNlKi8pOwogICAgIH0gZWxzZQotICAgICAg
ICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOworICAgICAgICBjLT5k
cmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIHRydWUgLypmb3JjZSovKTsKIAog
ICAgIGRpZERyYXcodGV4dFJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDBmMzJlNDkuLjc2ZjNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNTYsMTAgKzE1NiwxMSBAQCB2b2lkIEZvbnQ6OnVw
ZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1f
dHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAK
LXZvaWQgRm9udDo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAordm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIGJv
b2wgZm9yY2UpIGNvbnN0CiB7Ci0gICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGlsZSB3ZSBh
cmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcu
Ci0gICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpKQorICAgIC8vIERvbid0IGRyYXcgYW55dGhp
bmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUgcHJvY2Vz
cyBvZiBsb2FkaW5nLAorICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVudCBpcyBz
ZXQgdG8gdHJ1ZS4KKyAgICBpZiAobG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgIWZvcmNlKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgdG8gPSAodG8gPT0gLTEgPyBydW4ubGVuZ3RoKCkgOiB0
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggYjYwZDlkZC4u
NTQ5YTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtOTcs
NyArOTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxl
Y3Rvcj4pIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEp
IGNvbnN0OworICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBib29sIGZv
cmNlID0gZmFsc2UpIGNvbnN0OwogICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OwogCiAgICAgZmxv
YXQgd2lkdGgoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiog
ZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1NWYzMWY0Li4zN2IzNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjbwogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3ModGhpcywgcnVuLCBt
YXJrLCBwb2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Jp
ZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJv
b2wgZm9yY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDI4LDcgKzQyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgICAgIHN1
YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwgPyBSVEwgOiBMVFIpOwogICAgICAgICBzdWJydW4uc2V0
RGlyZWN0aW9uYWxPdmVycmlkZShiaWRpUnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCi0gICAg
ICAgIGZvbnQuZHJhd1RleHQodGhpcywgc3VicnVuLCBjdXJyUG9pbnQpOworICAgICAgICBmb250
LmRyYXdUZXh0KHRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCAtMSwgZm9yY2UpOwogCiAgICAg
ICAgIGJpZGlSdW4gPSBiaWRpUnVuLT5uZXh0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBIYXZlIEZv
bnQ6OmRyYXdUZXh0IHJldHVybiB0aGUgd2lkdGggb2Ygd2hhdCBpdCBkcmV3IHNvIHRoYXQgd2Ug
ZG9uJ3QgaGF2ZSB0byByZS1tZWFzdXJlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg1Y2ZmOTkuLjNhZjBjMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0zNTUsNyArMzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAgICAgICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3MoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mICwgY29uc3QgQXRvbWljU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7Ci0g
ICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYpOworICAgICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGZvcmNlID0gZmFsc2UpOwog
ICAgICAgICB2b2lkIGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBoLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yLCBDb2xvclNwYWNlLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKTsKIAogICAgICAgICBl
bnVtIFJvdW5kaW5nTW9kZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176237</attachid>
            <date>2012-11-27 04:57:09 -0800</date>
            <delta_ts>2012-11-27 06:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_fallback_text.patch</filename>
            <type>text/plain</type>
            <size>10280</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWYzZmUyLi5iMzg1M2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjYg
IERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBDaHJv
bWl1bSB0ZXN0IGV4cGVjdGF0aW9uIGZvciB0ZXN0IExheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LXJlcGxhY2VtZW50LW91dG9mbWVtb3J5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjNjZiMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1z
bG93LWZvbnQtbG9hZGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJjIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48
cD5GQUlMIChmYWxsYmFjayBjb250ZW50KTwvcD48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0
Q29udGV4dCgnMmQnKTsKKworY3R4LmZvbnQgPSAnNjdweCBBcmlhbCc7CitjdHguZmlsbFN0eWxl
ID0gJyNmMDAnOworY3R4LmZpbGxSZWN0KDAsIDAsIDEwMCwgNTApOworY3R4LmZpbGxTdHlsZSA9
ICcjMGYwJzsKK2N0eC5maWxsVGV4dCgnWFgnLCAwLCA1MCk7Cis8L3NjcmlwdD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2Fk
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250
LWxvYWRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI2YzI4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFz
LXNsb3ctZm9udC1sb2FkaW5nLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5DYW52YXMgdGVzdDogc2xvdyBmb250IGxvYWRpbmc8L3RpdGxlPgor
PHN0eWxlPgorQGZvbnQtZmFjZSB7CisgIGZvbnQtZmFtaWx5OiBBaGVtOworICBzcmM6IHVybCgi
Li4vd2ViZm9udC9zbG93LWFoZW0tbG9hZGluZy5jZ2kiKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKworPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHA+RkFJ
TCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+CisKKzxzY3JpcHQ+Cit2YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKworLy8gQWhlbSBmb250IGxvYWRpbmcgaXMgc2xvdyBzbyBpdCB3aWxsIG5v
dCBiZSByZWFkeQorLy8gaW4gdGltZSBmb3IgZHJhd2luZyB0aGUgdGV4dC4gQXMgYSBjb25zZXF1
ZW5jZSwgdGhlCisvLyBmYWxsYmFjayBmb250IHNob3VsZCBiZSB1c2VkIGFuZCB0aGUgcmVzdWx0
IHNob3VsZAorLy8gYmUgMiBncmVlbiAnWCcgb24gYSByZWQgYmFja2dyb3VuZC4KK2N0eC5mb250
ID0gJzY3cHggQWhlbSwgQXJpYWwnOworY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsKK2N0eC5maWxs
UmVjdCgwLCAwLCAxMDAsIDUwKTsKK2N0eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFRl
eHQoJ1hYJywgMCwgNTApOworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2I1NTk2Li5mNTE1
MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTEtMjcgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBDYW52YXMgZG9l
cyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCgpIHNvIHRoYXQgdGhlCisg
ICAgICAgIHRleHQgaXMgYmVpbmcgZHJhd24sIGV2ZW4gaWYgY3VzdG9tIGZvbnRzIGFyZSBzdGls
bCBiZWluZyBsb2FkZWQuCisgICAgICAgIFdpdGhvdXQgdGhpcywgV2ViS2l0IHdhcyBub3QgZHJh
d2luZyBhbnkgdGV4dCBvbiB0aGUgY2FudmFzIGlmCisgICAgICAgIHRoZSBuZWVkZWQgZm9udCBp
cyBjdXN0b20gYW5kIGlzIG5vdCBmdWxseSBsb2FkZWQgeWV0LiBUaGlzIHNlZW1zCisgICAgICAg
IGJyb2tlbi4KKworICAgICAgICBUaGUgbmV3IGJlaGF2aW9yIGlzIGFjY29yZGluZyB0byBzcGVj
aWZpY2F0aW9uOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbAorCisgICAgICAg
IFRoZSBzcGVjaWZpY2F0aW9uIHNheXM6ICJJZiBhIGZvbnQgaXMgdXNlZCBiZWZvcmUgaXQgaXMg
ZnVsbHkKKyAgICAgICAgbG9hZGVkLCBvciBpZiB0aGUgZm9udCBzdHlsZSBzb3VyY2Ugb2JqZWN0
IGRvZXMgbm90IGhhdmUgdGhhdAorICAgICAgICBmb250IGluIHNjb3BlIGF0IHRoZSB0aW1lIHRo
ZSBmb250IGlzIHRvIGJlIHVzZWQsIHRoZW4gaXQgbXVzdCBiZQorICAgICAgICB0cmVhdGVkIGFz
IGlmIGl0IHdhcyBhbiB1bmtub3duIGZvbnQsIGZhbGxpbmcgYmFjayB0byBhbm90aGVyIGFzCisg
ICAgICAgIGRlc2NyaWJlZCBieSB0aGUgcmVsZXZhbnQgQ1NTIHNwZWNpZmljYXRpb25zLiIKKwor
ICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcu
aHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250OjpkcmF3VGV4dCk6IEFkZCAnZm9yY2UnIGFyZ3VtZW50IGFuZCBkcmF3
CisgICAgICAgIHRoZSB0ZXh0IGlmIGl0IGlzIHNldCB0byB0cnVlLCBldmVuIGlmIGN1c3RvbSBm
b250cyBhcmUKKyAgICAgICAgYmVpbmcgbG9hZGVkLiBUaGlzIGlzIG5lZWRlZCBieSBDYW52YXMg
Y29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQpOiBBZGQgJ2ZvcmNl
JworICAgICAgICBhcmd1bWVudCBzbyB0aGF0IGl0IGlzIHBhc3NlZCBvbiB0byBGb250OjpkcmF3
VGV4dCgpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoR3JhcGhpY3NDb250ZXh0KToKKwogMjAxMi0xMS0yNiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogU2V0IHZpc2liaWxpdHkgdG8gYSBtYXNrIGxheWVyIGluIEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVmlzaWJsZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZWY3NTRmNS4uNGI4YTU4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC0yMzAzLDEwICsyMzAzLDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24ueCgp
IC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAg
ICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0
aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0
KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIHRy
dWUgLypmb3JjZSovKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQtPnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKLSAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlv
bik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4
dFJ1biwgbG9jYXRpb24sIHRydWUgLypmb3JjZSovKTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CkBAIC0yMzMwLDkgKzIzMzAs
OSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBjLT50cmFuc2xhdGUobG9jYXRp
b24ueCgpLCBsb2NhdGlvbi55KCkpOwogICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRo
IGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3
b3JrLgogICAgICAgICBjLT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGgg
LyBmb250V2lkdGgpIDogMCksIDEpKTsKLSAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRl
eHRSdW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBjLT5kcmF3QmlkaVRleHQoZm9udCwg
dGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgdHJ1ZSAvKmZvcmNlKi8pOwogICAgIH0gZWxzZQot
ICAgICAgICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOworICAgICAg
ICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIHRydWUgLypmb3JjZSov
KTsKIAogICAgIGRpZERyYXcodGV4dFJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDBmMzJlNDkuLjllMWU3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNTYsMTAgKzE1NiwxMiBAQCB2b2lkIEZv
bnQ6OnVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKSBjb25zdAog
ICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7
CiB9CiAKLXZvaWQgRm9udDo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRv
KSBjb25zdAordm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQg
dG8sIGJvb2wgZm9yY2UpIGNvbnN0CiB7Ci0gICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGls
ZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxv
YWRpbmcuCi0gICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpKQorICAgIC8vIERvbid0IGRyYXcg
YW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUg
cHJvY2VzcyBvZiBsb2FkaW5nLAorICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVu
dCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZhbGxiYWNrCisg
ICAgLy8gZm9udCkuCisgICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpICYmICFmb3JjZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIHRvID0gKHRvID09IC0xID8gcnVuLmxlbmd0aCgpIDog
dG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGI2MGQ5ZGQu
LjU0OWE4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTk3
LDcgKzk3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxGb250U2Vs
ZWN0b3I+KSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0x
KSBjb25zdDsKKyAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgYm9vbCBm
b3JjZSA9IGZhbHNlKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAgIGZs
b2F0IHdpZHRoKGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4q
IGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggNTVmMzFmNC4uMzdiMzQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY28KICAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwg
bWFyaywgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdC
aWRpVGV4dChjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBG
b250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBi
b29sIGZvcmNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0
KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRgogICAgICAgICBz
dWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRSKTsKICAgICAgICAgc3VicnVuLnNl
dERpcmVjdGlvbmFsT3ZlcnJpZGUoYmlkaVJ1bi0+ZGlyT3ZlcnJpZGUoZmFsc2UpKTsKIAotICAg
ICAgICBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1biwgY3VyclBvaW50KTsKKyAgICAgICAgZm9u
dC5kcmF3VGV4dCh0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgLTEsIGZvcmNlKTsKIAogICAg
ICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwogICAgICAgICAvLyBGSVhNRTogSGF2ZSBG
b250OjpkcmF3VGV4dCByZXR1cm4gdGhlIHdpZHRoIG9mIHdoYXQgaXQgZHJldyBzbyB0aGF0IHdl
IGRvbid0IGhhdmUgdG8gcmUtbWVhc3VyZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NWNmZjk5Li4zYWYwYzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtMzU1LDcgKzM1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIGRyYXdUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQ
b2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwogICAgICAgICB2b2lkIGRyYXdFbXBo
YXNpc01hcmtzKGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiAsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwot
ICAgICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udCYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBmb3JjZSA9IGZhbHNlKTsK
ICAgICAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yVGV4dChjb25zdCBGb250JiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgaCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRD
b2xvciwgQ29sb3JTcGFjZSwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAKICAgICAgICAg
ZW51bSBSb3VuZGluZ01vZGUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176255</attachid>
            <date>2012-11-27 06:38:12 -0800</date>
            <delta_ts>2012-11-27 07:28:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_fallback_text.patch</filename>
            <type>text/plain</type>
            <size>11216</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjgzMjExLi4zMjM0MmQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjcg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAg
ICAgUmVkdWNlIFhIUiB0aW1lb3V0IHRlc3RzIGV4ZWN1dGlvbiB0aW1lCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmctZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRkYzY2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSI1MCI+PHA+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7Cit2YXIgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5mb250ID0gJzY3cHggQXJpYWwnOwor
Y3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsKK2N0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKK2N0
eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFRleHQoJ1hYJywgMCwgNTApOworPC9zY3Jp
cHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1z
bG93LWZvbnQtbG9hZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2Fu
dmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzUyNmMyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IHNsb3cgZm9udCBsb2Fk
aW5nPC90aXRsZT4KKzxzdHlsZT4KK0Bmb250LWZhY2UgeworICBmb250LWZhbWlseTogQWhlbTsK
KyAgc3JjOiB1cmwoIi4uL3dlYmZvbnQvc2xvdy1haGVtLWxvYWRpbmcuY2dpIik7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iNTAiPjxwPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8c2NyaXB0
PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7Cit2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKKy8vIEFoZW0gZm9udCBsb2FkaW5nIGlzIHNsb3cg
c28gaXQgd2lsbCBub3QgYmUgcmVhZHkKKy8vIGluIHRpbWUgZm9yIGRyYXdpbmcgdGhlIHRleHQu
IEFzIGEgY29uc2VxdWVuY2UsIHRoZQorLy8gZmFsbGJhY2sgZm9udCBzaG91bGQgYmUgdXNlZCBh
bmQgdGhlIHJlc3VsdCBzaG91bGQKKy8vIGJlIDIgZ3JlZW4gJ1gnIG9uIGEgcmVkIGJhY2tncm91
bmQuCitjdHguZm9udCA9ICc2N3B4IEFoZW0sIEFyaWFsJzsKK2N0eC5maWxsU3R5bGUgPSAnI2Yw
MCc7CitjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CitjdHguZmlsbFN0eWxlID0gJyMwZjAn
OworY3R4LmZpbGxUZXh0KCdYWCcsIDAsIDUwKTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzRmZjQ4YS4uYjQ1NzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTExLTI3
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAg
ICAgQ2FudmFzIGRvZXMgbm90IGRyYXcgYW55IHRleHQgaWYgdGhlIGZvbnQgaXMgbm90IGZ1bGx5
IGxvYWRlZCB5ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoKSBz
byB0aGF0IHRoZQorICAgICAgICB0ZXh0IGlzIGJlaW5nIGRyYXduLCBldmVuIGlmIGN1c3RvbSBm
b250cyBhcmUgc3RpbGwgYmVpbmcgbG9hZGVkLgorICAgICAgICBXaXRob3V0IHRoaXMsIFdlYktp
dCB3YXMgbm90IGRyYXdpbmcgYW55IHRleHQgb24gdGhlIGNhbnZhcyBpZgorICAgICAgICB0aGUg
bmVlZGVkIGZvbnQgaXMgY3VzdG9tIGFuZCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldC4gVGhpcyBz
ZWVtcworICAgICAgICBicm9rZW4uCisKKyAgICAgICAgVGhlIG5ldyBiZWhhdmlvciBpcyBhY2Nv
cmRpbmcgdG8gc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0
bWwKKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzOiAiSWYgYSBmb250IGlzIHVzZWQg
YmVmb3JlIGl0IGlzIGZ1bGx5CisgICAgICAgIGxvYWRlZCwgb3IgaWYgdGhlIGZvbnQgc3R5bGUg
c291cmNlIG9iamVjdCBkb2VzIG5vdCBoYXZlIHRoYXQKKyAgICAgICAgZm9udCBpbiBzY29wZSBh
dCB0aGUgdGltZSB0aGUgZm9udCBpcyB0byBiZSB1c2VkLCB0aGVuIGl0IG11c3QgYmUKKyAgICAg
ICAgdHJlYXRlZCBhcyBpZiBpdCB3YXMgYW4gdW5rbm93biBmb250LCBmYWxsaW5nIGJhY2sgdG8g
YW5vdGhlciBhcworICAgICAgICBkZXNjcmliZWQgYnkgdGhlIHJlbGV2YW50IENTUyBzcGVjaWZp
Y2F0aW9ucy4iCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ct
Zm9udC1sb2FkaW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd1RleHQpOiBBZGQgYXJndW1lbnQgdG8g
c3BlY2lmeSB0aGUgYmVoYXZpb3IKKyAgICAgICAgd2hlbiBjdXN0b20gZm9udHMgYXJlIG5vdCBy
ZWFkeS4gQnkgZGVmYXVsdCwgaXQgd2lsbCBub3QgZHJhdworICAgICAgICBhbnl0aGluZyAoc2Ft
ZSBiZWhhdmlvciBhcyBiZWZvcmUpLiBIb3dldmVyLCB0aGUgQ2FudmFzIGNvZGUKKyAgICAgICAg
Y2FuIG5vdyByZXF1ZXN0IHRoYXQgYSBmYWxsYmFjayBmb250IGlzIHVzZWQgaWYgdGhlIGN1c3Rv
bQorICAgICAgICBmb250IGlzIG5vdCBmdWxseSBsb2FkZWQgeWV0LgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0KToKKwogMjAx
Mi0xMS0yNyAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTIFJlZ2lvbnNdIEFic29sdXRlbHkgcG9zaXRpb25lZCByZWdpb25zIGRvIG5vdCBleHBhbmQg
dG8gZmlsbCB0aGVpciBjb250YWluZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGZhNzFhNGEuLjNlYjM4
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjMwNiwxMCArMjMwNiwxMCBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsbwogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKGxvY2F0
aW9uLngoKSAtIG1hc2tSZWN0LngoKSwgbG9jYXRpb24ueSgpIC0gbWFza1JlY3QueSgpKTsKICAg
ICAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21wb3NpdGluZyBv
cGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxsIHdvcmsuCiAgICAgICAgICAgICBtYXNr
SW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBm
b250V2lkdGgpIDogMCksIDEpKTsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmRyYXdC
aWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAs
IDApLCBGb250OjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAt
bWFza1JlY3QueSgpKTsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4
dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnQ6OlVzZUZhbGxiYWNr
SWZGb250Tm90UmVhZHkpOwogICAgICAgICB9CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKQEAgLTIzMzMsOSArMjMzMyw5IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvCiAgICAgICAgIGMtPnRyYW5zbGF0ZShsb2NhdGlvbi54KCksIGxvY2F0aW9u
LnkoKSk7CiAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21wb3Np
dGluZyBvcGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxsIHdvcmsuCiAgICAgICAgIGMt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICBjLT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgRmxvYXRQb2lu
dCgwLCAwKSk7CisgICAgICAgIGMtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250OjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICB9IGVsc2UK
LSAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxvY2F0aW9uKTsKKyAgICAg
ICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250OjpVc2VGYWxs
YmFja0lmRm9udE5vdFJlYWR5KTsKIAogICAgIGRpZERyYXcodGV4dFJlY3QpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDBmMzJlNDkuLmY1NTcyNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNTYsMTAg
KzE1NiwxMiBAQCB2b2lkIEZvbnQ6OnVwZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9u
dFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBl
c2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLXZvaWQgRm9udDo6ZHJhd1RleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAordm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7Ci0gICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGls
ZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxv
YWRpbmcuCi0gICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpKQorICAgIC8vIERvbid0IGRyYXcg
YW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUg
cHJvY2VzcyBvZiBsb2FkaW5nLAorICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVu
dCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZhbGxiYWNrCisg
ICAgLy8gZm9udCkuCisgICAgaWYgKGxvYWRpbmdDdXN0b21Gb250cygpICYmIGN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiA9PSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICB0byA9ICh0byA9PSAtMSA/IHJ1bi5sZW5ndGgoKSA6IHRvKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCBiNjBkOWRkLi44YWMxYzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC05Nyw3ICs5Nyw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPikgY29u
c3Q7CiAKLSAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSkgY29uc3Q7Cisg
ICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90UmVh
ZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKKyAgICB2b2lkIGRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20g
PSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElm
Rm9udE5vdFJlYWR5KSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAgIGZs
b2F0IHdpZHRoKGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4q
IGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5k
ZXggNTVmMzFmNC4uYzIxMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNs
dWRlICJCaWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgotI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTQwNCw3ICs0MDMsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjbwogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3ModGhpcywgcnVuLCBtYXJrLCBw
b2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0
KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnQ6OkN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI4LDcgKzQyNyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb24o
aXNSVEwgPyBSVEwgOiBMVFIpOwogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uYWxPdmVycmlk
ZShiaWRpUnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCi0gICAgICAgIGZvbnQuZHJhd1RleHQo
dGhpcywgc3VicnVuLCBjdXJyUG9pbnQpOworICAgICAgICBmb250LmRyYXdUZXh0KHRoaXMsIHN1
YnJ1biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKIAogICAg
ICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwogICAgICAgICAvLyBGSVhNRTogSGF2ZSBG
b250OjpkcmF3VGV4dCByZXR1cm4gdGhlIHdpZHRoIG9mIHdoYXQgaXQgZHJldyBzbyB0aGF0IHdl
IGRvbid0IGhhdmUgdG8gcmUtbWVhc3VyZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NWNmZjk5Li43MWIzYTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNs
dWRlICJEYXNoQXJyYXkuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGb250
LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkltYWdlT3JpZW50YXRpb24uaCIKQEAgLTExNCw3ICsxMTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZl
cjsKLSAgICBjbGFzcyBGb250OwogICAgIGNsYXNzIEdlbmVyYXRvcjsKICNpZiAhVVNFKFNLSUEp
CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwpAQCAtMzU1LDcgKzM1
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRyYXdUZXh0KGNvbnN0
IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwg
aW50IHRvID0gLTEpOwogICAgICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnQm
LCBjb25zdCBUZXh0UnVuJiAsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwotICAgICAgICB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAg
ICAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiwgRm9udDo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udDo6RG9O
b3RQYWludElmRm9udE5vdFJlYWR5KTsKICAgICAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yVGV4
dChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgaCwg
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZSwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSk7CiAKICAgICAgICAgZW51bSBSb3VuZGluZ01vZGUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176262</attachid>
            <date>2012-11-27 07:28:32 -0800</date>
            <delta_ts>2012-11-27 10:54:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_fallback_text.patch</filename>
            <type>text/plain</type>
            <size>29801</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjgzMjExLi4zMjM0MmQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjcg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAg
ICAgUmVkdWNlIFhIUiB0aW1lb3V0IHRlc3RzIGV4ZWN1dGlvbiB0aW1lCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmctZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRkYzY2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSI1MCI+PHA+RkFJTCAoZmFsbGJhY2sgY29udGVudCk8L3A+PC9jYW52YXM+Cis8c2Ny
aXB0PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7Cit2YXIgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5mb250ID0gJzY3cHggQXJpYWwnOwor
Y3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsKK2N0eC5maWxsUmVjdCgwLCAwLCAxMDAsIDUwKTsKK2N0
eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFRleHQoJ1hYJywgMCwgNTApOworPC9zY3Jp
cHQ+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1z
bG93LWZvbnQtbG9hZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2Fu
dmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzUyNmMyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FudmFzIHRlc3Q6IHNsb3cgZm9udCBsb2Fk
aW5nPC90aXRsZT4KKzxzdHlsZT4KK0Bmb250LWZhY2UgeworICBmb250LWZhbWlseTogQWhlbTsK
KyAgc3JjOiB1cmwoIi4uL3dlYmZvbnQvc2xvdy1haGVtLWxvYWRpbmcuY2dpIik7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxjYW52YXMgaWQ9ImMiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iNTAiPjxwPkZBSUwgKGZhbGxiYWNrIGNvbnRlbnQpPC9wPjwvY2FudmFzPgorCis8c2NyaXB0
PgordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjJyk7Cit2YXIgY3R4ID0g
Y2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKKy8vIEFoZW0gZm9udCBsb2FkaW5nIGlzIHNsb3cg
c28gaXQgd2lsbCBub3QgYmUgcmVhZHkKKy8vIGluIHRpbWUgZm9yIGRyYXdpbmcgdGhlIHRleHQu
IEFzIGEgY29uc2VxdWVuY2UsIHRoZQorLy8gZmFsbGJhY2sgZm9udCBzaG91bGQgYmUgdXNlZCBh
bmQgdGhlIHJlc3VsdCBzaG91bGQKKy8vIGJlIDIgZ3JlZW4gJ1gnIG9uIGEgcmVkIGJhY2tncm91
bmQuCitjdHguZm9udCA9ICc2N3B4IEFoZW0sIEFyaWFsJzsKK2N0eC5maWxsU3R5bGUgPSAnI2Yw
MCc7CitjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCA1MCk7CitjdHguZmlsbFN0eWxlID0gJyMwZjAn
OworY3R4LmZpbGxUZXh0KCdYWCcsIDAsIDUwKTsKKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzRmZjQ4YS4uOWE0NmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTI3
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAg
ICAgQ2FudmFzIGRvZXMgbm90IGRyYXcgYW55IHRleHQgaWYgdGhlIGZvbnQgaXMgbm90IGZ1bGx5
IGxvYWRlZCB5ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoKSBz
byB0aGF0IHRoZQorICAgICAgICB0ZXh0IGlzIGJlaW5nIGRyYXduLCBldmVuIGlmIGN1c3RvbSBm
b250cyBhcmUgc3RpbGwgYmVpbmcgbG9hZGVkLgorICAgICAgICBXaXRob3V0IHRoaXMsIFdlYktp
dCB3YXMgbm90IGRyYXdpbmcgYW55IHRleHQgb24gdGhlIGNhbnZhcyBpZgorICAgICAgICB0aGUg
bmVlZGVkIGZvbnQgaXMgY3VzdG9tIGFuZCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldC4gVGhpcyBz
ZWVtcworICAgICAgICBicm9rZW4uCisKKyAgICAgICAgVGhlIG5ldyBiZWhhdmlvciBpcyBhY2Nv
cmRpbmcgdG8gc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0
bWwKKworICAgICAgICBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzOiAiSWYgYSBmb250IGlzIHVzZWQg
YmVmb3JlIGl0IGlzIGZ1bGx5CisgICAgICAgIGxvYWRlZCwgb3IgaWYgdGhlIGZvbnQgc3R5bGUg
c291cmNlIG9iamVjdCBkb2VzIG5vdCBoYXZlIHRoYXQKKyAgICAgICAgZm9udCBpbiBzY29wZSBh
dCB0aGUgdGltZSB0aGUgZm9udCBpcyB0byBiZSB1c2VkLCB0aGVuIGl0IG11c3QgYmUKKyAgICAg
ICAgdHJlYXRlZCBhcyBpZiBpdCB3YXMgYW4gdW5rbm93biBmb250LCBmYWxsaW5nIGJhY2sgdG8g
YW5vdGhlciBhcworICAgICAgICBkZXNjcmliZWQgYnkgdGhlIHJlbGV2YW50IENTUyBzcGVjaWZp
Y2F0aW9ucy4iCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ct
Zm9udC1sb2FkaW5nLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6Om1lYXN1cmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3VGV4dCk6IEFkZCBhcmd1bWVudCB0
byBzcGVjaWZ5IHRoZSBiZWhhdmlvcgorICAgICAgICB3aGVuIGN1c3RvbSBmb250cyBhcmUgbm90
IHJlYWR5LiBCeSBkZWZhdWx0LCBpdCB3aWxsIG5vdCBkcmF3CisgICAgICAgIGFueXRoaW5nIChz
YW1lIGJlaGF2aW9yIGFzIGJlZm9yZSkuIEhvd2V2ZXIsIHRoZSBDYW52YXMgY29kZQorICAgICAg
ICBjYW4gbm93IHJlcXVlc3QgdGhhdCBhIGZhbGxiYWNrIGZvbnQgaXMgdXNlZCBpZiB0aGUgY3Vz
dG9tCisgICAgICAgIGZvbnQgaXMgbm90IGZ1bGx5IGxvYWRlZCB5ZXQuCisgICAgICAgIChXZWJD
b3JlOjpGb250OjpkcmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojp3
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpvZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGb250Ojpjb2RlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjaGFyYWN0ZXJS
YW5nZUNvZGVQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6IFJlbmFt
ZSBDb21wbGV4IHRvIENvbXBsZXhQYXRoIGluIENvZGVQYXRoCisgICAgICAgIGVudW0gdG8gYXZv
aWQgY29uZmxpY3Rpbmcgd2l0aCBXVEY6OkNvbXBsZXguIEFwcGVuZCAnUGF0aCcgdG8gb3RoZXIK
KyAgICAgICAgZW51bSB2YWx1ZXMgZm9yIGNvbnNpc3RlbmN5LgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6OmlzTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21w
dXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1RleHRNZXRyaWNzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmlj
c0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorCiAyMDEy
LTExLTI3ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFtD
U1MgUmVnaW9uc10gQWJzb2x1dGVseSBwb3NpdGlvbmVkIHJlZ2lvbnMgZG8gbm90IGV4cGFuZCB0
byBmaWxsIHRoZWlyIGNvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZmE3MWE0YS4uNzVhYzhh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0yMTgyLDcgKzIxODIsNyBAQCBQYXNzUmVmUHRyPFRleHRN
ZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dAogI2lmIFBMQVRGT1JNKFFUKQogICAgIC8vIFdlIGFsd2F5cyB1c2UgY29tcGxleCB0
ZXh0IHNoYXBpbmcgc2luY2UgaXQgY2FuJ3QgYmUgdHVybmVkIG9mZiBmb3IgUVBhaW50ZXJQYXRo
OjphZGRUZXh0KCkuCiAgICAgRm9udDo6Q29kZVBhdGggb2xkQ29kZVBhdGggPSBGb250Ojpjb2Rl
UGF0aCgpOwotICAgIEZvbnQ6OnNldENvZGVQYXRoKEZvbnQ6OkNvbXBsZXgpOworICAgIEZvbnQ6
OnNldENvZGVQYXRoKEZvbnQ6OkNvbXBsZXhQYXRoKTsKICNlbmRpZgogCiAgICAgbWV0cmljcy0+
c2V0V2lkdGgoYWNjZXNzRm9udCgpLndpZHRoKFRleHRSdW4odGV4dC5jaGFyYWN0ZXJzKCksIHRl
eHQubGVuZ3RoKCkpKSk7CkBAIC0yMzA2LDEwICsyMzA2LDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24u
eCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAg
ICAgICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJh
dGlvbnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFn
ZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRX
aWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlU
ZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCks
IEZvbnQ6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNr
UmVjdC55KCkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZv
bnQsIHRleHRSdW4sIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmRy
YXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udDo6VXNlRmFsbGJhY2tJZkZv
bnROb3RSZWFkeSk7CiAgICAgICAgIH0KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmMpOwpAQCAtMjMyNSw3ICsyMzI1LDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9h
dCB4LCBmbG8KICNpZiBQTEFURk9STShRVCkKICAgICAvLyBXZSBhbHdheXMgdXNlIGNvbXBsZXgg
dGV4dCBzaGFwaW5nIHNpbmNlIGl0IGNhbid0IGJlIHR1cm5lZCBvZmYgZm9yIFFQYWludGVyUGF0
aDo6YWRkVGV4dCgpLgogICAgIEZvbnQ6OkNvZGVQYXRoIG9sZENvZGVQYXRoID0gRm9udDo6Y29k
ZVBhdGgoKTsKLSAgICBGb250OjpzZXRDb2RlUGF0aChGb250OjpDb21wbGV4KTsKKyAgICBGb250
OjpzZXRDb2RlUGF0aChGb250OjpDb21wbGV4UGF0aCk7CiAjZW5kaWYKIAogICAgIGlmICh1c2VN
YXhXaWR0aCkgewpAQCAtMjMzMyw5ICsyMzMzLDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8K
ICAgICAgICAgYy0+dHJhbnNsYXRlKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKTsKICAgICAg
ICAgLy8gV2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bnMgKGVnLCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgYy0+c2NhbGUoRmxvYXRT
aXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7Ci0gICAg
ICAgIGMtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApKTsKKyAg
ICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZv
bnQ6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgIH0gZWxzZQotICAgICAgICBjLT5k
cmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOworICAgICAgICBjLT5kcmF3Qmlk
aVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnQ6OlVzZUZhbGxiYWNrSWZGb250Tm90
UmVhZHkpOwogCiAgICAgZGlkRHJhdyh0ZXh0UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMGYzMmU0OS4uNWJhNTE1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE1NiwyMCArMTU2LDIyIEBAIHZv
aWQgRm9udDo6dXBkYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIGNv
bnN0CiAgICAgbV90eXBlc2V0dGluZ0ZlYXR1cmVzID0gY29tcHV0ZVR5cGVzZXR0aW5nRmVhdHVy
ZXMoKTsKIH0KIAotdm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBp
bnQgdG8pIGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20s
IGludCB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
bikgY29uc3QKIHsKLSAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdlIGFyZSB1c2lu
ZyBjdXN0b20gZm9udHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4KLSAgICBp
ZiAobG9hZGluZ0N1c3RvbUZvbnRzKCkpCisgICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGls
ZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxv
YWRpbmcsCisgICAgLy8gZXhjZXB0IGlmIHRoZSAnZm9yY2UnIGFyZ3VtZW50IGlzIHNldCB0byB0
cnVlIChpbiB3aGljaCBjYXNlIGl0IHdpbGwgdXNlIGEgZmFsbGJhY2sKKyAgICAvLyBmb250KS4K
KyAgICBpZiAobG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
ID09IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IHRvID0gKHRvID09IC0xID8gcnVuLmxlbmd0aCgpIDogdG8pOwogCiAgICAgQ29kZVBhdGggY29k
ZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBj
b2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxp
Z2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKGNvZGVQYXRo
VG9Vc2UgIT0gQ29tcGxleCAmJiB0eXBlc2V0dGluZ0ZlYXR1cmVzKCkgJiYgKGZyb20gfHwgdG8g
IT0gcnVuLmxlbmd0aCgpKSkKLSAgICAgICAgY29kZVBhdGhUb1VzZSA9IENvbXBsZXg7CisgICAg
aWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleFBhdGggJiYgdHlwZXNldHRpbmdGZWF0dXJlcygp
ICYmIChmcm9tIHx8IHRvICE9IHJ1bi5sZW5ndGgoKSkpCisgICAgICAgIGNvZGVQYXRoVG9Vc2Ug
PSBDb21wbGV4UGF0aDsKIAotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgpCisgICAg
aWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleFBhdGgpCiAgICAgICAgIHJldHVybiBkcmF3U2lt
cGxlVGV4dChjb250ZXh0LCBydW4sIHBvaW50LCBmcm9tLCB0byk7CiAKICAgICByZXR1cm4gZHJh
d0NvbXBsZXhUZXh0KGNvbnRleHQsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKQEAgLTE4NSwxMCAr
MTg3LDEwIEBAIHZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0
aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUg
cGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1
cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKLSAgICBpZiAoY29kZVBhdGhUb1Vz
ZSAhPSBDb21wbGV4ICYmIHR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmJiAoZnJvbSB8fCB0byAhPSBy
dW4ubGVuZ3RoKCkpKQotICAgICAgICBjb2RlUGF0aFRvVXNlID0gQ29tcGxleDsKKyAgICBpZiAo
Y29kZVBhdGhUb1VzZSAhPSBDb21wbGV4UGF0aCAmJiB0eXBlc2V0dGluZ0ZlYXR1cmVzKCkgJiYg
KGZyb20gfHwgdG8gIT0gcnVuLmxlbmd0aCgpKSkKKyAgICAgICAgY29kZVBhdGhUb1VzZSA9IENv
bXBsZXhQYXRoOwogCi0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkKKyAgICBpZiAo
Y29kZVBhdGhUb1VzZSAhPSBDb21wbGV4UGF0aCkKICAgICAgICAgZHJhd0VtcGhhc2lzTWFya3NG
b3JTaW1wbGVUZXh0KGNvbnRleHQsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKICAgICBl
bHNlCiAgICAgICAgIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoY29udGV4dCwgcnVu
LCBtYXJrLCBwb2ludCwgZnJvbSwgdG8pOwpAQCAtMTk3LDEyICsxOTksMTIgQEAgdm9pZCBGb250
OjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QKIGZsb2F0IEZvbnQ6OndpZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFz
aFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93
KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBj
b2RlUGF0aChydW4pOwotICAgIGlmIChjb2RlUGF0aFRvVXNlICE9IENvbXBsZXgpIHsKKyAgICBp
ZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4UGF0aCkgewogICAgICAgICAvLyBUaGUgY29tcGxl
eCBwYXRoIGlzIG1vcmUgcmVzdHJpY3RpdmUgYWJvdXQgcmV0dXJuaW5nIGZhbGxiYWNrIGZvbnRz
IHRoYW4gdGhlIHNpbXBsZSBwYXRoLCBzbyB3ZSBuZWVkIGFuIGV4cGxpY2l0IHRlc3QgdG8gbWFr
ZSB0aGVpciBiZWhhdmlvcnMgbWF0Y2guCiAgICAgICAgIGlmICghY2FuUmV0dXJuRmFsbGJhY2tG
b250c0ZvckNvbXBsZXhUZXh0KCkpCiAgICAgICAgICAgICBmYWxsYmFja0ZvbnRzID0gMDsKICAg
ICAgICAgLy8gVGhlIHNpbXBsZSBwYXRoIGNhbiBvcHRpbWl6ZSB0aGUgY2FzZSB3aGVyZSBnbHlw
aCBvdmVyZmxvdyBpcyBub3Qgb2JzZXJ2YWJsZS4KLSAgICAgICAgaWYgKGNvZGVQYXRoVG9Vc2Ug
IT0gU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgJiYgKGdseXBoT3ZlcmZsb3cgJiYgIWdseXBoT3Zl
cmZsb3ctPmNvbXB1dGVCb3VuZHMpKQorICAgICAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBTaW1w
bGVQYXRoV2l0aEdseXBoT3ZlcmZsb3cgJiYgKGdseXBoT3ZlcmZsb3cgJiYgIWdseXBoT3ZlcmZs
b3ctPmNvbXB1dGVCb3VuZHMpKQogICAgICAgICAgICAgZ2x5cGhPdmVyZmxvdyA9IDA7CiAgICAg
fQogCkBAIC0yMTMsNyArMjE1LDcgQEAgZmxvYXQgRm9udDo6d2lkdGgoY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxiYWNrRm8KICAgICAgICAg
cmV0dXJuICpjYWNoZUVudHJ5OwogCiAgICAgZmxvYXQgcmVzdWx0OwotICAgIGlmIChjb2RlUGF0
aFRvVXNlID09IENvbXBsZXgpCisgICAgaWYgKGNvZGVQYXRoVG9Vc2UgPT0gQ29tcGxleFBhdGgp
CiAgICAgICAgIHJlc3VsdCA9IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChydW4sIGZhbGxiYWNr
Rm9udHMsIGdseXBoT3ZlcmZsb3cpOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gZmxvYXRX
aWR0aEZvclNpbXBsZVRleHQocnVuLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKQEAg
LTI2MCwxMCArMjYyLDEwIEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dChj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiAKICAgICBDb2RlUGF0
aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBm
YXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBh
bmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKLSAgICBpZiAoY29k
ZVBhdGhUb1VzZSAhPSBDb21wbGV4ICYmIHR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmJiAoZnJvbSB8
fCB0byAhPSBydW4ubGVuZ3RoKCkpKQotICAgICAgICBjb2RlUGF0aFRvVXNlID0gQ29tcGxleDsK
KyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4UGF0aCAmJiB0eXBlc2V0dGluZ0ZlYXR1
cmVzKCkgJiYgKGZyb20gfHwgdG8gIT0gcnVuLmxlbmd0aCgpKSkKKyAgICAgICAgY29kZVBhdGhU
b1VzZSA9IENvbXBsZXhQYXRoOwogCi0gICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkK
KyAgICBpZiAoY29kZVBhdGhUb1VzZSAhPSBDb21wbGV4UGF0aCkKICAgICAgICAgcmV0dXJuIHNl
bGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgcG9pbnQsIGgsIGZyb20sIHRvKTsKIAogICAg
IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQocnVuLCBwb2ludCwgaCwgZnJvbSwg
dG8pOwpAQCAtMjcyLDcgKzI3NCw3IEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50CiBpbnQgRm9u
dDo6b2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3Qg
Y29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAotICAgIGlmIChjb2RlUGF0
aChydW4pICE9IENvbXBsZXggJiYgIXR5cGVzZXR0aW5nRmVhdHVyZXMoKSkKKyAgICBpZiAoY29k
ZVBhdGgocnVuKSAhPSBDb21wbGV4UGF0aCAmJiAhdHlwZXNldHRpbmdGZWF0dXJlcygpKQogICAg
ICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KHJ1biwgeCwgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpOwogCiAgICAgcmV0dXJuIG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxl
eFRleHQocnVuLCB4LCBpbmNsdWRlUGFydGlhbEdseXBocyk7CkBAIC0zNDAsMjAgKzM0MiwyMCBA
QCBGb250OjpDb2RlUGF0aCBGb250Ojpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4pIGNvbnN0
CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChydW4ucmVuZGVyaW5nQ29udGV4dCgp
KQotICAgICAgICByZXR1cm4gU2ltcGxlOworICAgICAgICByZXR1cm4gU2ltcGxlUGF0aDsKICNl
bmRpZgogCiAgICAgaWYgKG1fZm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpICYmIG1f
Zm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpLT5zaXplKCkgPiAwKQotICAgICAgICBy
ZXR1cm4gQ29tcGxleDsKKyAgICAgICAgcmV0dXJuIENvbXBsZXhQYXRoOwogICAgIAogICAgIGlm
IChydW4ubGVuZ3RoKCkgPiAxICYmICFXaWR0aEl0ZXJhdG9yOjpzdXBwb3J0c1R5cGVzZXR0aW5n
RmVhdHVyZXMoKnRoaXMpKQotICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgcmV0dXJu
IENvbXBsZXhQYXRoOwogCiAgICAgaWYgKCFydW4uY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCkp
Ci0gICAgICAgIHJldHVybiBTaW1wbGU7CisgICAgICAgIHJldHVybiBTaW1wbGVQYXRoOwogCiAg
ICAgaWYgKHJ1bi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIFNpbXBsZTsKKyAgICAgICAgcmV0
dXJuIFNpbXBsZVBhdGg7CiAKICAgICAvLyBTdGFydCBmcm9tIDAgc2luY2UgZHJhd2luZyBhbmQg
aGlnaGxpZ2h0aW5nIGFsc28gbWVhc3VyZSB0aGUgY2hhcmFjdGVycyBiZWZvcmUgcnVuLT5mcm9t
LgogICAgIHJldHVybiBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKHJ1bi5jaGFyYWN0ZXJzMTYoKSwg
cnVuLmxlbmd0aCgpKTsKQEAgLTM2NiwyMyArMzY4LDIzIEBAIEZvbnQ6OkNvZGVQYXRoIEZvbnQ6
OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlCiAgICAgLy8gYXJlIG5vdCAnY29tYmluaW5nJywgYnV0IHN0aWxsIG5lZWQgdG8gZ28gdG8g
dGhlIGNvbXBsZXggcGF0aC4KICAgICAvLyBBbHRlcm5hdGl2ZWx5LCB3ZSBtYXkgYXMgd2VsbCBj
b25zaWRlciBiaW5hcnkgc2VhcmNoIG92ZXIgYSBzb3J0ZWQKICAgICAvLyBsaXN0IG9mIHJhbmdl
cy4KLSAgICBDb2RlUGF0aCByZXN1bHQgPSBTaW1wbGU7CisgICAgQ29kZVBhdGggcmVzdWx0ID0g
U2ltcGxlUGF0aDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAg
ICAgICAgY29uc3QgVUNoYXIgYyA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmIChjIDwgMHgy
RTUpIC8vIFUrMDJFNSB0aHJvdWdoIFUrMDJFOSAoTW9kaWZpZXIgTGV0dGVycyA6IFRvbmUgbGV0
dGVycykgIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MkU5KSAK
LSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvbXBsZXhQ
YXRoOwogCiAgICAgICAgIGlmIChjIDwgMHgzMDApIC8vIFUrMDMwMCB0aHJvdWdoIFUrMDM2RiBD
b21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoYyA8PSAweDM2RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAg
ICAgcmV0dXJuIENvbXBsZXhQYXRoOwogCiAgICAgICAgIGlmIChjIDwgMHgwNTkxIHx8IGMgPT0g
MHgwNUJFKSAvLyBVKzA1OTEgdGhyb3VnaCBVKzA1Q0YgZXhjbHVkaW5nIFUrMDVCRSBIZWJyZXcg
Y29tYmluaW5nIG1hcmtzLCBIZWJyZXcgcHVuY3R1YXRpb24gUGFzZXEsIFNvZiBQYXN1cSBhbmQg
TnVuIEhhZnVraGEKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDA1
Q0YpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21w
bGV4UGF0aDsKIAogICAgICAgICAvLyBVKzA2MDAgdGhyb3VnaCBVKzEwOUYgQXJhYmljLCBTeXJp
YWMsIFRoYWFuYSwgTktvLCBTYW1hcml0YW4sIE1hbmRhaWMsCiAgICAgICAgIC8vIERldmFuYWdh
cmksIEJlbmdhbGksIEd1cm11a2hpLCBHdWphcmF0aSwgT3JpeWEsIFRhbWlsLCBUZWx1Z3UsIEth
bm5hZGEsIApAQCAtMzkwLDg3ICszOTIsODcgQEAgRm9udDo6Q29kZVBhdGggRm9udDo6Y2hhcmFj
dGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGUKICAg
ICAgICAgaWYgKGMgPCAweDA2MDApIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlm
IChjIDw9IDB4MTA5RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAg
cmV0dXJuIENvbXBsZXhQYXRoOwogCiAgICAgICAgIC8vIFUrMTEwMCB0aHJvdWdoIFUrMTFGRiBI
YW5ndWwgSmFtbyAob25seSBBbmNpZW50IEtvcmVhbiBzaG91bGQgYmUgbGVmdCBoZXJlIGlmIHlv
dSBwcmVjb21wb3NlOwogICAgICAgICAvLyBNb2Rlcm4gS29yZWFuIHdpbGwgYmUgcHJlY29tcG9z
ZWQgYXMgYSByZXN1bHQgb2Ygc3RlcCBBKQogICAgICAgICBpZiAoYyA8IDB4MTEwMCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDExRkYpCi0gICAgICAgICAgICBy
ZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4UGF0aDsKIAogICAgICAg
ICBpZiAoYyA8IDB4MTM1RCkgLy8gVSsxMzVEIHRocm91Z2ggVSsxMzVGIEV0aGlvcGljIGNvbWJp
bmluZyBtYXJrcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MTM1
RikKLSAgICAgICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvbXBs
ZXhQYXRoOwogCiAgICAgICAgIGlmIChjIDwgMHgxNzAwKSAvLyBVKzE3ODAgdGhyb3VnaCBVKzE4
QUYgVGFnYWxvZywgSGFudW5vbywgQnVoaWQsIFRhZ2hhbndhLEtobWVyLCBNb25nb2xpYW4KICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE4QUYpCi0gICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4UGF0aDsKIAogICAg
ICAgICBpZiAoYyA8IDB4MTkwMCkgLy8gVSsxOTAwIHRocm91Z2ggVSsxOTRGIExpbWJ1IChVbmlj
b2RlIDQuMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDE5NEYp
Ci0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4
UGF0aDsKIAogICAgICAgICBpZiAoYyA8IDB4MTk4MCkgLy8gVSsxOTgwIHRocm91Z2ggVSsxOURG
IE5ldyBUYWkgTHVlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHgx
OURGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29t
cGxleFBhdGg7CiAKICAgICAgICAgaWYgKGMgPCAweDFBMDApIC8vIFUrMUEwMCB0aHJvdWdoIFUr
MUNGRiBCdWdpbmVzZSwgVGFpIFRoYW0sIEJhbGluZXNlLCBCYXRhaywgTGVwY2hhLCBWZWRpYwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4MUNGRikKLSAgICAgICAg
ICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvbXBsZXhQYXRoOwogCiAg
ICAgICAgIGlmIChjIDwgMHgxREMwKSAvLyBVKzFEQzAgdGhyb3VnaCBVKzFERkYgQ29taW5pbmcg
ZGlhY3JpdGljYWwgbWFyayBzdXBwbGVtZW50CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGMgPD0gMHgxREZGKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICByZXR1cm4gQ29tcGxleFBhdGg7CiAKICAgICAgICAgLy8gVSsxRTAwIHRocm91Z2ggVSsy
MDAwIGNoYXJhY3RlcnMgd2l0aCBkaWFjcml0aWNzIGFuZCBzdGFja2VkIGRpYWNyaXRpY3MKICAg
ICAgICAgaWYgKGMgPD0gMHgyMDAwKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBTaW1wbGVXaXRo
R2x5cGhPdmVyZmxvdzsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNpbXBsZVBhdGhXaXRoR2x5cGhP
dmVyZmxvdzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGMgPCAweDIwRDApIC8vIFUrMjBEMCB0aHJvdWdoIFUrMjBGRiBDb21iaW5pbmcgbWFya3MgZm9y
IHN5bWJvbHMKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDIwRkYp
Ci0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4
UGF0aDsKIAogICAgICAgICBpZiAoYyA8IDB4MkNFRikgLy8gVSsyQ0VGIHRocm91Z2ggVSsyQ0Yx
IENvbWJpbmluZyBtYXJrcyBmb3IgQ29wdGljCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGMgPD0gMHgyQ0YxKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAg
ICAgICByZXR1cm4gQ29tcGxleFBhdGg7CiAKICAgICAgICAgaWYgKGMgPCAweDMwMkEpIC8vIFUr
MzAyQSB0aHJvdWdoIFUrMzAyRiBJZGVvZ3JhcGhpYyBhbmQgSGFuZ3VsIFRvbmUgbWFya3MKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAweDMwMkYpCi0gICAgICAgICAg
ICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4UGF0aDsKIAogICAg
ICAgICBpZiAoYyA8IDB4QTY3QykgLy8gVStBNjdDIHRocm91Z2ggVStBNjdEIENvbWJpbmluZyBt
YXJrcyBmb3Igb2xkIEN5cmlsbGljCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGMgPD0gMHhBNjdEKQotICAgICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICBy
ZXR1cm4gQ29tcGxleFBhdGg7CiAKICAgICAgICAgaWYgKGMgPCAweEE2RjApIC8vIFUrQTZGMCB0
aHJvdWdoIFUrQTZGMSBDb21iaW5pbmcgbWFyayBmb3IgQmFtdW0KICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoYyA8PSAweEE2RjEpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxl
eDsKKyAgICAgICAgICAgIHJldHVybiBDb21wbGV4UGF0aDsKIAogICAgICAgIC8vIFUrQTgwMCB0
aHJvdWdoIFUrQUJGRiBOYWdyaSwgUGhhZ3MtcGEsIFNhdXJhc2h0cmEsIERldmFuYWdhcmkgRXh0
ZW5kZWQsCiAgICAgICAgLy8gSGFuZ3VsIEphbW8gRXh0LiBBLCBKYXZhbmVzZSwgTXlhbm1hciBF
eHRlbmRlZCBBLCBUYWkgVmlldCwgTWVldGVpIE1heWVrLAogICAgICAgICBpZiAoYyA8IDB4QTgw
MCkgCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhBQkZGKQotICAg
ICAgICAgICAgcmV0dXJuIENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29tcGxleFBhdGg7
CiAKICAgICAgICAgaWYgKGMgPCAweEQ3QjApIC8vIFUrRDdCMCB0aHJvdWdoIFUrRDdGRiBIYW5n
dWwgSmFtbyBFeHQuIEIKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoYyA8PSAw
eEQ3RkYpCi0gICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgIHJldHVybiBD
b21wbGV4UGF0aDsKIAogICAgICAgICBpZiAoYyA8PSAweERCRkYpIHsKICAgICAgICAgICAgIC8v
IEhpZ2ggc3Vycm9nYXRlCkBAIC00ODcsMTIgKzQ4OSwxMiBAQCBGb250OjpDb2RlUGF0aCBGb250
OjpjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZQogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPCAweDFGMUU2KSAv
LyBVKzFGMUU2IHRocm91Z2ggVSsxRjFGRiBSZWdpb25hbCBJbmRpY2F0b3IgU3ltYm9scwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFy
YWN0ZXIgPD0gMHgxRjFGRikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQ29tcGxleFBhdGg7CiAKICAgICAgICAgICAgIGlmIChzdXBwbGVt
ZW50YXJ5Q2hhcmFjdGVyIDwgMHhFMDEwMCkgLy8gVStFMDEwMCB0aHJvdWdoIFUrRTAxRUYgVW5p
Y29kZSB2YXJpYXRpb24gc2VsZWN0b3JzLgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKHN1cHBsZW1lbnRhcnlDaGFyYWN0ZXIgPD0gMHhFMDFFRikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQ29tcGxleDsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGxleFBh
dGg7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBmb3IgQnJhaG1pIChVKzExMDAwIGJs
b2NrKSwgS2FpdGhpIChVKzExMDgwIGJsb2NrKSBhbmQgb3RoZXIgY29tcGxleCBzY3JpcHRzCiAg
ICAgICAgICAgICAvLyBpbiBwbGFuZSAxIG9yIGhpZ2hlci4KQEAgLTUwMywxMiArNTA1LDEyIEBA
IEZvbnQ6OkNvZGVQYXRoIEZvbnQ6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlCiAgICAgICAgIGlmIChjIDwgMHhGRTAwKSAvLyBVK0ZF
MDAgdGhyb3VnaCBVK0ZFMEYgVW5pY29kZSB2YXJpYXRpb24gc2VsZWN0b3JzCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGMgPD0gMHhGRTBGKQotICAgICAgICAgICAgcmV0dXJu
IENvbXBsZXg7CisgICAgICAgICAgICByZXR1cm4gQ29tcGxleFBhdGg7CiAKICAgICAgICAgaWYg
KGMgPCAweEZFMjApIC8vIFUrRkUyMCB0aHJvdWdoIFUrRkUyRiBDb21iaW5pbmcgaGFsZiBtYXJr
cwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjIDw9IDB4RkUyRikKLSAgICAg
ICAgICAgIHJldHVybiBDb21wbGV4OworICAgICAgICAgICAgcmV0dXJuIENvbXBsZXhQYXRoOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCmluZGV4IGI2MGQ5ZGQuLjE2OTc1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKQEAgLTk3LDcgKzk3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB1
cGRhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+KSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBp
bnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKKyAgICBlbnVtIEN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnRO
b3RSZWFkeSB9OworICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0Owog
ICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9t
ID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OwogCiAgICAgZmxvYXQgd2lkdGgoY29uc3QgVGV4dFJ1
biYsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cyA9IDAsIEds
eXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CkBAIC0xNjgsOSArMTY5LDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRVc2VTbW9vdGhpbmcoKTsKIAotICAgIGVudW0gQ29kZVBhdGggeyBBdXRvLCBTaW1w
bGUsIENvbXBsZXgsIFNpbXBsZVdpdGhHbHlwaE92ZXJmbG93IH07CisgICAgZW51bSBDb2RlUGF0
aCB7IEF1dG8sIFNpbXBsZVBhdGgsIENvbXBsZXhQYXRoLCBTaW1wbGVQYXRoV2l0aEdseXBoT3Zl
cmZsb3cgfTsKICAgICBDb2RlUGF0aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJikgY29uc3Q7Ci0g
ICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCkgeyByZXR1cm4gU2ltcGxlOyB9CisgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3Rl
clJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gU2ltcGxlUGF0
aDsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVD
aGFyKiwgdW5zaWduZWQgbGVuKTsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA1NWYzMWY0
Li5jMjExNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkJpZGlS
ZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAiRm9udC5oIgog
I2luY2x1ZGUgIkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgpAQCAtNDA0LDcgKzQwMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
CiAgICAgZm9udC5kcmF3RW1waGFzaXNNYXJrcyh0aGlzLCBydW4sIG1hcmssIHBvaW50LCBmcm9t
LCB0byk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udDo6Q3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC00MjgsNyArNDI3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEYKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJU
TCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4t
PmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKLSAgICAgICAgZm9udC5kcmF3VGV4dCh0aGlzLCBzdWJy
dW4sIGN1cnJQb2ludCk7CisgICAgICAgIGZvbnQuZHJhd1RleHQodGhpcywgc3VicnVuLCBjdXJy
UG9pbnQsIDAsIC0xLCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogCiAgICAgICAgIGJpZGlS
dW4gPSBiaWRpUnVuLT5uZXh0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBIYXZlIEZvbnQ6OmRyYXdU
ZXh0IHJldHVybiB0aGUgd2lkdGggb2Ygd2hhdCBpdCBkcmV3IHNvIHRoYXQgd2UgZG9uJ3QgaGF2
ZSB0byByZS1tZWFzdXJlIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg1Y2ZmOTkuLjcxYjNhMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkRhc2hB
cnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNs
dWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgpAQCAtMTE0LDcgKzExNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBEcmF3aW5nQnVmZmVyOwotICAgIGNs
YXNzIEZvbnQ7CiAgICAgY2xhc3MgR2VuZXJhdG9yOwogI2lmICFVU0UoU0tJQSkKICAgICBjbGFz
cyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CkBAIC0zNTUsNyArMzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAt
MSk7CiAgICAgICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udCYsIGNvbnN0IFRl
eHRSdW4mICwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50
IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7Ci0gICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0
IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYpOworICAgICAgICB2b2lk
IGRyYXdCaWRpVGV4dChjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250OjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250OjpEb05vdFBhaW50SWZG
b250Tm90UmVhZHkpOwogICAgICAgICB2b2lkIGRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZv
bnQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBoLCBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0x
KTsKIAogICAgICAgICBlbnVtIFJvdW5kaW5nTW9kZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IDg3YmQ1MmQuLmJkM2RmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc05lZWRlZChSZW5k
ZXJUZXh0KiB0ZXh0LCBjb25zdCBGb250JiBmb250KQogICAgIHsKICAgICAgICAgVGV4dFJ1biBy
dW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBmb250LCB0ZXh0LCB0ZXh0
LT5zdHlsZSgpKTsKLSAgICAgICAgcmV0dXJuIGZvbnQuY29kZVBhdGgocnVuKSA9PSBGb250OjpD
b21wbGV4OworICAgICAgICByZXR1cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnQ6OkNvbXBs
ZXhQYXRoOwogICAgIH0KIAogICAgIFRleHRMYXlvdXQoUmVuZGVyVGV4dCogdGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwgZmxvYXQgeFBvcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2NTBhMTVkLi43NTQyZDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
Y3BwCkBAIC0xMjEsMTIgKzEyMSwxMiBAQCBib29sIFdlYkNvcmVTaG91bGRVc2VGb250U21vb3Ro
aW5nKCkKIAogdm9pZCBXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9v
bCBjb21wbGV4KQogewotICAgIEZvbnQ6OnNldENvZGVQYXRoKGNvbXBsZXggPyBGb250OjpDb21w
bGV4IDogRm9udDo6QXV0byk7CisgICAgRm9udDo6c2V0Q29kZVBhdGgoY29tcGxleCA/IEZvbnQ6
OkNvbXBsZXhQYXRoIDogRm9udDo6QXV0byk7CiB9CiAKIGJvb2wgV2ViQ29yZUFsd2F5c1VzZXND
b21wbGV4VGV4dENvZGVQYXRoKCkKIHsKLSAgICByZXR1cm4gRm9udDo6Y29kZVBhdGgoKSA9PSBG
b250OjpDb21wbGV4OworICAgIHJldHVybiBGb250Ojpjb2RlUGF0aCgpID09IEZvbnQ6OkNvbXBs
ZXhQYXRoOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggYTlhMjVkZi4uNGRiZDZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTg5Nyw3ICsxODk3LDcgQEAgYm9vbCBSZW5k
ZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNBbGxBU0NJSSgpIHx8IG1fdGV4dC5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgcmV0dXJuIEZvbnQ6OmNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY2hhcmFjdGVycygpLCBs
ZW5ndGgoKSkgPT0gRm9udDo6U2ltcGxlOworICAgIHJldHVybiBGb250OjpjaGFyYWN0ZXJSYW5n
ZUNvZGVQYXRoKGNoYXJhY3RlcnMoKSwgbGVuZ3RoKCkpID09IEZvbnQ6OlNpbXBsZVBhdGg7CiB9
CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggZGZlZWJiMi4uNDY0MjJlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
Ojppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAK
ICAgICBjb25zdCBGb250JiBzY2FsZWRGb250ID0gdGV4dC0+c2NhbGVkRm9udCgpOwogICAgIG1f
cnVuID0gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC0+Y2hhcmFj
dGVycygpLCAwLCB0ZXh0LT50ZXh0TGVuZ3RoKCkpOwotICAgIG1faXNDb21wbGV4VGV4dCA9IHNj
YWxlZEZvbnQuY29kZVBhdGgobV9ydW4pID09IEZvbnQ6OkNvbXBsZXg7CisgICAgbV9pc0NvbXBs
ZXhUZXh0ID0gc2NhbGVkRm9udC5jb2RlUGF0aChtX3J1bikgPT0gRm9udDo6Q29tcGxleFBhdGg7
CiAKICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0
b3IuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5MTMxYmUwLi40OWZlNDQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMjcgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBDYW52YXMgZG9lcyBub3Qg
ZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIEZvbnQ6OkNv
bXBsZXggdG8gRm9udDo6Q29tcGxleFBhdGguCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgrW1dlYlZpZXcgX3NldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
Ol0pOgorCiAyMDEyLTExLTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Nzg2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGZiNDQ0YjQuLmNmZmQ1MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk5Niw3ICs5OTYsNyBAQCBzdGF0aWMgTlNN
dXRhYmxlU2V0ICprbm93blBsdWdpbk1JTUVUeXBlcygpCiAKICsgKHZvaWQpX3NldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoOihCT09MKWYKIHsKLSAgICBGb250OjpzZXRDb2RlUGF0aChm
ID8gRm9udDo6Q29tcGxleCA6IEZvbnQ6OkF1dG8pOworICAgIEZvbnQ6OnNldENvZGVQYXRoKGYg
PyBGb250OjpDb21wbGV4UGF0aCA6IEZvbnQ6OkF1dG8pOwogfQogCiArICh2b2lkKV9zZXRBbGxv
d3NSb3VuZGluZ0hhY2tzOihCT09MKWFsbG93c1JvdW5kaW5nSGFja3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4
ZjgxMjRmLi4xOTg0ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMjcg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAg
ICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVuYW1lIEZvbnQ6OkNvbXBsZXggdG8gRm9udDo6Q29tcGxleFBhdGguCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6CisKIDIwMTItMTEtMjcgIEt3YW5n
WW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1gxMV0gQWxsb3cg
ZW1wdHkgcGx1Z2luIG5hbWUgYW5kIGRlc2NyaXB0aW9uIGR1cmluZyBzY2FuIHBsdWdpbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjhiN2JmZC4uMDkxYmNj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNjgsNyAr
MzY4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bChkb3VibGUgdGltZW91dEludGVydmFsKQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiB7Ci0gICAg
V2ViQ29yZTo6Rm9udDo6c2V0Q29kZVBhdGgoYWx3YXlzVXNlQ29tcGxleFRleHQgPyBXZWJDb3Jl
OjpGb250OjpDb21wbGV4IDogV2ViQ29yZTo6Rm9udDo6QXV0byk7CisgICAgV2ViQ29yZTo6Rm9u
dDo6c2V0Q29kZVBhdGgoYWx3YXlzVXNlQ29tcGxleFRleHQgPyBXZWJDb3JlOjpGb250OjpDb21w
bGV4UGF0aCA6IFdlYkNvcmU6OkZvbnQ6OkF1dG8pOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNl
dFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCB1c2VGb250U21vb3RoaW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176303</attachid>
            <date>2012-11-27 10:54:29 -0800</date>
            <delta_ts>2012-11-27 11:26:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103392_canvas_custom_font2.patch</filename>
            <type>text/plain</type>
            <size>11609</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NWM4NTY4Li5iMmNmMDRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEt
MjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkgdGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVs
bHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGNhbnZhcyB0ZXN0IHRvIGNoZWNrIHRoYXQgdGV4dCBpcyBkcmF3biB1c2luZyBh
IGZhbGxiYWNrIGZvbnQKKyAgICAgICAgaWYgdGhlIHByaW1hcnkgZm9udCBpcyBub3QgZnVsbHkg
bG9hZGVkIHlldC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZv
bnQtbG9hZGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nh
bnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjcg
IEp1c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBDb3JyZWN0aW5n
IGJhc2VsaW5lIGZvciBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1v
dmVyLWNvbG9yLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFz
L2NhbnZhcy1zbG93LWZvbnQtbG9hZGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjNjZiMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FudmFzL2NhbnZhcy1zbG93LWZvbnQtbG9hZGlu
Zy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+
Cis8Y2FudmFzIGlkPSJjIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjUwIj48cD5GQUlMIChmYWxsYmFj
ayBjb250ZW50KTwvcD48L2NhbnZhcz4KKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2MnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsK
KworY3R4LmZvbnQgPSAnNjdweCBBcmlhbCc7CitjdHguZmlsbFN0eWxlID0gJyNmMDAnOworY3R4
LmZpbGxSZWN0KDAsIDAsIDEwMCwgNTApOworY3R4LmZpbGxTdHlsZSA9ICcjMGYwJzsKK2N0eC5m
aWxsVGV4dCgnWFgnLCAwLCA1MCk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2FkaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI2YzI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYW52YXMvY2FudmFzLXNsb3ctZm9udC1sb2Fk
aW5nLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5DYW52YXMgdGVzdDogc2xvdyBmb250IGxvYWRpbmc8L3RpdGxlPgorPHN0eWxlPgorQGZvbnQt
ZmFjZSB7CisgIGZvbnQtZmFtaWx5OiBBaGVtOworICBzcmM6IHVybCgiLi4vd2ViZm9udC9zbG93
LWFoZW0tbG9hZGluZy5jZ2kiKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGNh
bnZhcyBpZD0iYyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI1MCI+PHA+RkFJTCAoZmFsbGJhY2sgY29u
dGVudCk8L3A+PC9jYW52YXM+CisKKzxzY3JpcHQ+Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2MnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKwor
Ly8gQWhlbSBmb250IGxvYWRpbmcgaXMgc2xvdyBzbyBpdCB3aWxsIG5vdCBiZSByZWFkeQorLy8g
aW4gdGltZSBmb3IgZHJhd2luZyB0aGUgdGV4dC4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlCisvLyBm
YWxsYmFjayBmb250IHNob3VsZCBiZSB1c2VkIGFuZCB0aGUgcmVzdWx0IHNob3VsZAorLy8gYmUg
MiBncmVlbiAnWCcgb24gYSByZWQgYmFja2dyb3VuZC4KK2N0eC5mb250ID0gJzY3cHggQWhlbSwg
QXJpYWwnOworY3R4LmZpbGxTdHlsZSA9ICcjZjAwJzsKK2N0eC5maWxsUmVjdCgwLCAwLCAxMDAs
IDUwKTsKK2N0eC5maWxsU3R5bGUgPSAnIzBmMCc7CitjdHguZmlsbFRleHQoJ1hYJywgMCwgNTAp
OworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMDRmZDVlLi4wZjM1M2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMTEtMjcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBDYW52YXMgZG9lcyBub3QgZHJhdyBhbnkg
dGV4dCBpZiB0aGUgZm9udCBpcyBub3QgZnVsbHkgbG9hZGVkIHlldAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCgpIHNvIHRoYXQgdGhlCisgICAgICAgIHRleHQgaXMg
YmVpbmcgZHJhd24sIGV2ZW4gaWYgY3VzdG9tIGZvbnRzIGFyZSBzdGlsbCBiZWluZyBsb2FkZWQu
CisgICAgICAgIFdpdGhvdXQgdGhpcywgV2ViS2l0IHdhcyBub3QgZHJhd2luZyBhbnkgdGV4dCBv
biB0aGUgY2FudmFzIGlmCisgICAgICAgIHRoZSBuZWVkZWQgZm9udCBpcyBjdXN0b20gYW5kIGlz
IG5vdCBmdWxseSBsb2FkZWQgeWV0LiBUaGlzIHNlZW1zCisgICAgICAgIGJyb2tlbi4KKworICAg
ICAgICBUaGUgbmV3IGJlaGF2aW9yIGlzIGFjY29yZGluZyB0byBzcGVjaWZpY2F0aW9uOgorICAg
ICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211
bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbAorCisgICAgICAgIFRoZSBzcGVjaWZpY2F0
aW9uIHNheXM6ICJJZiBhIGZvbnQgaXMgdXNlZCBiZWZvcmUgaXQgaXMgZnVsbHkKKyAgICAgICAg
bG9hZGVkLCBvciBpZiB0aGUgZm9udCBzdHlsZSBzb3VyY2Ugb2JqZWN0IGRvZXMgbm90IGhhdmUg
dGhhdAorICAgICAgICBmb250IGluIHNjb3BlIGF0IHRoZSB0aW1lIHRoZSBmb250IGlzIHRvIGJl
IHVzZWQsIHRoZW4gaXQgbXVzdCBiZQorICAgICAgICB0cmVhdGVkIGFzIGlmIGl0IHdhcyBhbiB1
bmtub3duIGZvbnQsIGZhbGxpbmcgYmFjayB0byBhbm90aGVyIGFzCisgICAgICAgIGRlc2NyaWJl
ZCBieSB0aGUgcmVsZXZhbnQgQ1NTIHNwZWNpZmljYXRpb25zLiIKKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2NhbnZhcy9jYW52YXMtc2xvdy1mb250LWxvYWRpbmcuaHRtbAorCisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3VGV4dCk6IEFkZCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoZSBiZWhhdmlvcgorICAgICAg
ICB3aGVuIGN1c3RvbSBmb250cyBhcmUgbm90IHJlYWR5LiBCeSBkZWZhdWx0LCBpdCB3aWxsIG5v
dCBkcmF3CisgICAgICAgIGFueXRoaW5nIChzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZSkuIEhvd2V2
ZXIsIHRoZSBDYW52YXMgY29kZQorICAgICAgICBjYW4gbm93IHJlcXVlc3QgdGhhdCBhIGZhbGxi
YWNrIGZvbnQgaXMgdXNlZCBpZiB0aGUgY3VzdG9tCisgICAgICAgIGZvbnQgaXMgbm90IGZ1bGx5
IGxvYWRlZCB5ZXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOiAjdW5kZWYg
Q29tcGxleCBpZiBkZWZpbmVkIHRvIGF2b2lkCisgICAgICAgIGNvbmZsaWN0aW5nIHdpdGggQ29t
cGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLiBYMTEvWC5oIGlzCisgICAgICAgIGRlZmluaW5n
IENvbXBsZXggdG8gMC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQpOgorCiAyMDEyLTExLTI3ICBW
w61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl0gVmVyaWZ5IGlmIEdTdHJlYW1lciB3YXMgcHJldmlvdXNseSBpbml0aWFs
aXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZmE3MWE0YS4uM2ViMzhhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0yMzA2LDEwICsyMzA2LDEwIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFza1JlY3Qu
eCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8gV2UgZHJh
dyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJj
b3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkp
OwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRS
dW4sIEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJh
d0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnQ6OlVzZUZhbGxi
YWNrSWZGb250Tm90UmVhZHkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwotICAg
ICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250
LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udDo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmMpOwpAQCAtMjMzMyw5ICsyMzMzLDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAg
ICAgYy0+dHJhbnNsYXRlKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKTsKICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KICAgICAgICAgYy0+c2NhbGUoRmxvYXRTaXplKChm
b250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7Ci0gICAgICAgIGMt
PmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAg
Yy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnQ6OlVz
ZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgIH0gZWxzZQotICAgICAgICBjLT5kcmF3Qmlk
aVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOworICAgICAgICBjLT5kcmF3QmlkaVRleHQo
Zm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnQ6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkp
OwogCiAgICAgZGlkRHJhdyh0ZXh0UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMGYzMmU0OS4uZjU1NzI1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE1NiwxMCArMTU2LDEyIEBAIHZvaWQgRm9u
dDo6dXBkYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIGNvbnN0CiAg
ICAgbV90eXBlc2V0dGluZ0ZlYXR1cmVzID0gY29tcHV0ZVR5cGVzZXR0aW5nRmVhdHVyZXMoKTsK
IH0KIAotdm9pZCBGb250OjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0Cit2b2lkIEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29u
c3QKIHsKLSAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdlIGFyZSB1c2luZyBjdXN0
b20gZm9udHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4KLSAgICBpZiAobG9h
ZGluZ0N1c3RvbUZvbnRzKCkpCisgICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGlsZSB3ZSBh
cmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcs
CisgICAgLy8gZXhjZXB0IGlmIHRoZSAnZm9yY2UnIGFyZ3VtZW50IGlzIHNldCB0byB0cnVlIChp
biB3aGljaCBjYXNlIGl0IHdpbGwgdXNlIGEgZmFsbGJhY2sKKyAgICAvLyBmb250KS4KKyAgICBp
ZiAobG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IERv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHRvID0g
KHRvID09IC0xID8gcnVuLmxlbmd0aCgpIDogdG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCmluZGV4IGI2MGQ5ZGQuLmUzNmY5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTQyLDYgKzQyLDEyIEBAIGNsYXNzIFFUZXh0TGF5b3V0
OwogUVRfRU5EX05BTUVTUEFDRQogI2VuZGlmCiAKKy8vICJYMTEvWC5oIiBkZWZpbmVzIENvbXBs
ZXggdG8gMCBhbmQgY29uZmxpY3RzCisvLyB3aXRoIENvbXBsZXggdmFsdWUgaW4gQ29kZVBhdGgg
ZW51bS4KKyNpZmRlZiBDb21wbGV4CisjdW5kZWYgQ29tcGxleAorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTk3LDcgKzEwMyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8Rm9udFNlbGVjdG9yPikgY29uc3Q7CiAK
LSAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSkgY29uc3Q7CisgICAgZW51
bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90UmVhZHksIFVz
ZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKKyAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0
UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAgIGZsb2F0IHdp
ZHRoKGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxi
YWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTVm
MzFmNC4uYzIxMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJC
aWRpUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgotI2luY2x1ZGUgIkZvbnQu
aCIKICNpbmNsdWRlICJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTQwNCw3ICs0MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjbwogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3ModGhpcywgcnVuLCBtYXJrLCBwb2ludCwg
ZnJvbSwgdG8pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnQ6OkN1c3RvbUZv
bnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwg
PyBSVEwgOiBMVFIpOwogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uYWxPdmVycmlkZShiaWRp
UnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCi0gICAgICAgIGZvbnQuZHJhd1RleHQodGhpcywg
c3VicnVuLCBjdXJyUG9pbnQpOworICAgICAgICBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1biwg
Y3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKIAogICAgICAgICBi
aWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwogICAgICAgICAvLyBGSVhNRTogSGF2ZSBGb250Ojpk
cmF3VGV4dCByZXR1cm4gdGhlIHdpZHRoIG9mIHdoYXQgaXQgZHJldyBzbyB0aGF0IHdlIGRvbid0
IGhhdmUgdG8gcmUtbWVhc3VyZSBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA4NWNmZjk5Li43MWIzYTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJE
YXNoQXJyYXkuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKQEAgLTExNCw3ICsxMTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgRHJhd2luZ0J1ZmZlcjsKLSAg
ICBjbGFzcyBGb250OwogICAgIGNsYXNzIEdlbmVyYXRvcjsKICNpZiAhVVNFKFNLSUEpCiAgICAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwpAQCAtMzU1LDcgKzM1NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IEZvbnQm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRv
ID0gLTEpOwogICAgICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnQmLCBjb25z
dCBUZXh0UnVuJiAsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IGludCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwotICAgICAgICB2b2lkIGRyYXdCaWRpVGV4dChj
b25zdCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAg
dm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9h
dFBvaW50JiwgRm9udDo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udDo6RG9Ob3RQYWlu
dElmRm9udE5vdFJlYWR5KTsKICAgICAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yVGV4dChjb25z
dCBGb250JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgaCwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZSwgaW50IGZyb20gPSAwLCBpbnQgdG8g
PSAtMSk7CiAKICAgICAgICAgZW51bSBSb3VuZGluZ01vZGUgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>