<?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>137454</bug_id>
          
          <creation_ts>2014-10-06 11:57:03 -0700</creation_ts>
          <short_desc>[Mac] We are spending a lot of time loading fonts when loading weather.com</short_desc>
          <delta_ts>2014-10-08 15:17:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>137539</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>kling</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1039777</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 11:57:03 -0700</bug_when>
    <thetext>We are spending a lot of time loading fonts when loading weather.com: ~4.2% of WebProcess&apos;s cpu time in FontCache::getCachedFrontData().
In particular, we are spending a lot of time doing font auto-activation because we don&apos;t have the Open Sans fonts installed and weather.com is trying to load those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039778</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 11:57:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/18545368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039790</commentid>
    <comment_count>2</comment_count>
      <attachid>239348</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 12:30:13 -0700</bug_when>
    <thetext>Created attachment 239348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039816</commentid>
    <comment_count>3</comment_count>
      <attachid>239354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 14:03:41 -0700</bug_when>
    <thetext>Created attachment 239354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039825</commentid>
    <comment_count>4</comment_count>
      <attachid>239354</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-10-06 14:28:14 -0700</bug_when>
    <thetext>Comment on attachment 239354
Patch

This is great! Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039826</commentid>
    <comment_count>5</comment_count>
      <attachid>239354</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-10-06 14:28:54 -0700</bug_when>
    <thetext>Comment on attachment 239354
Patch

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

Code looks right to me -- but how serious is this auto-activation at a different size problem? Should we keep a set of sets, where the value in the first set is a set of sizes?

Also, I be this would be faster if you used HashSet&lt;RetainPtr&lt;NSString&gt;&gt; instead of NSMutableSet. Actually, I think you should make that change before committing, since this patch is about performance.

&gt; Source/WebCore/platform/mac/WebFontCache.mm:303
&gt; +    // FIXME: Font auto-activation also takes a font size argument so in theory, this could break

Should be &quot;...font size argument. So, in theory,...&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039829</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-10-06 14:32:04 -0700</bug_when>
    <thetext>Is it possible to do this for iOS too? I&apos;m trying to get rid of WebFontCache altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039830</commentid>
    <comment_count>7</comment_count>
      <attachid>239354</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-10-06 14:34:41 -0700</bug_when>
    <thetext>Comment on attachment 239354
Patch

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

&gt;&gt; Source/WebCore/platform/mac/WebFontCache.mm:303
&gt;&gt; +    // FIXME: Font auto-activation also takes a font size argument so in theory, this could break
&gt; 
&gt; Should be &quot;...font size argument. So, in theory,...&quot;.

Font files themselves don&apos;t contain particular sizes. The size argument is regarding the return value of fontWithName. I recommend you remove this entire comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039835</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-10-06 14:39:08 -0700</bug_when>
    <thetext>I know Enrica already r+&apos;ed this, but I think it should be r-&apos;ed. Please investigate doing this in a non-mac-specific way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039837</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 14:40:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 239354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239354&amp;action=review
&gt; 
&gt; Code looks right to me -- but how serious is this auto-activation at a different size problem? Should we keep a set of sets, where the value in the first set is a set of sizes?

I discussed this over with Gavin. It seemed unlikely to happen in the real world to us. Considering the performance implication, this is much better than completely disabling the font auto-activation. I will file a bug against NSFont so that we could add an API telling us if auto-activation failed because of the size only. Most of the time, however, it will fail simply because SpotLight couldn&apos;t find a matching font file.

Note that having a cache that would take use [Family, size] as key (as you suggest) would not help much performance wise. The reason we end up doing auto-activation 250 times for only 10 font families is because the page is requesting the font in various sizes (and italics, weight, but mostly sizes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039838</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 14:41:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I know Enrica already r+&apos;ed this, but I think it should be r-&apos;ed. Please investigate doing this in a non-mac-specific way.

What do you mean? auto-activation *is* mac-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039839</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 14:42:28 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 239354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239354&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/mac/WebFontCache.mm:303
&gt; &gt;&gt; +    // FIXME: Font auto-activation also takes a font size argument so in theory, this could break
&gt; &gt; 
&gt; &gt; Should be &quot;...font size argument. So, in theory,...&quot;.
&gt; 
&gt; Font files themselves don&apos;t contain particular sizes. The size argument is regarding the return value of fontWithName. I recommend you remove this entire comment.

Oh OK, this is good to know, thanks. It is safer than I thought then, good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039843</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 14:52:56 -0700</bug_when>
    <thetext>After discussing with Miles, it seems feasible to address the issue at higher level and cache if we already asked for a given font family in the past. Apparently, the fact that the size is different for each request does not matter. However, I need to ask for the font again if other font traits differ (e.g. italics).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039848</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-10-06 14:58:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 239354 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239354&amp;action=review
&gt; &gt; 
&gt; &gt; Code looks right to me -- but how serious is this auto-activation at a different size problem? Should we keep a set of sets, where the value in the first set is a set of sizes?
&gt; 
&gt; I discussed this over with Gavin. It seemed unlikely to happen in the real world to us. Considering the performance implication, this is much better than completely disabling the font auto-activation. I will file a bug against NSFont so that we could add an API telling us if auto-activation failed because of the size only. Most of the time, however, it will fail simply because SpotLight couldn&apos;t find a matching font file.
&gt; 
&gt; Note that having a cache that would take use [Family, size] as key (as you suggest) would not help much performance wise. The reason we end up doing auto-activation 250 times for only 10 font families is because the page is requesting the font in various sizes (and italics, weight, but mostly sizes).

By the way, we eventually want to move font selection to 100% CoreText functions and move away from NSFont completely (thereby allowing us to unify the mac + iOS font caches). Please see https://bugs.webkit.org/show_bug.cgi?id=134752 and https://bugs.webkit.org/show_bug.cgi?id=132159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039879</commentid>
    <comment_count>14</comment_count>
      <attachid>239354</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-06 17:08:49 -0700</bug_when>
    <thetext>Comment on attachment 239354
Patch

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

&gt; Source/WebCore/platform/mac/WebFontCache.mm:283
&gt; +    static NSMutableSet *set = [[NSMutableSet alloc] init];

Is this code main thread only? Please add an assertion to check for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039881</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-06 17:12:22 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 239354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239354&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/WebFontCache.mm:283
&gt; &gt; +    static NSMutableSet *set = [[NSMutableSet alloc] init];
&gt; 
&gt; Is this code main thread only? Please add an assertion to check for that.

Ok, I will. The patch will likely change a lot, I am trying to handle the caching at FontCache.cpp level instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040168</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-07 17:18:40 -0700</bug_when>
    <thetext>Ok, so I implemented this at higher level (FontCache.cpp) by basically asking the platform for the font only if this did not ask for that Family/weight/italics combination before (notice that size is not in there). However, this causes 60 font auto-activations to happens (because of the different weight / italics combinations) instead of 10 with my lower-level patch (and 250 without any change). Font auto activation only takes the font family as argument so implementing this at higher level is suboptimal. This also adds complexity to FontCache.cpp.

After discussing this over with Myles, I think I will refine my earlier patch instead (use a HashSet as suggested and add a assertion for threading).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040190</commentid>
    <comment_count>17</comment_count>
      <attachid>239450</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-07 20:36:23 -0700</bug_when>
    <thetext>Created attachment 239450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040191</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-07 20:43:16 -0700</bug_when>
    <thetext>Here is a new iteration of the patch. I am setting the review flag again because the changes are non-trivial even though the approach stays the same.

The following changes were made:
- Use a HashSet&lt;AtomicString&gt; instead of an NSSet of NSStrings as suggested by Geoffrey. To avoid having to convert NSStrings into AtomicStrings (especially considering the string is initially an AtomicString), I moved the cache up to FontCacheMac.mm, where the font family is still an AtomicString, as suggested by Myles.
- I added a fontWithFamily() overload to WebFontCache taking an additional |shouldAutoActivateFontIfNeeded| argument as the cache is now at the call site. I kept the old API around in case other clients are relying on it.
- I added an assertion making sure the new cache is always used from the same thread, as suggested by Alexey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040198</commentid>
    <comment_count>19</comment_count>
      <attachid>239450</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-07 21:18:27 -0700</bug_when>
    <thetext>Comment on attachment 239450
Patch

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

&gt; Source/WebCore/platform/graphics/mac/FontCacheMac.mm:104
&gt; +    if (knownFamilies.get().size() == maxCacheSize)

I’d also assert that size is &lt;= maxCacheSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040218</commentid>
    <comment_count>20</comment_count>
      <attachid>239457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-07 22:54:49 -0700</bug_when>
    <thetext>Created attachment 239457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040308</commentid>
    <comment_count>21</comment_count>
      <attachid>239457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 09:20:38 -0700</bug_when>
    <thetext>Comment on attachment 239457
Patch

Clearing flags on attachment: 239457

Committed r174456: &lt;http://trac.webkit.org/changeset/174456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040309</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-08 09:20:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040320</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-08 10:04:34 -0700</bug_when>
    <thetext>This broke Mavericks build: https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20%28Build%29/builds/11204/steps/compile-webkit/logs/errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040334</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-08 10:23:42 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; This broke Mavericks build: https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20%28Build%29/builds/11204/steps/compile-webkit/logs/errors

Fixed in https://trac.webkit.org/r174457, thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239348</attachid>
            <date>2014-10-06 12:30:13 -0700</date>
            <delta_ts>2014-10-06 14:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137454-20141006123015.patch</filename>
            <type>text/plain</type>
            <size>3891</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAxYzQ2Yzc0MDFiZjFi
MTRiYTA0MGFhYjIxMzJhZmFjMjYyN2U4Yi4uZDE5MDRmYzA0NzAwMGI4ZDVkNDk0NDk3ZGVmM2Q2
ZWYxN2I1MDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTEwLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gV2UgYXJlIHNwZW5k
aW5nIGEgbG90IG9mIHRpbWUgbG9hZGluZyBmb250cyB3aGVuIGxvYWRpbmcgd2VhdGhlci5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzQ1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBz
cGVuZGluZyBhIGxvdCBvZiB0aW1lIGxvYWRpbmcgZm9udHMgd2hlbiBsb2FkaW5nIHdlYXRoZXIu
Y29tOgorICAgICAgICB+NC4yJSBvZiBXZWJQcm9jZXNzJ3MgY3B1IHRpbWUgaW4gRm9udENhY2hl
OjpnZXRDYWNoZWRGcm9udERhdGEoKS4KKyAgICAgICAgSW4gcGFydGljdWxhciwgd2UgYXJlIHNw
ZW5kaW5nIGEgbG90IG9mIHRpbWUgZG9pbmcgZm9udCBhdXRvLWFjdGl2YXRpb24KKyAgICAgICAg
YmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSBPcGVuIFNhbnMgZm9udHMgaW5zdGFsbGVkIGFuZCB3
ZWF0aGVyLmNvbSBpcworICAgICAgICB0cnlpbmcgdG8gbG9hZCB0aG9zZS4KKworICAgICAgICBC
ZWZvcmUgdGhpcyBwYXRjaCwgd2Ugd2VyZSBkb2luZyBmb250IGF1dG8tYWN0aXZhdGlvbiB+MjUw
IHRpbWVzIHdoZW4KKyAgICAgICAgbG9hZGluZyB3ZWF0aGVyLmNvbSwgZXZlbiB0aG91Z2ggdGhl
IHNpdGUgaXMgbG9hZGluZyB+MTAgZGlzdGluY3QgZm9udAorICAgICAgICBmYW1pbGllcy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBjYWNoZSBvZiBmb250IGZhbWlsaWVzIHdlIGFscmVh
ZHkgdHJpZWQgdG8KKyAgICAgICAgYXV0by1hY3RpdmF0ZSBzbyB0aGF0IHdlIGRvbid0IHRyeSBh
Z2Fpbi4gVGhpcyByZXN1bHRzIGluIH4xMCBmb250CisgICAgICAgIGF1dG8tYWN0aXZhdGlvbnMg
d2hlbiBsb2FkaW5nIHdlYXRoZXIuY29tIGluc3RlYWQgb2YgMjUwLiBJdCByZWR1Y2VzCisgICAg
ICAgIHRoZSBhbW91bnQgb2YgdGltZSBzcGVudCBpbiBnZXRDYWNoZWRGcm9udERhdGEoKSB0byA3
My45bXMgZnJvbSAyNzZtcworICAgICAgICAoMy43eCBsZXNzKSB3aGVuIGxvYWRpbmcgd2VhdGhl
ci5jb20uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tOgorICAgICAgICAoYXV0b0FjdGl2
YXRlZEZhbWlsaWVzU2V0KToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5
OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdKToKKwogMjAxNC0xMC0wNiAgQWRhIENoYW4gIDxhZGFjaGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUGFnZTo6aXNQbGF5aW5nQXVkaW8oKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCmluZGV4IGUzNDYw
YjQ2YjJiNWE2MTJmMDNhNDE4OWI4MmUxMjQzMTk4MTMxNjAuLmFlODFhNjc1OTI2MTU5NGZhZDY5
MTAxMjJmN2MxNDYyZmRjMjNlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJGb250Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkZvbnRDYWNoZS5tbQpAQCAtNTAsNiArNTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ICAgICB8IE5TU21hbGxDYXBzRm9udE1hc2sgXAogKQogCitzdGF0aWMgY29uc3QgTlNVSW50ZWdl
ciBhdXRvQWN0aXZhdGVkRm9udHNNYXhDYWNoZVNpemUgPSAxMjg7CisKIHN0YXRpYyBCT09MIGFj
Y2VwdGFibGVDaG9pY2UoTlNGb250VHJhaXRNYXNrIGRlc2lyZWRUcmFpdHMsIE5TRm9udFRyYWl0
TWFzayBjYW5kaWRhdGVUcmFpdHMpCiB7CiAgICAgZGVzaXJlZFRyYWl0cyAmPSB+U1lOVEhFU0la
RURfRk9OVF9UUkFJVFM7CkBAIC0yNzYsMTYgKzI3OCwzNSBAQCBzdGF0aWMgaW5saW5lIEZvbnRU
cmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFpdE1hc2sgYXBwS2l0VHJhaXRzLCBOU0lu
dGVnZQogICAgIHJldHVybiBmb250OwogfQogCitzdGF0aWMgTlNNdXRhYmxlU2V0ICphdXRvQWN0
aXZhdGVkRmFtaWxpZXNTZXQoKQoreworICAgIHN0YXRpYyBOU011dGFibGVTZXQgKnNldCA9IFtb
TlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2V0OworfQorCiArIChOU0Zv
bnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNG
b250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJlZFdlaWdodCBzaXpl
OihmbG9hdClzaXplCiB7CiAgICAgTlNGb250ICpmb250ID0gW3NlbGYgaW50ZXJuYWxGb250V2l0
aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVk
V2VpZ2h0IHNpemU6c2l6ZV07CiAgICAgaWYgKGZvbnQpCiAgICAgICAgIHJldHVybiBmb250Owog
CisgICAgLy8gQ2hlY2sgaWYgdGhhdCBmb250IGZhbWlseSB3YXMgYWxyZWFkeSBhdXRvLWFjdGl2
YXRlZCBhcyBmb250IGF1dG8tYWN0aXZhdGlvbgorICAgIC8vIGNhbiBiZSBleHBlbnNpdmUuCisg
ICAgaWYgKFthdXRvQWN0aXZhdGVkRmFtaWxpZXNTZXQoKSBjb250YWluc09iamVjdDpkZXNpcmVk
RmFtaWx5XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIC8vIEF1dG8gYWN0aXZhdGUgdGhl
IGZvbnQgYmVmb3JlIGxvb2tpbmcgZm9yIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAgLy8gSWdub3Jl
IHRoZSByZXN1bHQgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBvdXIgb3duIGFsZ29yaXRobSB0byBh
Y3R1YWxseSBmaW5kIHRoZSBmb250LgogICAgIFtOU0ZvbnQgZm9udFdpdGhOYW1lOmRlc2lyZWRG
YW1pbHkgc2l6ZTpzaXplXTsKIAorICAgIC8vIE1hcmsgYXMgYWxyZWFkeSBhdXRvLWFjdGl2YXRl
ZC4KKyAgICAvLyBGSVhNRTogRm9udCBhdXRvLWFjdGl2YXRpb24gYWxzbyB0YWtlcyBhIGZvbnQg
c2l6ZSBhcmd1bWVudCBzbyBpbiB0aGVvcnksIHRoaXMgY291bGQgYnJlYWsKKyAgICAvLyBhdXRv
LWFjdGl2YXRpb24gd2hlbiBmb250IFggaXMgZm91bmQgb24gdGhlIGZpbGUgc3lzdGVtIGJ1dCBk
b2VzIG5vdCBjb250YWluIHNpemUgeSwgdGhlbgorICAgIC8vIHRoZSBwYWdlIGFza3MgbGF0ZXIg
Zm9yIGZvbnQgWCBpbiBhIHNpemUgdGhhdCBpcyB0aGlzIHRpbWUgY29udGFpbmVkIG9uIHRoZSBm
aWxlIHN5c3RlbS4KKyAgICBpZiAoW2F1dG9BY3RpdmF0ZWRGYW1pbGllc1NldCgpIGNvdW50XSA9
PSBhdXRvQWN0aXZhdGVkRm9udHNNYXhDYWNoZVNpemUpCisgICAgICAgIFthdXRvQWN0aXZhdGVk
RmFtaWxpZXNTZXQoKSByZW1vdmVPYmplY3Q6W2F1dG9BY3RpdmF0ZWRGYW1pbGllc1NldCgpIGFu
eU9iamVjdF1dOworICAgIFthdXRvQWN0aXZhdGVkRmFtaWxpZXNTZXQoKSBhZGRPYmplY3Q6ZGVz
aXJlZEZhbWlseV07CisKICAgICByZXR1cm4gW3NlbGYgaW50ZXJuYWxGb250V2l0aEZhbWlseTpk
ZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVkV2VpZ2h0IHNp
emU6c2l6ZV07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239354</attachid>
            <date>2014-10-06 14:03:41 -0700</date>
            <delta_ts>2014-10-07 20:36:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137454-20141006140343.patch</filename>
            <type>text/plain</type>
            <size>3900</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5Nzk0MmYyNTk5NGVj
ODNkM2QzMTUxNGI5Mzk1NTY4ZjU1OGVjMC4uMzc1MDdlMWEyNGQ5MWJhMjlmZWEyYWEyMzg1NDNi
MTRlNTBhMmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTEwLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gV2UgYXJlIHNwZW5k
aW5nIGEgbG90IG9mIHRpbWUgbG9hZGluZyBmb250cyB3aGVuIGxvYWRpbmcgd2VhdGhlci5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzQ1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBz
cGVuZGluZyBhIGxvdCBvZiB0aW1lIGxvYWRpbmcgZm9udHMgd2hlbiBsb2FkaW5nIHdlYXRoZXIu
Y29tOgorICAgICAgICB+NC4yJSBvZiBXZWJQcm9jZXNzJ3MgY3B1IHRpbWUgaW4gRm9udENhY2hl
OjpnZXRDYWNoZWRGcm9udERhdGEoKS4KKyAgICAgICAgSW4gcGFydGljdWxhciwgd2UgYXJlIHNw
ZW5kaW5nIGEgbG90IG9mIHRpbWUgZG9pbmcgZm9udCBhdXRvLWFjdGl2YXRpb24KKyAgICAgICAg
YmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSBPcGVuIFNhbnMgZm9udHMgaW5zdGFsbGVkIGFuZCB3
ZWF0aGVyLmNvbSBpcworICAgICAgICB0cnlpbmcgdG8gbG9hZCB0aG9zZS4KKworICAgICAgICBC
ZWZvcmUgdGhpcyBwYXRjaCwgd2Ugd2VyZSBkb2luZyBmb250IGF1dG8tYWN0aXZhdGlvbiB+MjUw
IHRpbWVzIHdoZW4KKyAgICAgICAgbG9hZGluZyB3ZWF0aGVyLmNvbSwgZXZlbiB0aG91Z2ggdGhl
IHNpdGUgaXMgbG9hZGluZyB+MTAgZGlzdGluY3QgZm9udAorICAgICAgICBmYW1pbGllcy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBjYWNoZSBvZiBmb250IGZhbWlsaWVzIHdlIGFscmVh
ZHkgdHJpZWQgdG8KKyAgICAgICAgYXV0by1hY3RpdmF0ZSBzbyB0aGF0IHdlIGRvbid0IHRyeSBh
Z2Fpbi4gVGhpcyByZXN1bHRzIGluIH4xMCBmb250CisgICAgICAgIGF1dG8tYWN0aXZhdGlvbnMg
d2hlbiBsb2FkaW5nIHdlYXRoZXIuY29tIGluc3RlYWQgb2YgMjUwLiBJdCByZWR1Y2VzCisgICAg
ICAgIHRoZSBhbW91bnQgb2YgdGltZSBzcGVudCBpbiBnZXRDYWNoZWRGcm9udERhdGEoKSB0byA3
My45bXMgZnJvbSAyNzZtcworICAgICAgICAoMy43eCBsZXNzKSB3aGVuIGxvYWRpbmcgd2VhdGhl
ci5jb20uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tOgorICAgICAgICAoYXV0b0FjdGl2
YXRlZEZhbWlsaWVzU2V0KToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5
OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdKToKKwogMjAxNC0xMC0wNiAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjE3NDMzNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250
Q2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCmlu
ZGV4IGUzNDYwYjQ2YjJiNWE2MTJmMDNhNDE4OWI4MmUxMjQzMTk4MTMxNjAuLmFlODFhNjc1OTI2
MTU5NGZhZDY5MTAxMjJmN2MxNDYyZmRjMjNlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkZvbnRDYWNoZS5tbQpAQCAtNTAsNiArNTAsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICB8IE5TU21hbGxDYXBzRm9udE1hc2sgXAogKQogCitzdGF0aWMgY29uc3Qg
TlNVSW50ZWdlciBhdXRvQWN0aXZhdGVkRm9udHNNYXhDYWNoZVNpemUgPSAxMjg7CisKIHN0YXRp
YyBCT09MIGFjY2VwdGFibGVDaG9pY2UoTlNGb250VHJhaXRNYXNrIGRlc2lyZWRUcmFpdHMsIE5T
Rm9udFRyYWl0TWFzayBjYW5kaWRhdGVUcmFpdHMpCiB7CiAgICAgZGVzaXJlZFRyYWl0cyAmPSB+
U1lOVEhFU0laRURfRk9OVF9UUkFJVFM7CkBAIC0yNzYsMTYgKzI3OCwzNSBAQCBzdGF0aWMgaW5s
aW5lIEZvbnRUcmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFpdE1hc2sgYXBwS2l0VHJh
aXRzLCBOU0ludGVnZQogICAgIHJldHVybiBmb250OwogfQogCitzdGF0aWMgTlNNdXRhYmxlU2V0
ICphdXRvQWN0aXZhdGVkRmFtaWxpZXNTZXQoKQoreworICAgIHN0YXRpYyBOU011dGFibGVTZXQg
KnNldCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKKyAgICByZXR1cm4gc2V0OworfQor
CiArIChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRy
YWl0czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJlZFdl
aWdodCBzaXplOihmbG9hdClzaXplCiB7CiAgICAgTlNGb250ICpmb250ID0gW3NlbGYgaW50ZXJu
YWxGb250V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdo
dDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6ZV07CiAgICAgaWYgKGZvbnQpCiAgICAgICAgIHJldHVy
biBmb250OwogCisgICAgLy8gQ2hlY2sgaWYgdGhhdCBmb250IGZhbWlseSB3YXMgYWxyZWFkeSBh
dXRvLWFjdGl2YXRlZCBhcyBmb250IGF1dG8tYWN0aXZhdGlvbgorICAgIC8vIGNhbiBiZSBleHBl
bnNpdmUuCisgICAgaWYgKFthdXRvQWN0aXZhdGVkRmFtaWxpZXNTZXQoKSBjb250YWluc09iamVj
dDpkZXNpcmVkRmFtaWx5XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIC8vIEF1dG8gYWN0
aXZhdGUgdGhlIGZvbnQgYmVmb3JlIGxvb2tpbmcgZm9yIGl0IGEgc2Vjb25kIHRpbWUuCiAgICAg
Ly8gSWdub3JlIHRoZSByZXN1bHQgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBvdXIgb3duIGFsZ29y
aXRobSB0byBhY3R1YWxseSBmaW5kIHRoZSBmb250LgogICAgIFtOU0ZvbnQgZm9udFdpdGhOYW1l
OmRlc2lyZWRGYW1pbHkgc2l6ZTpzaXplXTsKIAorICAgIC8vIE1hcmsgYXMgYWxyZWFkeSBhdXRv
LWFjdGl2YXRlZC4KKyAgICAvLyBGSVhNRTogRm9udCBhdXRvLWFjdGl2YXRpb24gYWxzbyB0YWtl
cyBhIGZvbnQgc2l6ZSBhcmd1bWVudCBzbyBpbiB0aGVvcnksIHRoaXMgY291bGQgYnJlYWsKKyAg
ICAvLyBhdXRvLWFjdGl2YXRpb24gd2hlbiBmb250IFggaXMgZm91bmQgb24gdGhlIGZpbGUgc3lz
dGVtIGJ1dCBkb2VzIG5vdCBjb250YWluIHNpemUgeSwgdGhlbgorICAgIC8vIHRoZSBwYWdlIGFz
a3MgbGF0ZXIgZm9yIGZvbnQgWCBpbiBhIHNpemUgdGhhdCBpcyB0aGlzIHRpbWUgY29udGFpbmVk
IG9uIHRoZSBmaWxlIHN5c3RlbS4KKyAgICBpZiAoW2F1dG9BY3RpdmF0ZWRGYW1pbGllc1NldCgp
IGNvdW50XSA9PSBhdXRvQWN0aXZhdGVkRm9udHNNYXhDYWNoZVNpemUpCisgICAgICAgIFthdXRv
QWN0aXZhdGVkRmFtaWxpZXNTZXQoKSByZW1vdmVPYmplY3Q6W2F1dG9BY3RpdmF0ZWRGYW1pbGll
c1NldCgpIGFueU9iamVjdF1dOworICAgIFthdXRvQWN0aXZhdGVkRmFtaWxpZXNTZXQoKSBhZGRP
YmplY3Q6ZGVzaXJlZEZhbWlseV07CisKICAgICByZXR1cm4gW3NlbGYgaW50ZXJuYWxGb250V2l0
aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVk
V2VpZ2h0IHNpemU6c2l6ZV07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239450</attachid>
            <date>2014-10-07 20:36:23 -0700</date>
            <delta_ts>2014-10-07 22:54:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137454-20141007203626.patch</filename>
            <type>text/plain</type>
            <size>7045</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg3ZTlkMTBjZjVkMWI4
YWE2MDVhOTI4NTEyM2Q2OTI0NzVkNmE0Zi4uZWJmYjQxZTcxODAxZmMxNjFkOTE5NDhkZGRkMmUx
NjRkM2VjNDIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTEwLTA3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBXZSBhcmUg
c3BlbmRpbmcgYSBsb3Qgb2YgdGltZSBsb2FkaW5nIGZvbnRzIHdoZW4gbG9hZGluZyB3ZWF0aGVy
LmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
YXJlIHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgbG9hZGluZyBmb250cyB3aGVuIGxvYWRpbmcgd2Vh
dGhlci5jb206CisgICAgICAgIH40LjIlIG9mIFdlYlByb2Nlc3MncyBjcHUgdGltZSBpbiBGb250
Q2FjaGU6OmdldENhY2hlZEZyb250RGF0YSgpLgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB3ZSBh
cmUgc3BlbmRpbmcgYSBsb3Qgb2YgdGltZSBkb2luZyBmb250IGF1dG8tYWN0aXZhdGlvbgorICAg
ICAgICBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIE9wZW4gU2FucyBmb250cyBpbnN0YWxsZWQg
YW5kIHdlYXRoZXIuY29tIGlzCisgICAgICAgIHRyeWluZyB0byBsb2FkIHRob3NlLgorCisgICAg
ICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIGRvaW5nIGZvbnQgYXV0by1hY3RpdmF0aW9u
IH4yNTAgdGltZXMgd2hlbgorICAgICAgICBsb2FkaW5nIHdlYXRoZXIuY29tLCBldmVuIHRob3Vn
aCB0aGUgc2l0ZSBpcyBsb2FkaW5nIH4xMCBkaXN0aW5jdCBmb250CisgICAgICAgIGZhbWlsaWVz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhY2hlIG9mIGZvbnQgZmFtaWxpZXMgd2Ug
YWxyZWFkeSB0cmllZCB0bworICAgICAgICBhdXRvLWFjdGl2YXRlIHNvIHRoYXQgd2UgZG9uJ3Qg
dHJ5IGFnYWluLiBUaGlzIHJlc3VsdHMgaW4gfjEwIGZvbnQKKyAgICAgICAgYXV0by1hY3RpdmF0
aW9ucyB3aGVuIGxvYWRpbmcgd2VhdGhlci5jb20gaW5zdGVhZCBvZiAyNTAuIEl0IHJlZHVjZXMK
KyAgICAgICAgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGluIGdldENhY2hlZEZyb250RGF0YSgp
IHRvIDYyLjZtcyBmcm9tIDI3Nm1zCisgICAgICAgICg0LjR4IGxlc3MpIHdoZW4gbG9hZGluZyB3
ZWF0aGVyLmNvbS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkZv
bnRDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0
czp3ZWlnaHQ6c2l6ZTpzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDpdKToKKyAgICAgICAgKCtb
V2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdKToKKyAgICAg
ICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czpzaXplOl0pOgorCiAyMDE0
LTEwLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJvbGwtb3ZlciBDaGFuZ2Vsb2dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KaW5kZXggNjkwMjFhNTEyNWZkZjU5NjQ0YWMw
ZGM5NjM3ZTA2MTA2YjExNjcxYi4uNjUyYjAzNjc4OWQwZmFhZDI4ODNlZjM3NGUyNWQ5NzNhMjQy
MDVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCkBAIC0zOSw4ICszOSwxMCBAQAogI2ltcG9ydCAiV2ViRm9udENhY2hl
LmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0KKyNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw2ICs5MCwy
NCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBcHBLaXRGb250V2VpZ2h0Qm9sZChOU0ludGVnZXIg
YXBwS2l0Rm9udFdlaWdodCkKICAgICByZXR1cm4gYXBwS2l0Rm9udFdlaWdodCA+PSA3OwogfQog
CitzdGF0aWMgYm9vbCBzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCit7CisjaWZuZGVmIE5ERUJVRworICAgIC8vIFRoaXMgY2FjaGUgaXMg
bm90IHRocmVhZCBzYWZlIHNvIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGlzIHRoZXJlIHRvCisg
ICAgLy8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNhbGxlZCBmcm9tIHRoZSBz
YW1lIHRocmVhZC4KKyAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpbml0VGhyZWFkSWQgPSBj
dXJyZW50VGhyZWFkKCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBpbml0VGhyZWFk
SWQpOworI2VuZGlmCisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNT
dHJpbmc+PiBrbm93bkZhbWlsaWVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNo
ZVNpemUgPSAxMjg7CisgICAgaWYgKGtub3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpID09IG1heENh
Y2hlU2l6ZSkKKyAgICAgICAga25vd25GYW1pbGllcy5nZXQoKS5yZW1vdmUoa25vd25GYW1pbGll
cy5nZXQoKS5iZWdpbigpKTsKKworICAgIC8vIE9ubHkgYXR0ZW1wdCB0byBhdXRvLWFjdGl2YXRl
IGZvbnRzIG9uY2UgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgICAgcmV0dXJuIGtub3duRmFt
aWxpZXMuZ2V0KCkuYWRkKGZhbWlseSkuaXNOZXdFbnRyeTsKK30KKwogUGFzc1JlZlB0cjxTaW1w
bGVGb250RGF0YT4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgU2ltcGxlRm9udERhdGEqIG9yaWdp
bmFsRm9udERhdGEsIGJvb2wgaXNQbGF0Zm9ybUZvbnQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBpbnQgbGVuZ3RoKQogewogICAgIFVDaGFyMzIgY2hhcmFjdGVyOwpAQCAtMjAzLDcgKzIyMyw3
IEBAIFBhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwCiAgICAgTlNJbnRlZ2VyIHdlaWdodCA9IHRvQXBw
S2l0Rm9udFdlaWdodChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpOwogICAgIGZsb2F0IHNpemUg
PSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKTsKIAotICAgIE5TRm9udCAqbnNG
b250ID0gW1dlYkZvbnRDYWNoZSBmb250V2l0aEZhbWlseTpmYW1pbHkgdHJhaXRzOnRyYWl0cyB3
ZWlnaHQ6d2VpZ2h0IHNpemU6c2l6ZV07CisgICAgTlNGb250ICpuc0ZvbnQgPSBbV2ViRm9udENh
Y2hlIGZvbnRXaXRoRmFtaWx5OmZhbWlseSB0cmFpdHM6dHJhaXRzIHdlaWdodDp3ZWlnaHQgc2l6
ZTpzaXplIHNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkOnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJ
Zk5lZWRlZChmYW1pbHkpXTsKICAgICBpZiAoIW5zRm9udCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUuaAppbmRleCAy
Yzc3MDNlZDgxNThhYzVmZTkxNTkwMzAxODI4OTdmYzNiOWNhMTFiLi41MzVlNjRhMWQwMTg0NGIw
YzY3YzA5ZDYzMTJiYzE1NDM1YWY1MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkZvbnRDYWNoZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIC8vIFRoaXMgaW50ZXJmYWNlIGV4
aXN0cyBzbyB0aGF0IHRoaXJkIHBhcnR5IHByb2R1Y3RzIChsaWtlIFNpbGspIGNhbiBwYXRjaCBp
biB0byBhbiBPYmotQyBtZXRob2QgdG8gbWFuaXB1bGF0ZSBXZWJLaXQncyBmb250IGNhY2hpbmcv
c3Vic3RpdHV0aW9uLgogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJGb250Q2FjaGUgOiBO
U09iamVjdAorKyAoTlNGb250ICopZm9udFdpdGhGYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZh
bWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFzaylkZXNpcmVkVHJhaXRzIHdlaWdodDooaW50KWRl
c2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6ZSBzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDoo
Qk9PTClzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDsKICsgKE5TRm9udCAqKWZvbnRXaXRoRmFt
aWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1pbHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spZGVz
aXJlZFRyYWl0cyB3ZWlnaHQ6KGludClkZXNpcmVkV2VpZ2h0IHNpemU6KGZsb2F0KXNpemU7CiAr
ICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVuc2lnbmVkPiYpdHJhaXRzTWFza3MgaW5GYW1pbHk6
KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJGb250Q2FjaGUubW0KaW5kZXggZTM0NjBiNDZiMmI1YTYxMmYwM2E0MTg5YjgyZTEyNDMx
OTgxMzE2MC4uNThhNWYyNGEzNDdhNjgzYzNkN2Y5NzZmZjA5ZWY5OTUyZDM2NDhhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCkBAIC0yNzYsMTAgKzI3
NiwxMCBAQCArIChOU0ZvbnQgKilpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRl
c2lyZWRGYW1pbHkgdHJhaXRzOihOU0ZvbnRUcmFpdAogICAgIHJldHVybiBmb250OwogfQogCi0r
IChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0
czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJlZFdlaWdo
dCBzaXplOihmbG9hdClzaXplCisrIChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcg
KilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2Vp
Z2h0OihpbnQpZGVzaXJlZFdlaWdodCBzaXplOihmbG9hdClzaXplIHNob3VsZEF1dG9BY3RpdmF0
ZUlmTmVlZGVkOihCT09MKXNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkCiB7CiAgICAgTlNGb250
ICpmb250ID0gW3NlbGYgaW50ZXJuYWxGb250V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0
czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6ZV07Ci0gICAgaWYg
KGZvbnQpCisgICAgaWYgKGZvbnQgfHwgIXNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkKQogICAg
ICAgICByZXR1cm4gZm9udDsKIAogICAgIC8vIEF1dG8gYWN0aXZhdGUgdGhlIGZvbnQgYmVmb3Jl
IGxvb2tpbmcgZm9yIGl0IGEgc2Vjb25kIHRpbWUuCkBAIC0yODksMTAgKzI4OSwxNSBAQCArIChO
U0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czoo
TlNGb250VHJhaXRNYXNrKWRlcwogICAgIHJldHVybiBbc2VsZiBpbnRlcm5hbEZvbnRXaXRoRmFt
aWx5OmRlc2lyZWRGYW1pbHkgdHJhaXRzOmRlc2lyZWRUcmFpdHMgd2VpZ2h0OmRlc2lyZWRXZWln
aHQgc2l6ZTpzaXplXTsKIH0KIAorKyAoTlNGb250ICopZm9udFdpdGhGYW1pbHk6KE5TU3RyaW5n
ICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFzaylkZXNpcmVkVHJhaXRzIHdl
aWdodDooaW50KWRlc2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6ZQoreworICAgIHJldHVybiBb
c2VsZiBmb250V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdl
aWdodDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6ZSBzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDpZ
RVNdOworfQorCiArIChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVk
RmFtaWx5IHRyYWl0czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgc2l6ZTooZmxvYXQp
c2l6ZQogewogICAgIGludCBkZXNpcmVkV2VpZ2h0ID0gKGRlc2lyZWRUcmFpdHMgJiBOU0JvbGRG
b250TWFzaykgPyA5IDogNTsKLSAgICByZXR1cm4gW3NlbGYgZm9udFdpdGhGYW1pbHk6ZGVzaXJl
ZEZhbWlseSB0cmFpdHM6ZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6ZGVzaXJlZFdlaWdodCBzaXplOnNp
emVdOworICAgIHJldHVybiBbc2VsZiBmb250V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0
czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6ZSBzaG91bGRBdXRv
QWN0aXZhdGVJZk5lZWRlZDpZRVNdOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239457</attachid>
            <date>2014-10-07 22:54:49 -0700</date>
            <delta_ts>2014-10-08 09:20:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137454-20141007225451.patch</filename>
            <type>text/plain</type>
            <size>7132</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFhZTViYTczNzk5ZDU3
MGIzYjdkYjZkMTEyMDQwZTQ5NDZjNGZjNi4uODJkNDFmYWJmZmNlNWVlYmQxMWU4MjQ4MzY5ZGJi
NTIwYzJmMGI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTEwLTA3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBXZSBhcmUg
c3BlbmRpbmcgYSBsb3Qgb2YgdGltZSBsb2FkaW5nIGZvbnRzIHdoZW4gbG9hZGluZyB3ZWF0aGVy
LmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3
NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2UgYXJl
IHNwZW5kaW5nIGEgbG90IG9mIHRpbWUgbG9hZGluZyBmb250cyB3aGVuIGxvYWRpbmcgd2VhdGhl
ci5jb206CisgICAgICAgIH40LjIlIG9mIFdlYlByb2Nlc3MncyBjcHUgdGltZSBpbiBGb250Q2Fj
aGU6OmdldENhY2hlZEZyb250RGF0YSgpLgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB3ZSBhcmUg
c3BlbmRpbmcgYSBsb3Qgb2YgdGltZSBkb2luZyBmb250IGF1dG8tYWN0aXZhdGlvbgorICAgICAg
ICBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIE9wZW4gU2FucyBmb250cyBpbnN0YWxsZWQgYW5k
IHdlYXRoZXIuY29tIGlzCisgICAgICAgIHRyeWluZyB0byBsb2FkIHRob3NlLgorCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIGRvaW5nIGZvbnQgYXV0by1hY3RpdmF0aW9uIH4y
NTAgdGltZXMgd2hlbgorICAgICAgICBsb2FkaW5nIHdlYXRoZXIuY29tLCBldmVuIHRob3VnaCB0
aGUgc2l0ZSBpcyBsb2FkaW5nIH4xMCBkaXN0aW5jdCBmb250CisgICAgICAgIGZhbWlsaWVzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhY2hlIG9mIGZvbnQgZmFtaWxpZXMgd2UgYWxy
ZWFkeSB0cmllZCB0bworICAgICAgICBhdXRvLWFjdGl2YXRlIHNvIHRoYXQgd2UgZG9uJ3QgdHJ5
IGFnYWluLiBUaGlzIHJlc3VsdHMgaW4gfjEwIGZvbnQKKyAgICAgICAgYXV0by1hY3RpdmF0aW9u
cyB3aGVuIGxvYWRpbmcgd2VhdGhlci5jb20gaW5zdGVhZCBvZiAyNTAuIEl0IHJlZHVjZXMKKyAg
ICAgICAgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGluIGdldENhY2hlZEZyb250RGF0YSgpIHRv
IDYyLjZtcyBmcm9tIDI3Nm1zCisgICAgICAgICg0LjR4IGxlc3MpIHdoZW4gbG9hZGluZyB3ZWF0
aGVyLmNvbS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViRm9udENhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkZvbnRD
YWNoZS5tbToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czp3
ZWlnaHQ6c2l6ZTpzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDpdKToKKyAgICAgICAgKCtbV2Vi
Rm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czp3ZWlnaHQ6c2l6ZTpdKToKKyAgICAgICAg
KCtbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OnRyYWl0czpzaXplOl0pOgorCiAyMDE0LTEw
LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZhcmkgOCBv
biBPU1ggMTAuMTAgZG9lcyBub3QgcnVuIFdlYkdMIGluIFJldGluYSBIaURQSSBtb2RlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMu
bW0KaW5kZXggNjkwMjFhNTEyNWZkZjU5NjQ0YWMwZGM5NjM3ZTA2MTA2YjExNjcxYi4uMDk5ZDE3
YzY4ZDMzZmQ3NTUwMjM5ZDU2YmZkM2IxZDg1ZjM3NzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCkBAIC0zOSw4ICsz
OSwxMCBAQAogI2ltcG9ydCAiV2ViRm9udENhY2hlLmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0
Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KKyNpbXBvcnQgPHd0Zi9UaHJl
YWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC04OCw2ICs5MCwyNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNB
cHBLaXRGb250V2VpZ2h0Qm9sZChOU0ludGVnZXIgYXBwS2l0Rm9udFdlaWdodCkKICAgICByZXR1
cm4gYXBwS2l0Rm9udFdlaWdodCA+PSA3OwogfQogCitzdGF0aWMgYm9vbCBzaG91bGRBdXRvQWN0
aXZhdGVGb250SWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCit7CisjaWZuZGVm
IE5ERUJVRworICAgIC8vIFRoaXMgY2FjaGUgaXMgbm90IHRocmVhZCBzYWZlIHNvIHRoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9uIGlzIHRoZXJlIHRvCisgICAgLy8gbWFrZSBzdXJlIHRoaXMgZnVuY3Rp
b24gaXMgYWx3YXlzIGNhbGxlZCBmcm9tIHRoZSBzYW1lIHRocmVhZC4KKyAgICBzdGF0aWMgVGhy
ZWFkSWRlbnRpZmllciBpbml0VGhyZWFkSWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBpbml0VGhyZWFkSWQpOworI2VuZGlmCisKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBrbm93bkZhbWlsaWVzOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZVNpemUgPSAxMjg7CisgICAgQVNTRVJUKGtu
b3duRmFtaWxpZXMuZ2V0KCkuc2l6ZSgpIDw9IG1heENhY2hlU2l6ZSk7CisgICAgaWYgKGtub3du
RmFtaWxpZXMuZ2V0KCkuc2l6ZSgpID09IG1heENhY2hlU2l6ZSkKKyAgICAgICAga25vd25GYW1p
bGllcy5nZXQoKS5yZW1vdmUoa25vd25GYW1pbGllcy5nZXQoKS5iZWdpbigpKTsKKworICAgIC8v
IE9ubHkgYXR0ZW1wdCB0byBhdXRvLWFjdGl2YXRlIGZvbnRzIG9uY2UgZm9yIHBlcmZvcm1hbmNl
IHJlYXNvbnMuCisgICAgcmV0dXJuIGtub3duRmFtaWxpZXMuZ2V0KCkuYWRkKGZhbWlseSkuaXNO
ZXdFbnRyeTsKK30KKwogUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpzeXN0
ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
biwgY29uc3QgU2ltcGxlRm9udERhdGEqIG9yaWdpbmFsRm9udERhdGEsIGJvb2wgaXNQbGF0Zm9y
bUZvbnQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKQogewogICAgIFVDaGFy
MzIgY2hhcmFjdGVyOwpAQCAtMjAzLDcgKzIyNCw3IEBAIFBhc3NPd25QdHI8Rm9udFBsYXRmb3Jt
RGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
CiAgICAgTlNJbnRlZ2VyIHdlaWdodCA9IHRvQXBwS2l0Rm9udFdlaWdodChmb250RGVzY3JpcHRp
b24ud2VpZ2h0KCkpOwogICAgIGZsb2F0IHNpemUgPSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQ
aXhlbFNpemUoKTsKIAotICAgIE5TRm9udCAqbnNGb250ID0gW1dlYkZvbnRDYWNoZSBmb250V2l0
aEZhbWlseTpmYW1pbHkgdHJhaXRzOnRyYWl0cyB3ZWlnaHQ6d2VpZ2h0IHNpemU6c2l6ZV07Cisg
ICAgTlNGb250ICpuc0ZvbnQgPSBbV2ViRm9udENhY2hlIGZvbnRXaXRoRmFtaWx5OmZhbWlseSB0
cmFpdHM6dHJhaXRzIHdlaWdodDp3ZWlnaHQgc2l6ZTpzaXplIHNob3VsZEF1dG9BY3RpdmF0ZUlm
TmVlZGVkOnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChmYW1pbHkpXTsKICAgICBpZiAo
IW5zRm9udCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJGb250Q2FjaGUuaAppbmRleCAyYzc3MDNlZDgxNThhYzVmZTkxNTkwMzAxODI4
OTdmYzNiOWNhMTFiLi41MzVlNjRhMWQwMTg0NGIwYzY3YzA5ZDYzMTJiYzE1NDM1YWY1MTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKIC8vIFRoaXMgaW50ZXJmYWNlIGV4aXN0cyBzbyB0aGF0IHRoaXJkIHBhcnR5IHBy
b2R1Y3RzIChsaWtlIFNpbGspIGNhbiBwYXRjaCBpbiB0byBhbiBPYmotQyBtZXRob2QgdG8gbWFu
aXB1bGF0ZSBXZWJLaXQncyBmb250IGNhY2hpbmcvc3Vic3RpdHV0aW9uLgogV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJGb250Q2FjaGUgOiBOU09iamVjdAorKyAoTlNGb250ICopZm9udFdp
dGhGYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5TRm9udFRyYWl0TWFz
aylkZXNpcmVkVHJhaXRzIHdlaWdodDooaW50KWRlc2lyZWRXZWlnaHQgc2l6ZTooZmxvYXQpc2l6
ZSBzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDooQk9PTClzaG91bGRBdXRvQWN0aXZhdGVJZk5l
ZWRlZDsKICsgKE5TRm9udCAqKWZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1p
bHkgdHJhaXRzOihOU0ZvbnRUcmFpdE1hc2spZGVzaXJlZFRyYWl0cyB3ZWlnaHQ6KGludClkZXNp
cmVkV2VpZ2h0IHNpemU6KGZsb2F0KXNpemU7CiArICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVu
c2lnbmVkPiYpdHJhaXRzTWFza3MgaW5GYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0KaW5kZXggZTM0
NjBiNDZiMmI1YTYxMmYwM2E0MTg5YjgyZTEyNDMxOTgxMzE2MC4uNThhNWYyNGEzNDdhNjgzYzNk
N2Y5NzZmZjA5ZWY5OTUyZDM2NDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkZvbnRDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViRm9udENhY2hlLm1tCkBAIC0yNzYsMTAgKzI3NiwxMCBAQCArIChOU0ZvbnQgKilpbnRlcm5h
bEZvbnRXaXRoRmFtaWx5OihOU1N0cmluZyAqKWRlc2lyZWRGYW1pbHkgdHJhaXRzOihOU0ZvbnRU
cmFpdAogICAgIHJldHVybiBmb250OwogfQogCi0rIChOU0ZvbnQgKilmb250V2l0aEZhbWlseToo
TlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNGb250VHJhaXRNYXNrKWRlc2lyZWRU
cmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJlZFdlaWdodCBzaXplOihmbG9hdClzaXplCisrIChOU0Zv
bnQgKilmb250V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNG
b250VHJhaXRNYXNrKWRlc2lyZWRUcmFpdHMgd2VpZ2h0OihpbnQpZGVzaXJlZFdlaWdodCBzaXpl
OihmbG9hdClzaXplIHNob3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkOihCT09MKXNob3VsZEF1dG9B
Y3RpdmF0ZUlmTmVlZGVkCiB7CiAgICAgTlNGb250ICpmb250ID0gW3NlbGYgaW50ZXJuYWxGb250
V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNp
cmVkV2VpZ2h0IHNpemU6c2l6ZV07Ci0gICAgaWYgKGZvbnQpCisgICAgaWYgKGZvbnQgfHwgIXNo
b3VsZEF1dG9BY3RpdmF0ZUlmTmVlZGVkKQogICAgICAgICByZXR1cm4gZm9udDsKIAogICAgIC8v
IEF1dG8gYWN0aXZhdGUgdGhlIGZvbnQgYmVmb3JlIGxvb2tpbmcgZm9yIGl0IGEgc2Vjb25kIHRp
bWUuCkBAIC0yODksMTAgKzI4OSwxNSBAQCArIChOU0ZvbnQgKilmb250V2l0aEZhbWlseTooTlNT
dHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNGb250VHJhaXRNYXNrKWRlcwogICAgIHJl
dHVybiBbc2VsZiBpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OmRlc2lyZWRGYW1pbHkgdHJhaXRzOmRl
c2lyZWRUcmFpdHMgd2VpZ2h0OmRlc2lyZWRXZWlnaHQgc2l6ZTpzaXplXTsKIH0KIAorKyAoTlNG
b250ICopZm9udFdpdGhGYW1pbHk6KE5TU3RyaW5nICopZGVzaXJlZEZhbWlseSB0cmFpdHM6KE5T
Rm9udFRyYWl0TWFzaylkZXNpcmVkVHJhaXRzIHdlaWdodDooaW50KWRlc2lyZWRXZWlnaHQgc2l6
ZTooZmxvYXQpc2l6ZQoreworICAgIHJldHVybiBbc2VsZiBmb250V2l0aEZhbWlseTpkZXNpcmVk
RmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNpcmVkV2VpZ2h0IHNpemU6c2l6
ZSBzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDpZRVNdOworfQorCiArIChOU0ZvbnQgKilmb250
V2l0aEZhbWlseTooTlNTdHJpbmcgKilkZXNpcmVkRmFtaWx5IHRyYWl0czooTlNGb250VHJhaXRN
YXNrKWRlc2lyZWRUcmFpdHMgc2l6ZTooZmxvYXQpc2l6ZQogewogICAgIGludCBkZXNpcmVkV2Vp
Z2h0ID0gKGRlc2lyZWRUcmFpdHMgJiBOU0JvbGRGb250TWFzaykgPyA5IDogNTsKLSAgICByZXR1
cm4gW3NlbGYgZm9udFdpdGhGYW1pbHk6ZGVzaXJlZEZhbWlseSB0cmFpdHM6ZGVzaXJlZFRyYWl0
cyB3ZWlnaHQ6ZGVzaXJlZFdlaWdodCBzaXplOnNpemVdOworICAgIHJldHVybiBbc2VsZiBmb250
V2l0aEZhbWlseTpkZXNpcmVkRmFtaWx5IHRyYWl0czpkZXNpcmVkVHJhaXRzIHdlaWdodDpkZXNp
cmVkV2VpZ2h0IHNpemU6c2l6ZSBzaG91bGRBdXRvQWN0aXZhdGVJZk5lZWRlZDpZRVNdOwogfQog
CiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>