<?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>145234</bug_id>
          
          <creation_ts>2015-05-20 17:46:38 -0700</creation_ts>
          <short_desc>[Cocoa] Use CTFontDrawGlyphs() instead of CGContextShowGlyphsWithAdvances()/CGContextShowGlyphsAtPositions()</short_desc>
          <delta_ts>2021-08-19 02:37:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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>
          <dependson>145449</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1096405</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-20 17:46:38 -0700</bug_when>
    <thetext>[Cocoa] Use CTFontDrawGlyphs() instead of CGContextShowGlyphsWithAdvances()/CGContextShowGlyphsAtPositions()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096408</commentid>
    <comment_count>1</comment_count>
      <attachid>253480</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-20 17:53:06 -0700</bug_when>
    <thetext>Created attachment 253480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096427</commentid>
    <comment_count>2</comment_count>
      <attachid>253480</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-05-20 18:23:46 -0700</bug_when>
    <thetext>Comment on attachment 253480
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:-386
&gt; -    CGAffineTransform matrix = useLetterpressEffect || platformData.isColorBitmapFont() ? CGAffineTransformIdentity : CGAffineTransformMakeScale(fontSize, fontSize);

Does the scale end up being applied in CTFontDrawGlyphs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096453</commentid>
    <comment_count>3</comment_count>
      <attachid>253494</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-20 19:16:26 -0700</bug_when>
    <thetext>Created attachment 253494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096454</commentid>
    <comment_count>4</comment_count>
      <attachid>253480</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-20 19:23:14 -0700</bug_when>
    <thetext>Comment on attachment 253480
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:-386
&gt;&gt; -    CGAffineTransform matrix = useLetterpressEffect || platformData.isColorBitmapFont() ? CGAffineTransformIdentity : CGAffineTransformMakeScale(fontSize, fontSize);
&gt; 
&gt; Does the scale end up being applied in CTFontDrawGlyphs?

No. Our current code draws the text at a size of 1pt into a scaled context. However, this approach is wrong when using CTFontDrawGlyphs() because CT will set the font size for us. Therefore, if we don&apos;t get rid of this context scaling, all text appears as if its point size was squared. (Note that [drawFont matrix] is just a scale by fontSize).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096624</commentid>
    <comment_count>5</comment_count>
      <attachid>253494</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-05-21 11:01:08 -0700</bug_when>
    <thetext>Comment on attachment 253494
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:-219
&gt; -        CGContextSetTextMatrix(context, savedMatrix);

I&apos;m not sure I understand why it is ok to remove the line above.

&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:386
&gt;  #endif

Could you explain this piece of code? From what I understand you removed a font scaling transform, but you also removed line 392. I won&apos;t be able to review this unless I fully understand it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096695</commentid>
    <comment_count>6</comment_count>
      <attachid>253494</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-21 16:42:47 -0700</bug_when>
    <thetext>Comment on attachment 253494
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:-219
&gt;&gt; -        CGContextSetTextMatrix(context, savedMatrix);
&gt; 
&gt; I&apos;m not sure I understand why it is ok to remove the line above.

Upon investigation, it appears that it isn&apos;t okay. The fact that no tests failed is troubling. I will investigate more.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/FontCascadeCocoa.mm:386
&gt;&gt;  #endif
&gt; 
&gt; Could you explain this piece of code? From what I understand you removed a font scaling transform, but you also removed line 392. I won&apos;t be able to review this unless I fully understand it.

See my previous comment to jonlee. I think that should explain it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096700</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-21 16:55:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (Note that [drawFont matrix] is just a scale by fontSize).

This is incorrect. It is often just a scale, but it might not be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096714</commentid>
    <comment_count>8</comment_count>
      <attachid>253561</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-21 17:29:47 -0700</bug_when>
    <thetext>Created attachment 253561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096951</commentid>
    <comment_count>9</comment_count>
      <attachid>253561</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-05-22 14:33:15 -0700</bug_when>
    <thetext>Comment on attachment 253561
Patch

Looks good now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096955</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-22 14:43:27 -0700</bug_when>
    <thetext>Committed r184796: &lt;http://trac.webkit.org/changeset/184796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097943</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-05-28 13:47:37 -0700</bug_when>
    <thetext>This might have been 2% PLT regression. Can we roll out to confirm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097971</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-28 15:13:10 -0700</bug_when>
    <thetext>But I measured it :(

Go ahead, but make sure you also roll out http://trac.webkit.org/changeset/184832 first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098001</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 16:17:05 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 145449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098009</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-28 16:23:02 -0700</bug_when>
    <thetext>Rolled out in https://bugs.webkit.org/show_bug.cgi?id=145449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785421</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-19 02:36:22 -0700</bug_when>
    <thetext>This is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785422</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-19 02:37:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/82116941&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253480</attachid>
            <date>2015-05-20 17:53:06 -0700</date>
            <delta_ts>2015-05-20 19:16:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145234-20150520175302.patch</filename>
            <type>text/plain</type>
            <size>4473</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzY2M1ODY0OWIxMTY3
MjhiMTJhZmI0ZGJlNzdmMTA2MGRmZDMyNi4uNjdlYjUyODZlMTIwOGM4YzMwZTFiODJlYzhlMjEy
N2RjMjY2YjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBV
c2UgQ1RGb250RHJhd0dseXBocygpIGluc3RlYWQgb2YgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhB
ZHZhbmNlcygpL0NHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUyMzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVudHVhbGx5LCB3ZSB3YW50IHRv
IG1pZ3JhdGUgZW50aXJlbHkgb2ZmIG9mIHRleHQtcmVsYXRlZCBDb3JlR3JhcGhpY3MgY2FsbHMK
KyAgICAgICAgYW5kIG9udG8gQ29yZVRleHQgY2FsbHMgKGluIG9yZGVyIHRvIHJlZHVjZSBjb21w
bGV4aXR5IGFzIHdlbGwgYXMgZXZlbnR1YWxseQorICAgICAgICByZW1vdmluZyB0aGUgbmVlZCBm
b3IgRm9udFBsYXRmb3JtRGF0YSB0byBob2xkIGEgQ0dGb250UmVmKS4gVGhlcmUgaXMgYW4KKyAg
ICAgICAgZXF1aXZhbGVudCBjYWxsIHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
KSBhbmQKKyAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKCksIG5hbWVseSwg
Q1RGb250RHJhd0dseXBocygpLCB3aGljaCB3ZSBoYXZlCisgICAgICAgIGZvdW5kIGlzIGFzIHBl
cmZvcm1hbnQgYXMgaXRzIENvcmVHcmFwaGljcyBjb3VudGVycGFydHMuIFRoaXMgcGF0Y2ggc2lt
cGx5CisgICAgICAgIG1pZ3JhdGVzIHRoZXNlIHR3byBDRyBjYWxscyB0byBpdHMgQ1QgY291bnRl
cnBhcnQuCisKKyAgICAgICAgUGVyZm9ybWFuY2Ugd2FzIG1lYXN1cmVkIG9uIGEgaVBob25lIDRz
IGFzIHdlbGwgYXMgYSBNaWQgMjAxMCBNYWMgUHJvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpz
aG93R2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKToKKwogMjAxNS0wNS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIEZhaWwgdG8gbG9h
ZCBvbGQgY29udGVudCBleHRlbnNpb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IGVh
MTgzNjhkNDJiYzQ1OTM4NDIzMmFiZDhmNjJjZmZiZjViNzVmMzguLmMyZjA4MjgzMGM4MWRkZGQ1
MmJjY2Y4MjQ1NTM4OTMwMTcyYjJiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtMTkwLDgg
KzE5MCw3IEBAIHN0YXRpYyB2b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGNvbnN0IEZvbnQqIGZvbnQsIENHCiAKICAgICBjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURhdGEoKTsKICAgICBWZWN0b3I8
Q0dQb2ludCwgMjU2PiBwb3NpdGlvbnMoY291bnQpOwotICAgIGlmIChwbGF0Zm9ybURhdGEuaXND
b2xvckJpdG1hcEZvbnQoKSkKLSAgICAgICAgZmlsbFZlY3RvcldpdGhIb3Jpem9udGFsR2x5cGhQ
b3NpdGlvbnMocG9zaXRpb25zLCBjb250ZXh0LCBhZHZhbmNlcywgY291bnQpOworICAgIGZpbGxW
ZWN0b3JXaXRoSG9yaXpvbnRhbEdseXBoUG9zaXRpb25zKHBvc2l0aW9ucywgY29udGV4dCwgYWR2
YW5jZXMsIGNvdW50KTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVy
dGljYWwpIHsKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gc2F2ZWRNYXRyaXg7CiAgICAgICAg
IENHQWZmaW5lVHJhbnNmb3JtIHJvdGF0ZUxlZnRUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9y
bU1ha2UoMCwgLTEsIDEsIDAsIDAsIDApOwpAQCAtMjExLDIxICsyMTAsOSBAQCBzdGF0aWMgdm9p
ZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBG
b250KiBmb250LCBDRwogICAgICAgICAgICAgcG9zaXRpb24ueCArPSBhZHZhbmNlc1tpXS53aWR0
aDsKICAgICAgICAgICAgIHBvc2l0aW9uLnkgKz0gYWR2YW5jZXNbaV0uaGVpZ2h0OwogICAgICAg
ICB9Ci0gICAgICAgIGlmICghcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpIHsKLSAg
ICAgICAgICAgIFJlbmRlcmluZ1N0eWxlU2F2ZXIgc2F2ZXIocGxhdGZvcm1EYXRhLmN0Rm9udCgp
LCBjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucyhj
b250ZXh0LCBnbHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50KTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5
cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4
dFNldFRleHRNYXRyaXgoY29udGV4dCwgc2F2ZWRNYXRyaXgpOworICAgICAgICBDVEZvbnREcmF3
R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBj
b3VudCwgY29udGV4dCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybURhdGEu
aXNDb2xvckJpdG1hcEZvbnQoKSkgewotICAgICAgICAgICAgUmVuZGVyaW5nU3R5bGVTYXZlciBz
YXZlcihwbGF0Zm9ybURhdGEuY3RGb250KCksIGNvbnRleHQpOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCk7Ci0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQ1RGb250RHJhd0dseXBo
cyhwbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBocywgcG9zaXRpb25zLmRhdGEoKSwgY291bnQs
IGNvbnRleHQpOworICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQo
KSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7CiAgICAgfQogfQog
CkBAIC0zODEsMTQgKzM2OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgYm9vbCB1
c2VMZXR0ZXJwcmVzc0VmZmVjdCA9IHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KCpjb250ZXh0
KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gcG9pbnRBZGp1c3RlZEZvckVtb2ppKHBsYXRmb3Jt
RGF0YSwgYW5jaG9yUG9pbnQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGZsb2F0IGZvbnRT
aXplID0gcGxhdGZvcm1EYXRhLnNpemUoKTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXgg
PSB1c2VMZXR0ZXJwcmVzc0VmZmVjdCB8fCBwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQo
KSA/IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkgOiBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2Fs
ZShmb250U2l6ZSwgZm9udFNpemUpOwotI2Vsc2UKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwotICAgIGlmIChkcmF3Rm9udCAmJiAhcGxh
dGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgIG1lbWNweSgmbWF0cml4LCBb
ZHJhd0ZvbnQgbWF0cml4XSwgc2l6ZW9mKG1hdHJpeCkpOwotI2VuZGlmCiAgICAgbWF0cml4LmIg
PSAtbWF0cml4LmI7CiAgICAgbWF0cml4LmQgPSAtbWF0cml4LmQ7CiAgICAgaWYgKHBsYXRmb3Jt
RGF0YS5tX3N5bnRoZXRpY09ibGlxdWUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253494</attachid>
            <date>2015-05-20 19:16:26 -0700</date>
            <delta_ts>2015-05-21 17:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145234-20150520191622.patch</filename>
            <type>text/plain</type>
            <size>5204</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzY2M1ODY0OWIxMTY3
MjhiMTJhZmI0ZGJlNzdmMTA2MGRmZDMyNi4uNjdlYjUyODZlMTIwOGM4YzMwZTFiODJlYzhlMjEy
N2RjMjY2YjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBV
c2UgQ1RGb250RHJhd0dseXBocygpIGluc3RlYWQgb2YgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhB
ZHZhbmNlcygpL0NHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUyMzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVudHVhbGx5LCB3ZSB3YW50IHRv
IG1pZ3JhdGUgZW50aXJlbHkgb2ZmIG9mIHRleHQtcmVsYXRlZCBDb3JlR3JhcGhpY3MgY2FsbHMK
KyAgICAgICAgYW5kIG9udG8gQ29yZVRleHQgY2FsbHMgKGluIG9yZGVyIHRvIHJlZHVjZSBjb21w
bGV4aXR5IGFzIHdlbGwgYXMgZXZlbnR1YWxseQorICAgICAgICByZW1vdmluZyB0aGUgbmVlZCBm
b3IgRm9udFBsYXRmb3JtRGF0YSB0byBob2xkIGEgQ0dGb250UmVmKS4gVGhlcmUgaXMgYW4KKyAg
ICAgICAgZXF1aXZhbGVudCBjYWxsIHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
KSBhbmQKKyAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKCksIG5hbWVseSwg
Q1RGb250RHJhd0dseXBocygpLCB3aGljaCB3ZSBoYXZlCisgICAgICAgIGZvdW5kIGlzIGFzIHBl
cmZvcm1hbnQgYXMgaXRzIENvcmVHcmFwaGljcyBjb3VudGVycGFydHMuIFRoaXMgcGF0Y2ggc2lt
cGx5CisgICAgICAgIG1pZ3JhdGVzIHRoZXNlIHR3byBDRyBjYWxscyB0byBpdHMgQ1QgY291bnRl
cnBhcnQuCisKKyAgICAgICAgUGVyZm9ybWFuY2Ugd2FzIG1lYXN1cmVkIG9uIGEgaVBob25lIDRz
IGFzIHdlbGwgYXMgYSBNaWQgMjAxMCBNYWMgUHJvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpz
aG93R2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKToKKwogMjAxNS0wNS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIEZhaWwgdG8gbG9h
ZCBvbGQgY29udGVudCBleHRlbnNpb24gZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IGVh
MTgzNjhkNDJiYzQ1OTM4NDIzMmFiZDhmNjJjZmZiZjViNzVmMzguLjdjZjAwNGY3MTRlOWUxMTcx
OTQzNTZkM2I2YzJlNDU2MmE4OTc2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtMTkwLDgg
KzE5MCw3IEBAIHN0YXRpYyB2b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGNvbnN0IEZvbnQqIGZvbnQsIENHCiAKICAgICBjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURhdGEoKTsKICAgICBWZWN0b3I8
Q0dQb2ludCwgMjU2PiBwb3NpdGlvbnMoY291bnQpOwotICAgIGlmIChwbGF0Zm9ybURhdGEuaXND
b2xvckJpdG1hcEZvbnQoKSkKLSAgICAgICAgZmlsbFZlY3RvcldpdGhIb3Jpem9udGFsR2x5cGhQ
b3NpdGlvbnMocG9zaXRpb25zLCBjb250ZXh0LCBhZHZhbmNlcywgY291bnQpOworICAgIGZpbGxW
ZWN0b3JXaXRoSG9yaXpvbnRhbEdseXBoUG9zaXRpb25zKHBvc2l0aW9ucywgY29udGV4dCwgYWR2
YW5jZXMsIGNvdW50KTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVy
dGljYWwpIHsKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gc2F2ZWRNYXRyaXg7CiAgICAgICAg
IENHQWZmaW5lVHJhbnNmb3JtIHJvdGF0ZUxlZnRUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9y
bU1ha2UoMCwgLTEsIDEsIDAsIDAsIDApOwpAQCAtMjExLDIxICsyMTAsOSBAQCBzdGF0aWMgdm9p
ZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBG
b250KiBmb250LCBDRwogICAgICAgICAgICAgcG9zaXRpb24ueCArPSBhZHZhbmNlc1tpXS53aWR0
aDsKICAgICAgICAgICAgIHBvc2l0aW9uLnkgKz0gYWR2YW5jZXNbaV0uaGVpZ2h0OwogICAgICAg
ICB9Ci0gICAgICAgIGlmICghcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpIHsKLSAg
ICAgICAgICAgIFJlbmRlcmluZ1N0eWxlU2F2ZXIgc2F2ZXIocGxhdGZvcm1EYXRhLmN0Rm9udCgp
LCBjb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucyhj
b250ZXh0LCBnbHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50KTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5
cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4
dFNldFRleHRNYXRyaXgoY29udGV4dCwgc2F2ZWRNYXRyaXgpOworICAgICAgICBDVEZvbnREcmF3
R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBj
b3VudCwgY29udGV4dCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybURhdGEu
aXNDb2xvckJpdG1hcEZvbnQoKSkgewotICAgICAgICAgICAgUmVuZGVyaW5nU3R5bGVTYXZlciBz
YXZlcihwbGF0Zm9ybURhdGEuY3RGb250KCksIGNvbnRleHQpOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjb250ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCk7Ci0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcG9wCi0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQ1RGb250RHJhd0dseXBo
cyhwbGF0Zm9ybURhdGEuY3RGb250KCksIGdseXBocywgcG9zaXRpb25zLmRhdGEoKSwgY291bnQs
IGNvbnRleHQpOworICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQo
KSwgZ2x5cGhzLCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7CiAgICAgfQogfQog
CkBAIC0zODEsMTUgKzM2OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgYm9vbCB1
c2VMZXR0ZXJwcmVzc0VmZmVjdCA9IHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KCpjb250ZXh0
KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gcG9pbnRBZGp1c3RlZEZvckVtb2ppKHBsYXRmb3Jt
RGF0YSwgYW5jaG9yUG9pbnQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGZsb2F0IGZvbnRT
aXplID0gcGxhdGZvcm1EYXRhLnNpemUoKTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXgg
PSB1c2VMZXR0ZXJwcmVzc0VmZmVjdCB8fCBwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQo
KSA/IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkgOiBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2Fs
ZShmb250U2l6ZSwgZm9udFNpemUpOwotI2Vsc2UKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwotICAgIGlmIChkcmF3Rm9udCAmJiAhcGxh
dGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgIG1lbWNweSgmbWF0cml4LCBb
ZHJhd0ZvbnQgbWF0cml4XSwgc2l6ZW9mKG1hdHJpeCkpOwotI2VuZGlmCi0gICAgbWF0cml4LmIg
PSAtbWF0cml4LmI7CiAgICAgbWF0cml4LmQgPSAtbWF0cml4LmQ7CiAgICAgaWYgKHBsYXRmb3Jt
RGF0YS5tX3N5bnRoZXRpY09ibGlxdWUpIHsKICAgICAgICAgc3RhdGljIGZsb2F0IG9ibGlxdWVT
a2V3ID0gdGFuZihTWU5USEVUSUNfT0JMSVFVRV9BTkdMRSAqIHBpRmxvYXQgLyAxODApOwpAQCAt
NDAxLDE3ICszODAsMTEgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICBDR0NvbnRleHRT
ZXRUZXh0TWF0cml4KGNnQ29udGV4dCwgbWF0cml4KTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIDEpOwogICAgIENHQ29udGV4dFNldFNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQtPnNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cygpKTsKICNlbHNlCiAgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShj
Z0NvbnRleHQsIFtkcmF3Rm9udCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC0+c2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKCkpOwotICAgIGlmIChkcmF3Rm9udCkKLSAgICAgICAgQ0dDb250ZXh0
U2V0Rm9udFNpemUoY2dDb250ZXh0LCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNl
dEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLm1fc2l6ZSk7CiAjZW5kaWYKIAotCiAg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253561</attachid>
            <date>2015-05-21 17:29:47 -0700</date>
            <delta_ts>2015-05-22 14:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145234-20150521172942.patch</filename>
            <type>text/plain</type>
            <size>5782</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFhMTExNjZhNzRlM2M3
ODYwZTU0MzFhZjE1ODZiZDcxMjM1ZmUwZC4uZjUzYThmOTJhZGNmNzMyMjJlZGM2NTJhY2E0ODE4
NGU4NjNmMGJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTIxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBV
c2UgQ1RGb250RHJhd0dseXBocygpIGluc3RlYWQgb2YgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhB
ZHZhbmNlcygpL0NHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUyMzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFdmVudHVhbGx5LCB3ZSB3YW50IHRv
IG1pZ3JhdGUgZW50aXJlbHkgb2ZmIG9mIHRleHQtcmVsYXRlZCBDb3JlR3JhcGhpY3MgY2FsbHMK
KyAgICAgICAgYW5kIG9udG8gQ29yZVRleHQgY2FsbHMgKGluIG9yZGVyIHRvIHJlZHVjZSBjb21w
bGV4aXR5IGFzIHdlbGwgYXMgZXZlbnR1YWxseQorICAgICAgICByZW1vdmluZyB0aGUgbmVlZCBm
b3IgRm9udFBsYXRmb3JtRGF0YSB0byBob2xkIGEgQ0dGb250UmVmKS4gVGhlcmUgaXMgYW4KKyAg
ICAgICAgZXF1aXZhbGVudCBjYWxsIHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
KSBhbmQKKyAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc0F0UG9zaXRpb25zKCksIG5hbWVseSwg
Q1RGb250RHJhd0dseXBocygpLCB3aGljaCB3ZSBoYXZlCisgICAgICAgIGZvdW5kIGlzIGFzIHBl
cmZvcm1hbnQgYXMgaXRzIENvcmVHcmFwaGljcyBjb3VudGVycGFydHMuIFRoaXMgcGF0Y2ggc2lt
cGx5CisgICAgICAgIG1pZ3JhdGVzIHRoZXNlIHR3byBDRyBjYWxscyB0byBpdHMgQ1QgY291bnRl
cnBhcnQuCisKKyAgICAgICAgUGVyZm9ybWFuY2Ugd2FzIG1lYXN1cmVkIG9uIGEgaVBob25lIDRz
IGFzIHdlbGwgYXMgYSBNaWQgMjAxMCBNYWMgUHJvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpz
aG93R2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKToKKwogMjAxNS0wNS0yMSAgSmFrZSBOaWVsc2VuICA8amFjb2JfbmllbHNlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgcjE4NDcxOCBhbmQgcjE4NDcyNSBjYXVzZWQgZm91ciB0ZXN0
cyB0byBiZWdpbiBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggZWExODM2OGQ0MmJj
NDU5Mzg0MjMyYWJkOGY2MmNmZmJmNWI3NWYzOC4uNGZiMmExMjNkMWE1YzNjZGU4NjhhYmFhYTlj
ODYwZmQwNzQ2YjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC0xOTAsMTIgKzE5MCwxMCBA
QCBzdGF0aWMgdm9pZCBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBjb25zdCBGb250KiBmb250LCBDRwogCiAgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRhKCk7CiAgICAgVmVjdG9yPENHUG9pbnQs
IDI1Nj4gcG9zaXRpb25zKGNvdW50KTsKLSAgICBpZiAocGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRt
YXBGb250KCkpCi0gICAgICAgIGZpbGxWZWN0b3JXaXRoSG9yaXpvbnRhbEdseXBoUG9zaXRpb25z
KHBvc2l0aW9ucywgY29udGV4dCwgYWR2YW5jZXMsIGNvdW50KTsKKyAgICBmaWxsVmVjdG9yV2l0
aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvbnRleHQsIGFkdmFuY2VzLCBj
b3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsKSB7
Ci0gICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIHNhdmVkTWF0cml4OwogICAgICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSByb3RhdGVMZWZ0VHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDAs
IC0xLCAxLCAwLCAwLCAwKTsKLSAgICAgICAgc2F2ZWRNYXRyaXggPSBDR0NvbnRleHRHZXRUZXh0
TWF0cml4KGNvbnRleHQpOworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBzYXZlZE1hdHJpeCA9
IENHQ29udGV4dEdldFRleHRNYXRyaXgoY29udGV4dCk7CiAgICAgICAgIENHQWZmaW5lVHJhbnNm
b3JtIHJ1bk1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHNhdmVkTWF0cml4LCByb3Rh
dGVMZWZ0VHJhbnNmb3JtKTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0
LCBydW5NYXRyaXgpOwogCkBAIC0yMTEsMjEgKzIwOSwxMCBAQCBzdGF0aWMgdm9pZCBzaG93R2x5
cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBDRwogICAgICAgICAgICAgcG9zaXRpb24ueCArPSBhZHZhbmNlc1tpXS53aWR0aDsKICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgKz0gYWR2YW5jZXNbaV0uaGVpZ2h0OwogICAgICAgICB9Ci0gICAg
ICAgIGlmICghcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpIHsKLSAgICAgICAgICAg
IFJlbmRlcmluZ1N0eWxlU2F2ZXIgc2F2ZXIocGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBjb250ZXh0
KTsKLSAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNBdFBvc2l0aW9ucyhjb250ZXh0LCBn
bHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCBwb3Np
dGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7CisgICAgICAgIENURm9udERyYXdHbHlwaHMo
cGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBnbHlwaHMsIHBvc2l0aW9ucy5kYXRhKCksIGNvdW50LCBj
b250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBzYXZlZE1h
dHJpeCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybURhdGEuaXNDb2xvckJp
dG1hcEZvbnQoKSkgewotICAgICAgICAgICAgUmVuZGVyaW5nU3R5bGVTYXZlciBzYXZlcihwbGF0
Zm9ybURhdGEuY3RGb250KCksIGNvbnRleHQpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgotICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb250
ZXh0LCBnbHlwaHMsIGFkdmFuY2VzLCBjb3VudCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCi0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgQ1RGb250RHJhd0dseXBocyhwbGF0Zm9y
bURhdGEuY3RGb250KCksIGdseXBocywgcG9zaXRpb25zLmRhdGEoKSwgY291bnQsIGNvbnRleHQp
OworICAgICAgICBDVEZvbnREcmF3R2x5cGhzKHBsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhz
LCBwb3NpdGlvbnMuZGF0YSgpLCBjb3VudCwgY29udGV4dCk7CiAgICAgfQogfQogCkBAIC0zNzEs
MjQgKzM1OCwxMyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgIH0KICNlbmRpZgogI2Vu
ZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIE5TRm9udCogZHJhd0ZvbnQgPSBbcGxhdGZv
cm1EYXRhLm5zRm9udCgpIHByaW50ZXJGb250XTsKLSNlbmRpZgogICAgIAogICAgIENHQ29udGV4
dFNldEZvbnQoY2dDb250ZXh0LCBwbGF0Zm9ybURhdGEuY2dGb250KCkpOwogCiAgICAgYm9vbCB1
c2VMZXR0ZXJwcmVzc0VmZmVjdCA9IHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KCpjb250ZXh0
KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gcG9pbnRBZGp1c3RlZEZvckVtb2ppKHBsYXRmb3Jt
RGF0YSwgYW5jaG9yUG9pbnQpOwogCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIGZsb2F0IGZvbnRT
aXplID0gcGxhdGZvcm1EYXRhLnNpemUoKTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRyaXgg
PSB1c2VMZXR0ZXJwcmVzc0VmZmVjdCB8fCBwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQo
KSA/IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkgOiBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2Fs
ZShmb250U2l6ZSwgZm9udFNpemUpOwotI2Vsc2UKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwotICAgIGlmIChkcmF3Rm9udCAmJiAhcGxh
dGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgIG1lbWNweSgmbWF0cml4LCBb
ZHJhd0ZvbnQgbWF0cml4XSwgc2l6ZW9mKG1hdHJpeCkpOwotI2VuZGlmCisgICAgQ0dBZmZpbmVU
cmFuc2Zvcm0gbWF0cml4ID0gQ1RGb250R2V0TWF0cml4KHBsYXRmb3JtRGF0YS5jdEZvbnQoKSk7
CiAgICAgbWF0cml4LmIgPSAtbWF0cml4LmI7CiAgICAgbWF0cml4LmQgPSAtbWF0cml4LmQ7CiAg
ICAgaWYgKHBsYXRmb3JtRGF0YS5tX3N5bnRoZXRpY09ibGlxdWUpIHsKQEAgLTQwMSwxNyArMzc3
LDExIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJp
eChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0
U2V0Rm9udFNpemUoY2dDb250ZXh0LCAxKTsKICAgICBDR0NvbnRleHRTZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CiAjZWxzZQotICAgIHNldENHRm9udFJlbmRlcmluZ01vZGUoY2dDb250ZXh0LCBb
ZHJhd0ZvbnQgcmVuZGVyaW5nTW9kZV0sIGNvbnRleHQtPnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cygpKTsKLSAgICBpZiAoZHJhd0ZvbnQpCi0gICAgICAgIENHQ29udGV4dFNldEZvbnRTaXpl
KGNnQ29udGV4dCwgMSk7Ci0gICAgZWxzZQotICAgICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5tX3NpemUpOworICAgIHNldENHRm9udFJlbmRlcmluZ01v
ZGUoY2dDb250ZXh0LCBbW3BsYXRmb3JtRGF0YS5uc0ZvbnQoKSBwcmludGVyRm9udF0gcmVuZGVy
aW5nTW9kZV0sIGNvbnRleHQtPnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpKTsKICNlbmRp
ZgogCi0KICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7
CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Cg==
</data>
<flag name="review"
          id="278478"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>