<?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>56441</bug_id>
          
          <creation_ts>2011-03-15 18:48:14 -0700</creation_ts>
          <short_desc>Render fonts using skia when requested by platform context.</short_desc>
          <delta_ts>2011-03-30 20:35:36 -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>Printing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Chris Guillory">ctguil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>brettw</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>reed</cc>
    
    <cc>scr</cc>
    
    <cc>vandebo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>368129</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-15 18:48:14 -0700</bug_when>
    <thetext>To support print preview in Chrome we need to render fonts using skia&apos;s text drawing APIs instead of using the native platform text drawing APIs.

A previous change in Chromium enables this change:
http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=77924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368295</commentid>
    <comment_count>1</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-03-16 04:46:24 -0700</bug_when>
    <thetext>What else needs to be done for this, outside of ENABLE(SKIA_TEXT) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368305</commentid>
    <comment_count>2</comment_count>
      <attachid>85923</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-16 05:21:09 -0700</bug_when>
    <thetext>Created attachment 85923
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368308</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-16 05:28:58 -0700</bug_when>
    <thetext>Attachment 85923 did not build on chromium:
Build output: http://queues.webkit.org/results/8188135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371907</commentid>
    <comment_count>4</comment_count>
      <attachid>86557</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-22 19:01:19 -0700</bug_when>
    <thetext>Created attachment 86557
Proposed patch.

Linux build should succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371910</commentid>
    <comment_count>5</comment_count>
      <attachid>86559</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-22 19:08:42 -0700</bug_when>
    <thetext>Created attachment 86559
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374715</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-28 13:17:22 -0700</bug_when>
    <thetext>Brett can you have a look. The eventual goal is to always use skia on windows for drawing text but that will take some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376459</commentid>
    <comment_count>7</comment_count>
      <attachid>86559</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2011-03-30 10:38:48 -0700</bug_when>
    <thetext>Comment on attachment 86559
Proposed patch.

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

LGTM

&gt; Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:266
&gt; +    // Check if native font rendering is allowed.

This comment seems redundant. I would just delete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376560</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-30 11:59:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 86559 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86559&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:266
&gt; &gt; +    // Check if native font rendering is allowed.
&gt; 
&gt; This comment seems redundant. I would just delete it.
Removed. I&apos;ll upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376574</commentid>
    <comment_count>9</comment_count>
      <attachid>87594</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-03-30 12:15:14 -0700</bug_when>
    <thetext>Created attachment 87594
Patch.

Updated with comments from Brett. Also I&apos;ve included SKTypeface_win.h to address a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376696</commentid>
    <comment_count>10</comment_count>
      <attachid>87594</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-30 14:48:37 -0700</bug_when>
    <thetext>Comment on attachment 87594
Patch.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376855</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 18:50:58 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 87594:

fast/loader/recursive-before-unload-crash.html bug 50880 (authors: beidson@apple.com and eric@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376857</commentid>
    <comment_count>12</comment_count>
      <attachid>87594</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 18:53:35 -0700</bug_when>
    <thetext>Comment on attachment 87594
Patch.

Clearing flags on attachment: 87594

Committed r82532: &lt;http://trac.webkit.org/changeset/82532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376858</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-30 18:53:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376903</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 20:35:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82532 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85923</attachid>
            <date>2011-03-16 05:21:09 -0700</date>
            <delta_ts>2011-03-22 19:01:19 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>7794</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMjM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTYgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXIgZm9udHMgdXNpbmcgc2tpYSB3aGVu
IHJlcXVlc3RlZCBieSBwbGF0Zm9ybSBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NDEKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisKIDIwMTEtMDMtMTYgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA4
MTE2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMCw2ICs2MzAsMTEgQEAKICNlbmRp
ZgogfQogCitib29sIFBsYXRmb3JtQ29udGV4dFNraWE6OmlzTmF0aXZlRm9udFJlbmRlcmluZ0Fs
bG93ZWQoKQoreworICAgIHJldHVybiBtX2NhbnZhcy0+Z2V0VG9wUGxhdGZvcm1EZXZpY2UoKS5J
c05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCk7Cit9CisKIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6Z2V0SW1hZ2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUq
IGRzdFNpemUpIGNvbnN0CiB7CiAgICAgKnNyY1NpemUgPSBtX2ltYWdlUmVzYW1wbGluZ0hpbnRT
cmNTaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDgxMTY2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAKICAgICAvLyBwb3NzaWJsZSBx
dWFsaXR5LgogICAgIGJvb2wgaXNQcmludGluZygpOwogCisgICAgLy8gUmV0dXJucyBpZiB0aGUg
Y29udGV4dCBhbGxvd3MgcmVuZGVyaW5nIG9mIGZvbnRzIHVzaW5nIG5hdGl2ZSBwbGF0Zm9ybQor
ICAgIC8vIEFQSXMuIElmIGZhbHNlIGlzIHJldHVybmVkIGZvbnQgcmVuZGVyaW5nIGlzIHBlcmZv
cm1lZCB1c2luZyB0aGUgc2tpYQorICAgIC8vIHRleHQgZHJhd2luZyBBUElzLgorICAgIGJvb2wg
aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpOworCiAgICAgdm9pZCBnZXRJbWFnZVJlc2Ft
cGxpbmdIaW50KEludFNpemUqIHNyY1NpemUsIEZsb2F0U2l6ZSogZHN0U2l6ZSkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRJbWFnZVJlc2FtcGxpbmdIaW50KGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSk7CiAgICAgdm9pZCBjbGVhckltYWdlUmVzYW1wbGluZ0hp
bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiA4MTE2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwxMCArNDQsOCBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShTS0lBX1RFWFQpCiAvLyBGSVhNRTogYSBmdXR1
cmUgcm9sZSBvZiBza2lhIHdpbGwgaGF2ZSB0aGlzIGluIGEgcHJvcGVyIGhlYWRlcgogZXh0ZXJu
IFNrVHlwZWZhY2UqIFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChjb25zdCBMT0dGT05UJik7
Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNjUsNiArMjYzLDEwIEBACiAg
ICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXREcmF3TG9vcGVyKCkgJiYgKCF3
aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICAvLyBDaGVjayBpZiBuYXRpdmUgZm9udCByZW5kZXJpbmcgaXMgYWxsb3dl
ZC4KKyAgICBpZiAoIWNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5pc05hdGl2ZUZvbnRSZW5k
ZXJpbmdBbGxvd2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNzIsNyArMjc0LDcgQEAKIC8vIHBhdHRlcm4gbWF5IGJlIE5VTEwsIGluIHdo
aWNoIGNhc2UgYSBzb2xpZCBjb2xvdXIgaXMgdXNlZC4KIHN0YXRpYyBib29sIHNraWFEcmF3VGV4
dChIRk9OVCBoZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICBIREMgZGMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgU2tDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2tQb2ludCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2tQYWludCogcGFpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCog
Z2x5cGhzLApAQCAtMjgwLDQ3ICsyODIsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHT0ZGU0VUKiBvZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1H
bHlwaHMpCiB7Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkKLSAgICBTa0FTU0VSVChzaXplb2YoV09S
RCkgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IHBsYXRmb3Jt
Q29udGV4dC0+Y2FudmFzKCk7CisgICAgaWYgKCFwbGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9u
dFJlbmRlcmluZ0FsbG93ZWQoKSkgeworICAgICAgICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CiAKLSAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciA2NCBnbHlwaHMg
b24gdGhlIHN0YWNrLiBJZiBudW1HbHlwaHMgaXMgbGFyZ2VyLCB0aGUgYXJyYXkKLSAgICAvLyB3
aWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGl0IHNwYWNlIGZvciBudW1HbHlwaCBnbHlwaHMuCi0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OwotICAgIFNrQXV0b1NU
QXJyYXk8a0xvY2FsR2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2UobnVtR2x5cGhzKTsKLSAg
ICBTa1BvaW50KiBwb3MgPSBwb3NTdG9yYWdlLmdldCgpOwotICAgIFNrU2NhbGFyIHggPSBwb2lu
dC5mWDsKLSAgICBTa1NjYWxhciB5ID0gcG9pbnQuZlk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1HbHlwaHM7IGkrKykgewotICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9m
ZnNldHNbaV0uZHUgOiAwKSwKLSAgICAgICAgICAgICAgICAgICB5ICsgKG9mZnNldHMgPyBvZmZz
ZXRzW2ldLmR2IDogMCkpOwotICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNbaV0p
OwotICAgIH0KLSAgICBjYW52YXMtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhzICogc2l6
ZW9mKHVpbnQxNl90KSwgcG9zLCAqcGFpbnQpOwotI2Vsc2UKLSAgICBmbG9hdCB4ID0gcG9pbnQu
ZlgsIHkgPSBwb2ludC5mWTsKKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgNjQgZ2x5cGhz
IG9uIHRoZSBzdGFjay4gSWYgbnVtR2x5cGhzIGlzIGxhcmdlciwgdGhlIGFycmF5CisgICAgICAg
IC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBo
cy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OworICAg
ICAgICBTa0F1dG9TVEFycmF5PGtMb2NhbEdseXBoTWF4LCBTa1BvaW50PiBwb3NTdG9yYWdlKG51
bUdseXBocyk7CisgICAgICAgIFNrUG9pbnQqIHBvcyA9IHBvc1N0b3JhZ2UuZ2V0KCk7CisgICAg
ICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsKKyAgICAgICAgU2tTY2FsYXIgeSA9IHBvaW50LmZZ
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAg
ICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHUgOiAwKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgeSArIChvZmZzZXRzID8gb2Zmc2V0c1tpXS5kdiA6IDApKTsKKyAg
ICAgICAgICAgIHggKz0gU2tJbnRUb1NjYWxhcihhZHZhbmNlc1tpXSk7CisgICAgICAgIH0KKyAg
ICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMsIG51bUdseXBocyAqIHNpemVvZih1aW50
MTZfdCksIHBvcywgKnBhaW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdCB4ID0gcG9p
bnQuZlgsIHkgPSBwb2ludC5mWTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5cGhz
OyBpKyspIHsKLSAgICAgICAgY29uc3QgU2tQYXRoKiBwYXRoID0gU2tpYVdpbk91dGxpbmVDYWNo
ZTo6bG9va3VwT3JDcmVhdGVQYXRoRm9yR2x5cGgoZGMsIGhmb250LCBnbHlwaHNbaV0pOwotICAg
ICAgICBpZiAoIXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IFNrUGF0
aCogcGF0aCA9IFNraWFXaW5PdXRsaW5lQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlUGF0aEZvckdseXBo
KGRjLCBoZm9udCwgZ2x5cGhzW2ldKTsKKyAgICAgICAgICAgIGlmICghcGF0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IDAuMGYsIG9m
ZnNldFkgPSAwLjBmOwotICAgICAgICBpZiAob2Zmc2V0cyAmJiAob2Zmc2V0c1tpXS5kdSAhPSAw
IHx8IG9mZnNldHNbaV0uZHYgIT0gMCkpIHsKLSAgICAgICAgICAgIG9mZnNldFggPSBvZmZzZXRz
W2ldLmR1OwotICAgICAgICAgICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7Ci0gICAgICAgIH0K
KyAgICAgICAgICAgIGZsb2F0IG9mZnNldFggPSAwLjBmLCBvZmZzZXRZID0gMC4wZjsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXRzICYmIChvZmZzZXRzW2ldLmR1IHx8IG9mZnNldHNbaV0uZHYpKSB7
CisgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IG9mZnNldHNbaV0uZHU7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgU2tQ
YXRoIG5ld1BhdGg7Ci0gICAgICAgIG5ld1BhdGguYWRkUGF0aCgqcGF0aCwgeCArIG9mZnNldFgs
IHkgKyBvZmZzZXRZKTsKLSAgICAgICAgY2FudmFzLT5kcmF3UGF0aChuZXdQYXRoLCAqcGFpbnQp
OworICAgICAgICAgICAgU2tQYXRoIG5ld1BhdGg7CisgICAgICAgICAgICBuZXdQYXRoLmFkZFBh
dGgoKnBhdGgsIHggKyBvZmZzZXRYLCB5ICsgb2Zmc2V0WSk7CisgICAgICAgICAgICBjYW52YXMt
PmRyYXdQYXRoKG5ld1BhdGgsICpwYWludCk7CiAKLSAgICAgICAgeCArPSBhZHZhbmNlc1tpXTsK
KyAgICAgICAgICAgIHggKz0gYWR2YW5jZXNbaV07CisgICAgICAgIH0KICAgICB9Ci0jZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShTS0lBX1RFWFQpCiBzdGF0aWMgdm9p
ZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9udCwgU2tQYWludCogcGFpbnQpCiB7CiAgICAg
Ly8gIEZJWE1FOgpAQCAtMzM5LDcgKzM0MSw2IEBACiAgICAgcGFpbnQtPnNldFR5cGVmYWNlKGZh
Y2UpOwogICAgIFNrU2FmZVVucmVmKGZhY2UpOwogfQotI2VuZGlmCiAKIGJvb2wgcGFpbnRTa2lh
VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgSEZPTlQg
aGZvbnQsCkBAIC0zNTksMTQgKzM2MCwxNCBAQAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxh
dGZvcm1Db250ZXh0LT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBhaW50LnNl
dEZsYWdzKFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkK
LSAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5n
KTsKLSAgICBzZXR1cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50KTsKLSNlbmRpZgorICAgIGlm
ICghcGxhdGZvcm1Db250ZXh0LT5pc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkpIHsKKyAg
ICAgICAgcGFpbnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtHbHlwaElEX1RleHRFbmNvZGlu
Zyk7CisgICAgICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQpOworICAgIH0KICAg
ICBib29sIGRpZEZpbGwgPSBmYWxzZTsKIAogICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZp
bGwpICYmIFNrQ29sb3JHZXRBKHBhaW50LmdldENvbG9yKCkpKSB7Ci0gICAgICAgIGlmICghc2tp
YURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSwgKm9yaWdpbiwg
JnBhaW50LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBsYXRmb3JtQ29u
dGV4dCwgKm9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhz
WzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBkaWRGaWxsID0gdHJ1ZTsKQEAgLTM5Myw3ICszOTQsNyBA
QAogICAgICAgICAgICAgU2tTYWZlVW5yZWYocGFpbnQuc2V0TG9vcGVyKDApKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghc2tpYURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0
LT5jYW52YXMoKSwgKm9yaWdpbiwgJnBhaW50LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dCho
Zm9udCwgZGMsIHBsYXRmb3JtQ29udGV4dCwgKm9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1H
bHlwaHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86557</attachid>
            <date>2011-03-22 19:01:19 -0700</date>
            <delta_ts>2011-03-22 19:08:42 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>7794</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxMjM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMTYgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXIgZm9udHMgdXNpbmcgc2tpYSB3aGVu
IHJlcXVlc3RlZCBieSBwbGF0Zm9ybSBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NDEKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisKIDIwMTEtMDMtMTYgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA4
MTE2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMCw2ICs2MzAsMTEgQEAKICNlbmRp
ZgogfQogCitib29sIFBsYXRmb3JtQ29udGV4dFNraWE6OmlzTmF0aXZlRm9udFJlbmRlcmluZ0Fs
bG93ZWQoKQoreworICAgIHJldHVybiBtX2NhbnZhcy0+Z2V0VG9wUGxhdGZvcm1EZXZpY2UoKS5J
c05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCk7Cit9CisKIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6Z2V0SW1hZ2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUq
IGRzdFNpemUpIGNvbnN0CiB7CiAgICAgKnNyY1NpemUgPSBtX2ltYWdlUmVzYW1wbGluZ0hpbnRT
cmNTaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDgxMTY2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTEgQEAKICAgICAvLyBwb3NzaWJsZSBx
dWFsaXR5LgogICAgIGJvb2wgaXNQcmludGluZygpOwogCisgICAgLy8gUmV0dXJucyBpZiB0aGUg
Y29udGV4dCBhbGxvd3MgcmVuZGVyaW5nIG9mIGZvbnRzIHVzaW5nIG5hdGl2ZSBwbGF0Zm9ybQor
ICAgIC8vIEFQSXMuIElmIGZhbHNlIGlzIHJldHVybmVkIGZvbnQgcmVuZGVyaW5nIGlzIHBlcmZv
cm1lZCB1c2luZyB0aGUgc2tpYQorICAgIC8vIHRleHQgZHJhd2luZyBBUElzLgorICAgIGJvb2wg
aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpOworCiAgICAgdm9pZCBnZXRJbWFnZVJlc2Ft
cGxpbmdIaW50KEludFNpemUqIHNyY1NpemUsIEZsb2F0U2l6ZSogZHN0U2l6ZSkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRJbWFnZVJlc2FtcGxpbmdIaW50KGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSk7CiAgICAgdm9pZCBjbGVhckltYWdlUmVzYW1wbGluZ0hp
bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiA4MTE2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCwxMCArNDQsOCBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShTS0lBX1RFWFQpCiAvLyBGSVhNRTogYSBmdXR1
cmUgcm9sZSBvZiBza2lhIHdpbGwgaGF2ZSB0aGlzIGluIGEgcHJvcGVyIGhlYWRlcgogZXh0ZXJu
IFNrVHlwZWZhY2UqIFNrQ3JlYXRlVHlwZWZhY2VGcm9tTE9HRk9OVChjb25zdCBMT0dGT05UJik7
Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNjUsNiArMjYzLDEwIEBACiAg
ICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXREcmF3TG9vcGVyKCkgJiYgKCF3
aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyAgICAvLyBDaGVjayBpZiBuYXRpdmUgZm9udCByZW5kZXJpbmcgaXMgYWxsb3dl
ZC4KKyAgICBpZiAoIWNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5pc05hdGl2ZUZvbnRSZW5k
ZXJpbmdBbGxvd2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNzIsNyArMjc0LDcgQEAKIC8vIHBhdHRlcm4gbWF5IGJlIE5VTEwsIGluIHdo
aWNoIGNhc2UgYSBzb2xpZCBjb2xvdXIgaXMgdXNlZC4KIHN0YXRpYyBib29sIHNraWFEcmF3VGV4
dChIRk9OVCBoZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICBIREMgZGMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgU2tDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2tQb2ludCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2tQYWludCogcGFpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCog
Z2x5cGhzLApAQCAtMjgwLDQ3ICsyODIsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHT0ZGU0VUKiBvZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1H
bHlwaHMpCiB7Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkKLSAgICBTa0FTU0VSVChzaXplb2YoV09S
RCkgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IHBsYXRmb3Jt
Q29udGV4dC0+Y2FudmFzKCk7CisgICAgaWYgKCFwbGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9u
dFJlbmRlcmluZ0FsbG93ZWQoKSkgeworICAgICAgICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0g
c2l6ZW9mKHVpbnQxNl90KSk7CiAKLSAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciA2NCBnbHlwaHMg
b24gdGhlIHN0YWNrLiBJZiBudW1HbHlwaHMgaXMgbGFyZ2VyLCB0aGUgYXJyYXkKLSAgICAvLyB3
aWxsIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGl0IHNwYWNlIGZvciBudW1HbHlwaCBnbHlwaHMuCi0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OwotICAgIFNrQXV0b1NU
QXJyYXk8a0xvY2FsR2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2UobnVtR2x5cGhzKTsKLSAg
ICBTa1BvaW50KiBwb3MgPSBwb3NTdG9yYWdlLmdldCgpOwotICAgIFNrU2NhbGFyIHggPSBwb2lu
dC5mWDsKLSAgICBTa1NjYWxhciB5ID0gcG9pbnQuZlk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1HbHlwaHM7IGkrKykgewotICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9m
ZnNldHNbaV0uZHUgOiAwKSwKLSAgICAgICAgICAgICAgICAgICB5ICsgKG9mZnNldHMgPyBvZmZz
ZXRzW2ldLmR2IDogMCkpOwotICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNbaV0p
OwotICAgIH0KLSAgICBjYW52YXMtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhzICogc2l6
ZW9mKHVpbnQxNl90KSwgcG9zLCAqcGFpbnQpOwotI2Vsc2UKLSAgICBmbG9hdCB4ID0gcG9pbnQu
ZlgsIHkgPSBwb2ludC5mWTsKKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgNjQgZ2x5cGhz
IG9uIHRoZSBzdGFjay4gSWYgbnVtR2x5cGhzIGlzIGxhcmdlciwgdGhlIGFycmF5CisgICAgICAg
IC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBo
cy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OworICAg
ICAgICBTa0F1dG9TVEFycmF5PGtMb2NhbEdseXBoTWF4LCBTa1BvaW50PiBwb3NTdG9yYWdlKG51
bUdseXBocyk7CisgICAgICAgIFNrUG9pbnQqIHBvcyA9IHBvc1N0b3JhZ2UuZ2V0KCk7CisgICAg
ICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsKKyAgICAgICAgU2tTY2FsYXIgeSA9IHBvaW50LmZZ
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAg
ICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHUgOiAwKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgeSArIChvZmZzZXRzID8gb2Zmc2V0c1tpXS5kdiA6IDApKTsKKyAg
ICAgICAgICAgIHggKz0gU2tJbnRUb1NjYWxhcihhZHZhbmNlc1tpXSk7CisgICAgICAgIH0KKyAg
ICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMsIG51bUdseXBocyAqIHNpemVvZih1aW50
MTZfdCksIHBvcywgKnBhaW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmbG9hdCB4ID0gcG9p
bnQuZlgsIHkgPSBwb2ludC5mWTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5cGhz
OyBpKyspIHsKLSAgICAgICAgY29uc3QgU2tQYXRoKiBwYXRoID0gU2tpYVdpbk91dGxpbmVDYWNo
ZTo6bG9va3VwT3JDcmVhdGVQYXRoRm9yR2x5cGgoZGMsIGhmb250LCBnbHlwaHNbaV0pOwotICAg
ICAgICBpZiAoIXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IFNrUGF0
aCogcGF0aCA9IFNraWFXaW5PdXRsaW5lQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlUGF0aEZvckdseXBo
KGRjLCBoZm9udCwgZ2x5cGhzW2ldKTsKKyAgICAgICAgICAgIGlmICghcGF0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IDAuMGYsIG9m
ZnNldFkgPSAwLjBmOwotICAgICAgICBpZiAob2Zmc2V0cyAmJiAob2Zmc2V0c1tpXS5kdSAhPSAw
IHx8IG9mZnNldHNbaV0uZHYgIT0gMCkpIHsKLSAgICAgICAgICAgIG9mZnNldFggPSBvZmZzZXRz
W2ldLmR1OwotICAgICAgICAgICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7Ci0gICAgICAgIH0K
KyAgICAgICAgICAgIGZsb2F0IG9mZnNldFggPSAwLjBmLCBvZmZzZXRZID0gMC4wZjsKKyAgICAg
ICAgICAgIGlmIChvZmZzZXRzICYmIChvZmZzZXRzW2ldLmR1IHx8IG9mZnNldHNbaV0uZHYpKSB7
CisgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IG9mZnNldHNbaV0uZHU7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgU2tQ
YXRoIG5ld1BhdGg7Ci0gICAgICAgIG5ld1BhdGguYWRkUGF0aCgqcGF0aCwgeCArIG9mZnNldFgs
IHkgKyBvZmZzZXRZKTsKLSAgICAgICAgY2FudmFzLT5kcmF3UGF0aChuZXdQYXRoLCAqcGFpbnQp
OworICAgICAgICAgICAgU2tQYXRoIG5ld1BhdGg7CisgICAgICAgICAgICBuZXdQYXRoLmFkZFBh
dGgoKnBhdGgsIHggKyBvZmZzZXRYLCB5ICsgb2Zmc2V0WSk7CisgICAgICAgICAgICBjYW52YXMt
PmRyYXdQYXRoKG5ld1BhdGgsICpwYWludCk7CiAKLSAgICAgICAgeCArPSBhZHZhbmNlc1tpXTsK
KyAgICAgICAgICAgIHggKz0gYWR2YW5jZXNbaV07CisgICAgICAgIH0KICAgICB9Ci0jZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShTS0lBX1RFWFQpCiBzdGF0aWMgdm9p
ZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9udCwgU2tQYWludCogcGFpbnQpCiB7CiAgICAg
Ly8gIEZJWE1FOgpAQCAtMzM5LDcgKzM0MSw2IEBACiAgICAgcGFpbnQtPnNldFR5cGVmYWNlKGZh
Y2UpOwogICAgIFNrU2FmZVVucmVmKGZhY2UpOwogfQotI2VuZGlmCiAKIGJvb2wgcGFpbnRTa2lh
VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgSEZPTlQg
aGZvbnQsCkBAIC0zNTksMTQgKzM2MCwxNCBAQAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxh
dGZvcm1Db250ZXh0LT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBhaW50LnNl
dEZsYWdzKFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkK
LSAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29kaW5n
KTsKLSAgICBzZXR1cFBhaW50Rm9yRm9udChoZm9udCwgJnBhaW50KTsKLSNlbmRpZgorICAgIGlm
ICghcGxhdGZvcm1Db250ZXh0LT5pc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkpIHsKKyAg
ICAgICAgcGFpbnQuc2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtHbHlwaElEX1RleHRFbmNvZGlu
Zyk7CisgICAgICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQpOworICAgIH0KICAg
ICBib29sIGRpZEZpbGwgPSBmYWxzZTsKIAogICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZp
bGwpICYmIFNrQ29sb3JHZXRBKHBhaW50LmdldENvbG9yKCkpKSB7Ci0gICAgICAgIGlmICghc2tp
YURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSwgKm9yaWdpbiwg
JnBhaW50LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBsYXRmb3JtQ29u
dGV4dCwgKm9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhz
WzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBkaWRGaWxsID0gdHJ1ZTsKQEAgLTM5Myw3ICszOTQsNyBA
QAogICAgICAgICAgICAgU2tTYWZlVW5yZWYocGFpbnQuc2V0TG9vcGVyKDApKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghc2tpYURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0
LT5jYW52YXMoKSwgKm9yaWdpbiwgJnBhaW50LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dCho
Zm9udCwgZGMsIHBsYXRmb3JtQ29udGV4dCwgKm9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1H
bHlwaHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86559</attachid>
            <date>2011-03-22 19:08:42 -0700</date>
            <delta_ts>2011-03-30 13:02:40 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>8280</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNzQzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjIgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXIgZm9udHMgdXNpbmcgc2tpYSB3aGVu
IHJlcXVlc3RlZCBieSBwbGF0Zm9ybSBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NDEKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNvbnRleHRTa2lhOjppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpza2lh
RHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBQYWludEZvckZvbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisKIDIwMTEtMDMtMTcgIE9qYW4gVmFmYWkgIDxv
amFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gODE3MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMwLDExIEBAIGJvb2wgUGxhdGZvcm1Db250ZXh0
U2tpYTo6aXNQcmludGluZygpCiAjZW5kaWYKIH0KIAorYm9vbCBQbGF0Zm9ybUNvbnRleHRTa2lh
Ojppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkKK3sKKyAgICByZXR1cm4gbV9jYW52YXMt
PmdldFRvcFBsYXRmb3JtRGV2aWNlKCkuSXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpOwor
fQorCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmdldEltYWdlUmVzYW1wbGluZ0hpbnQoSW50
U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdAogewogICAgICpzcmNTaXpl
ID0gbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5oCShyZXZpc2lvbiA4MTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcx
LDExIEBAIHB1YmxpYzoKICAgICAvLyBwb3NzaWJsZSBxdWFsaXR5LgogICAgIGJvb2wgaXNQcmlu
dGluZygpOwogCisgICAgLy8gUmV0dXJucyBpZiB0aGUgY29udGV4dCBhbGxvd3MgcmVuZGVyaW5n
IG9mIGZvbnRzIHVzaW5nIG5hdGl2ZSBwbGF0Zm9ybQorICAgIC8vIEFQSXMuIElmIGZhbHNlIGlz
IHJldHVybmVkIGZvbnQgcmVuZGVyaW5nIGlzIHBlcmZvcm1lZCB1c2luZyB0aGUgc2tpYQorICAg
IC8vIHRleHQgZHJhd2luZyBBUElzLgorICAgIGJvb2wgaXNOYXRpdmVGb250UmVuZGVyaW5nQWxs
b3dlZCgpOworCiAgICAgdm9pZCBnZXRJbWFnZVJlc2FtcGxpbmdIaW50KEludFNpemUqIHNyY1Np
emUsIEZsb2F0U2l6ZSogZHN0U2l6ZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbWFnZVJlc2FtcGxp
bmdIaW50KGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSk7
CiAgICAgdm9pZCBjbGVhckltYWdlUmVzYW1wbGluZ0hpbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShy
ZXZpc2lvbiA4MTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
U2tpYUZvbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsOCBAQAogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVO
QUJMRShTS0lBX1RFWFQpCiAvLyBGSVhNRTogYSBmdXR1cmUgcm9sZSBvZiBza2lhIHdpbGwgaGF2
ZSB0aGlzIGluIGEgcHJvcGVyIGhlYWRlcgogZXh0ZXJuIFNrVHlwZWZhY2UqIFNrQ3JlYXRlVHlw
ZWZhY2VGcm9tTE9HRk9OVChjb25zdCBMT0dGT05UJik7Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yNjUsNiArMjYzLDEwIEBAIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHRE
cmF3aW5nKEdyYXBoaWMKICAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldERy
YXdMb29wZXIoKSAmJiAoIXdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhjb250ZXh0KSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIENoZWNrIGlmIG5hdGl2ZSBmb250IHJl
bmRlcmluZyBpcyBhbGxvd2VkLgorICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI3Miw3ICsyNzQsNyBAQCBib29sIHdpbmRvd3ND
YW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljCiAvLyBwYXR0ZXJuIG1heSBiZSBOVUxMLCBpbiB3
aGljaCBjYXNlIGEgc29saWQgY29sb3VyIGlzIHVzZWQuCiBzdGF0aWMgYm9vbCBza2lhRHJhd1Rl
eHQoSEZPTlQgaGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSERDIGRjLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIFNrQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSogcGxhdGZvcm1Db250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNrUG9pbnQmIHBvaW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgIFNrUGFpbnQqIHBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywKQEAgLTI4MCw0NyArMjgyLDQ3IEBAIHN0YXRpYyBib29sIHNraWFEcmF3VGV4dChI
Rk9OVCBoZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHT0ZGU0VUKiBvZmZz
ZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMpCiB7Ci0jaWYgRU5B
QkxFKFNLSUFfVEVYVCkKLSAgICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0gc2l6ZW9mKHVpbnQx
Nl90KSk7Ci0KLSAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciA2NCBnbHlwaHMgb24gdGhlIHN0YWNr
LiBJZiBudW1HbHlwaHMgaXMgbGFyZ2VyLCB0aGUgYXJyYXkKLSAgICAvLyB3aWxsIGR5bmFtaWNh
bGx5IGFsbG9jYXRlIGl0IHNwYWNlIGZvciBudW1HbHlwaCBnbHlwaHMuCi0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OwotICAgIFNrQXV0b1NUQXJyYXk8a0xvY2Fs
R2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2UobnVtR2x5cGhzKTsKLSAgICBTa1BvaW50KiBw
b3MgPSBwb3NTdG9yYWdlLmdldCgpOwotICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsKLSAgICBT
a1NjYWxhciB5ID0gcG9pbnQuZlk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7
IGkrKykgewotICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHUg
OiAwKSwKLSAgICAgICAgICAgICAgICAgICB5ICsgKG9mZnNldHMgPyBvZmZzZXRzW2ldLmR2IDog
MCkpOwotICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNbaV0pOwotICAgIH0KLSAg
ICBjYW52YXMtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhzICogc2l6ZW9mKHVpbnQxNl90
KSwgcG9zLCAqcGFpbnQpOwotI2Vsc2UKLSAgICBmbG9hdCB4ID0gcG9pbnQuZlgsIHkgPSBwb2lu
dC5mWTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKLSAgICAg
ICAgY29uc3QgU2tQYXRoKiBwYXRoID0gU2tpYVdpbk91dGxpbmVDYWNoZTo6bG9va3VwT3JDcmVh
dGVQYXRoRm9yR2x5cGgoZGMsIGhmb250LCBnbHlwaHNbaV0pOwotICAgICAgICBpZiAoIXBhdGgp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IDAu
MGYsIG9mZnNldFkgPSAwLjBmOwotICAgICAgICBpZiAob2Zmc2V0cyAmJiAob2Zmc2V0c1tpXS5k
dSAhPSAwIHx8IG9mZnNldHNbaV0uZHYgIT0gMCkpIHsKLSAgICAgICAgICAgIG9mZnNldFggPSBv
ZmZzZXRzW2ldLmR1OwotICAgICAgICAgICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IHBsYXRmb3JtQ29udGV4dC0+Y2FudmFzKCk7CisgICAgaWYgKCFw
bGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkgeworICAgICAg
ICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CisKKyAgICAgICAg
Ly8gUmVzZXJ2ZSBzcGFjZSBmb3IgNjQgZ2x5cGhzIG9uIHRoZSBzdGFjay4gSWYgbnVtR2x5cGhz
IGlzIGxhcmdlciwgdGhlIGFycmF5CisgICAgICAgIC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2Nh
dGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OworICAgICAgICBTa0F1dG9TVEFycmF5PGtMb2NhbEds
eXBoTWF4LCBTa1BvaW50PiBwb3NTdG9yYWdlKG51bUdseXBocyk7CisgICAgICAgIFNrUG9pbnQq
IHBvcyA9IHBvc1N0b3JhZ2UuZ2V0KCk7CisgICAgICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsK
KyAgICAgICAgU2tTY2FsYXIgeSA9IHBvaW50LmZZOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0
cyA/IG9mZnNldHNbaV0uZHUgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgeSArIChvZmZz
ZXRzID8gb2Zmc2V0c1tpXS5kdiA6IDApKTsKKyAgICAgICAgICAgIHggKz0gU2tJbnRUb1NjYWxh
cihhZHZhbmNlc1tpXSk7CiAgICAgICAgIH0KKyAgICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChn
bHlwaHMsIG51bUdseXBocyAqIHNpemVvZih1aW50MTZfdCksIHBvcywgKnBhaW50KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBmbG9hdCB4ID0gcG9pbnQuZlgsIHkgPSBwb2ludC5mWTsKKworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICBj
b25zdCBTa1BhdGgqIHBhdGggPSBTa2lhV2luT3V0bGluZUNhY2hlOjpsb29rdXBPckNyZWF0ZVBh
dGhGb3JHbHlwaChkYywgaGZvbnQsIGdseXBoc1tpXSk7CisgICAgICAgICAgICBpZiAoIXBhdGgp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBmbG9hdCBvZmZz
ZXRYID0gMC4wZiwgb2Zmc2V0WSA9IDAuMGY7CisgICAgICAgICAgICBpZiAob2Zmc2V0cyAmJiAo
b2Zmc2V0c1tpXS5kdSB8fCBvZmZzZXRzW2ldLmR2KSkgeworICAgICAgICAgICAgICAgIG9mZnNl
dFggPSBvZmZzZXRzW2ldLmR1OworICAgICAgICAgICAgICAgIG9mZnNldFkgPSBvZmZzZXRzW2ld
LmR2OworICAgICAgICAgICAgfQogCi0gICAgICAgIFNrUGF0aCBuZXdQYXRoOwotICAgICAgICBu
ZXdQYXRoLmFkZFBhdGgoKnBhdGgsIHggKyBvZmZzZXRYLCB5ICsgb2Zmc2V0WSk7Ci0gICAgICAg
IGNhbnZhcy0+ZHJhd1BhdGgobmV3UGF0aCwgKnBhaW50KTsKKyAgICAgICAgICAgIFNrUGF0aCBu
ZXdQYXRoOworICAgICAgICAgICAgbmV3UGF0aC5hZGRQYXRoKCpwYXRoLCB4ICsgb2Zmc2V0WCwg
eSArIG9mZnNldFkpOworICAgICAgICAgICAgY2FudmFzLT5kcmF3UGF0aChuZXdQYXRoLCAqcGFp
bnQpOwogCi0gICAgICAgIHggKz0gYWR2YW5jZXNbaV07CisgICAgICAgICAgICB4ICs9IGFkdmFu
Y2VzW2ldOworICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LSNpZiBFTkFCTEUoU0tJQV9URVhUKQogc3RhdGljIHZvaWQgc2V0dXBQYWludEZvckZvbnQoSEZP
TlQgaGZvbnQsIFNrUGFpbnQqIHBhaW50KQogewogICAgIC8vICBGSVhNRToKQEAgLTMzOSw3ICsz
NDEsNiBAQCBzdGF0aWMgdm9pZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9uCiAgICAgcGFp
bnQtPnNldFR5cGVmYWNlKGZhY2UpOwogICAgIFNrU2FmZVVucmVmKGZhY2UpOwogfQotI2VuZGlm
CiAKIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgSEZPTlQgaGZvbnQsCkBAIC0zNTksMTQgKzM2MCwxNCBAQCBib29sIHBhaW50
U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250CiAgICAgU2tQYWludCBwYWludDsKICAgICBw
bGF0Zm9ybUNvbnRleHQtPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CiAgICAgcGFpbnQu
c2V0RmxhZ3MoU2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKLSNpZiBFTkFCTEUoU0tJQV9URVhU
KQotICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2Rp
bmcpOwotICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQpOwotI2VuZGlmCisgICAg
aWYgKCFwbGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkgewor
ICAgICAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29k
aW5nKTsKKyAgICAgICAgc2V0dXBQYWludEZvckZvbnQoaGZvbnQsICZwYWludCk7CisgICAgfQog
ICAgIGJvb2wgZGlkRmlsbCA9IGZhbHNlOwogCiAgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2Rl
RmlsbCkgJiYgU2tDb2xvckdldEEocGFpbnQuZ2V0Q29sb3IoKSkpIHsKLSAgICAgICAgaWYgKCFz
a2lhRHJhd1RleHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpLCAqb3JpZ2lu
LCAmcGFpbnQsCisgICAgICAgIGlmICghc2tpYURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1D
b250ZXh0LCAqb3JpZ2luLCAmcGFpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlw
aHNbMF0sICZhZHZhbmNlc1swXSwgJm9mZnNldHNbMF0sIG51bUdseXBocykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRpZEZpbGwgPSB0cnVlOwpAQCAtMzk4LDcgKzM5OSw3
IEBAIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICAgICAgICAg
IHBhaW50LnNldExvb3BlcigwKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghc2tpYURyYXdU
ZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSwgKm9yaWdpbiwgJnBhaW50
LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBsYXRmb3JtQ29udGV4dCwg
Km9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAm
YWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87594</attachid>
            <date>2011-03-30 12:15:14 -0700</date>
            <delta_ts>2011-03-30 18:53:35 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>8394</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjIgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXIgZm9udHMgdXNpbmcgc2tpYSB3aGVu
IHJlcXVlc3RlZCBieSBwbGF0Zm9ybSBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY0NDEKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUNvbnRleHRTa2lhOjppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpza2lh
RHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBQYWludEZvckZvbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisKIDIwMTEtMDMtMzAgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IEZsZWl6YWNoLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA4MjQ2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw2ICs2MTgsMTEgQEAgYm9vbCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjppc1ByaW50aW5nKCkKICNlbmRpZgogfQogCitib29sIFBsYXRmb3Jt
Q29udGV4dFNraWE6OmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKQoreworICAgIHJldHVy
biBtX2NhbnZhcy0+Z2V0VG9wUGxhdGZvcm1EZXZpY2UoKS5Jc05hdGl2ZUZvbnRSZW5kZXJpbmdB
bGxvd2VkKCk7Cit9CisKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0SW1hZ2VSZXNhbXBs
aW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUqIGRzdFNpemUpIGNvbnN0CiB7CiAg
ICAgKnNyY1NpemUgPSBtX2ltYWdlUmVzYW1wbGluZ0hpbnRTcmNTaXplOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDgyNDYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3MSw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgIC8vIHBvc3NpYmxlIHF1YWxpdHkuCiAgICAg
Ym9vbCBpc1ByaW50aW5nKCk7CiAKKyAgICAvLyBSZXR1cm5zIGlmIHRoZSBjb250ZXh0IGFsbG93
cyByZW5kZXJpbmcgb2YgZm9udHMgdXNpbmcgbmF0aXZlIHBsYXRmb3JtCisgICAgLy8gQVBJcy4g
SWYgZmFsc2UgaXMgcmV0dXJuZWQgZm9udCByZW5kZXJpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIHRo
ZSBza2lhCisgICAgLy8gdGV4dCBkcmF3aW5nIEFQSXMuCisgICAgYm9vbCBpc05hdGl2ZUZvbnRS
ZW5kZXJpbmdBbGxvd2VkKCk7CisKICAgICB2b2lkIGdldEltYWdlUmVzYW1wbGluZ0hpbnQoSW50
U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdDsKICAgICB2b2lkIHNldElt
YWdlUmVzYW1wbGluZ0hpbnQoY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBkc3RTaXplKTsKICAgICB2b2lkIGNsZWFySW1hZ2VSZXNhbXBsaW5nSGludCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9u
dFdpbi5jcHAJKHJldmlzaW9uIDgyNDYwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE2ICszOSwx
MSBAQAogI2luY2x1ZGUgIlNrUGFpbnQuaCIKICNpbmNsdWRlICJTa1NoYWRlci5oIgogI2luY2x1
ZGUgIlNrVGVtcGxhdGVzLmgiCi0jaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgorI2luY2x1ZGUgIlNr
VHlwZWZhY2Vfd2luLmgiCiAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFCTEUoU0tJQV9URVhUKQotLy8gRklYTUU6IGEgZnV0
dXJlIHJvbGUgb2Ygc2tpYSB3aWxsIGhhdmUgdGhpcyBpbiBhIHByb3BlciBoZWFkZXIKLWV4dGVy
biBTa1R5cGVmYWNlKiBTa0NyZWF0ZVR5cGVmYWNlRnJvbUxPR0ZPTlQoY29uc3QgTE9HRk9OVCYp
OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENhY2hlZE91dGxpbmVL
ZXkgewpAQCAtMjY1LDYgKzI2MCw5IEBAIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5n
KEdyYXBoaWMKICAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldERyYXdMb29w
ZXIoKSAmJiAoIXdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhjb250ZXh0KSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI3Miw3ICsyNzAsNyBAQCBib29sIHdpbmRvd3ND
YW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljCiAvLyBwYXR0ZXJuIG1heSBiZSBOVUxMLCBpbiB3
aGljaCBjYXNlIGEgc29saWQgY29sb3VyIGlzIHVzZWQuCiBzdGF0aWMgYm9vbCBza2lhRHJhd1Rl
eHQoSEZPTlQgaGZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSERDIGRjLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIFNrQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSogcGxhdGZvcm1Db250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNrUG9pbnQmIHBvaW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgIFNrUGFpbnQqIHBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywKQEAgLTI4MCw0NyArMjc4LDQ3IEBAIHN0YXRpYyBib29sIHNraWFEcmF3VGV4dChI
Rk9OVCBoZm9udCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHT0ZGU0VUKiBvZmZz
ZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMpCiB7Ci0jaWYgRU5B
QkxFKFNLSUFfVEVYVCkKLSAgICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0gc2l6ZW9mKHVpbnQx
Nl90KSk7Ci0KLSAgICAvLyBSZXNlcnZlIHNwYWNlIGZvciA2NCBnbHlwaHMgb24gdGhlIHN0YWNr
LiBJZiBudW1HbHlwaHMgaXMgbGFyZ2VyLCB0aGUgYXJyYXkKLSAgICAvLyB3aWxsIGR5bmFtaWNh
bGx5IGFsbG9jYXRlIGl0IHNwYWNlIGZvciBudW1HbHlwaCBnbHlwaHMuCi0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OwotICAgIFNrQXV0b1NUQXJyYXk8a0xvY2Fs
R2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2UobnVtR2x5cGhzKTsKLSAgICBTa1BvaW50KiBw
b3MgPSBwb3NTdG9yYWdlLmdldCgpOwotICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsKLSAgICBT
a1NjYWxhciB5ID0gcG9pbnQuZlk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7
IGkrKykgewotICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHUg
OiAwKSwKLSAgICAgICAgICAgICAgICAgICB5ICsgKG9mZnNldHMgPyBvZmZzZXRzW2ldLmR2IDog
MCkpOwotICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNbaV0pOwotICAgIH0KLSAg
ICBjYW52YXMtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhzICogc2l6ZW9mKHVpbnQxNl90
KSwgcG9zLCAqcGFpbnQpOwotI2Vsc2UKLSAgICBmbG9hdCB4ID0gcG9pbnQuZlgsIHkgPSBwb2lu
dC5mWTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpKyspIHsKLSAgICAg
ICAgY29uc3QgU2tQYXRoKiBwYXRoID0gU2tpYVdpbk91dGxpbmVDYWNoZTo6bG9va3VwT3JDcmVh
dGVQYXRoRm9yR2x5cGgoZGMsIGhmb250LCBnbHlwaHNbaV0pOwotICAgICAgICBpZiAoIXBhdGgp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgZmxvYXQgb2Zmc2V0WCA9IDAu
MGYsIG9mZnNldFkgPSAwLjBmOwotICAgICAgICBpZiAob2Zmc2V0cyAmJiAob2Zmc2V0c1tpXS5k
dSAhPSAwIHx8IG9mZnNldHNbaV0uZHYgIT0gMCkpIHsKLSAgICAgICAgICAgIG9mZnNldFggPSBv
ZmZzZXRzW2ldLmR1OwotICAgICAgICAgICAgb2Zmc2V0WSA9IG9mZnNldHNbaV0uZHY7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IHBsYXRmb3JtQ29udGV4dC0+Y2FudmFzKCk7CisgICAgaWYgKCFw
bGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkgeworICAgICAg
ICBTa0FTU0VSVChzaXplb2YoV09SRCkgPT0gc2l6ZW9mKHVpbnQxNl90KSk7CisKKyAgICAgICAg
Ly8gUmVzZXJ2ZSBzcGFjZSBmb3IgNjQgZ2x5cGhzIG9uIHRoZSBzdGFjay4gSWYgbnVtR2x5cGhz
IGlzIGxhcmdlciwgdGhlIGFycmF5CisgICAgICAgIC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2Nh
dGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4KKyAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBrTG9jYWxHbHlwaE1heCA9IDY0OworICAgICAgICBTa0F1dG9TVEFycmF5PGtMb2NhbEds
eXBoTWF4LCBTa1BvaW50PiBwb3NTdG9yYWdlKG51bUdseXBocyk7CisgICAgICAgIFNrUG9pbnQq
IHBvcyA9IHBvc1N0b3JhZ2UuZ2V0KCk7CisgICAgICAgIFNrU2NhbGFyIHggPSBwb2ludC5mWDsK
KyAgICAgICAgU2tTY2FsYXIgeSA9IHBvaW50LmZZOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICBwb3NbaV0uc2V0KHggKyAob2Zmc2V0
cyA/IG9mZnNldHNbaV0uZHUgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgeSArIChvZmZz
ZXRzID8gb2Zmc2V0c1tpXS5kdiA6IDApKTsKKyAgICAgICAgICAgIHggKz0gU2tJbnRUb1NjYWxh
cihhZHZhbmNlc1tpXSk7CiAgICAgICAgIH0KKyAgICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChn
bHlwaHMsIG51bUdseXBocyAqIHNpemVvZih1aW50MTZfdCksIHBvcywgKnBhaW50KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBmbG9hdCB4ID0gcG9pbnQuZlgsIHkgPSBwb2ludC5mWTsKKworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICBj
b25zdCBTa1BhdGgqIHBhdGggPSBTa2lhV2luT3V0bGluZUNhY2hlOjpsb29rdXBPckNyZWF0ZVBh
dGhGb3JHbHlwaChkYywgaGZvbnQsIGdseXBoc1tpXSk7CisgICAgICAgICAgICBpZiAoIXBhdGgp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBmbG9hdCBvZmZz
ZXRYID0gMC4wZiwgb2Zmc2V0WSA9IDAuMGY7CisgICAgICAgICAgICBpZiAob2Zmc2V0cyAmJiAo
b2Zmc2V0c1tpXS5kdSB8fCBvZmZzZXRzW2ldLmR2KSkgeworICAgICAgICAgICAgICAgIG9mZnNl
dFggPSBvZmZzZXRzW2ldLmR1OworICAgICAgICAgICAgICAgIG9mZnNldFkgPSBvZmZzZXRzW2ld
LmR2OworICAgICAgICAgICAgfQogCi0gICAgICAgIFNrUGF0aCBuZXdQYXRoOwotICAgICAgICBu
ZXdQYXRoLmFkZFBhdGgoKnBhdGgsIHggKyBvZmZzZXRYLCB5ICsgb2Zmc2V0WSk7Ci0gICAgICAg
IGNhbnZhcy0+ZHJhd1BhdGgobmV3UGF0aCwgKnBhaW50KTsKKyAgICAgICAgICAgIFNrUGF0aCBu
ZXdQYXRoOworICAgICAgICAgICAgbmV3UGF0aC5hZGRQYXRoKCpwYXRoLCB4ICsgb2Zmc2V0WCwg
eSArIG9mZnNldFkpOworICAgICAgICAgICAgY2FudmFzLT5kcmF3UGF0aChuZXdQYXRoLCAqcGFp
bnQpOwogCi0gICAgICAgIHggKz0gYWR2YW5jZXNbaV07CisgICAgICAgICAgICB4ICs9IGFkdmFu
Y2VzW2ldOworICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LSNpZiBFTkFCTEUoU0tJQV9URVhUKQogc3RhdGljIHZvaWQgc2V0dXBQYWludEZvckZvbnQoSEZP
TlQgaGZvbnQsIFNrUGFpbnQqIHBhaW50KQogewogICAgIC8vICBGSVhNRToKQEAgLTMzOSw3ICsz
MzcsNiBAQCBzdGF0aWMgdm9pZCBzZXR1cFBhaW50Rm9yRm9udChIRk9OVCBoZm9uCiAgICAgcGFp
bnQtPnNldFR5cGVmYWNlKGZhY2UpOwogICAgIFNrU2FmZVVucmVmKGZhY2UpOwogfQotI2VuZGlm
CiAKIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgSEZPTlQgaGZvbnQsCkBAIC0zNTksMTQgKzM1NiwxNCBAQCBib29sIHBhaW50
U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250CiAgICAgU2tQYWludCBwYWludDsKICAgICBw
bGF0Zm9ybUNvbnRleHQtPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CiAgICAgcGFpbnQu
c2V0RmxhZ3MoU2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKLSNpZiBFTkFCTEUoU0tJQV9URVhU
KQotICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2Rp
bmcpOwotICAgIHNldHVwUGFpbnRGb3JGb250KGhmb250LCAmcGFpbnQpOwotI2VuZGlmCisgICAg
aWYgKCFwbGF0Zm9ybUNvbnRleHQtPmlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKSkgewor
ICAgICAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6a0dseXBoSURfVGV4dEVuY29k
aW5nKTsKKyAgICAgICAgc2V0dXBQYWludEZvckZvbnQoaGZvbnQsICZwYWludCk7CisgICAgfQog
ICAgIGJvb2wgZGlkRmlsbCA9IGZhbHNlOwogCiAgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2Rl
RmlsbCkgJiYgU2tDb2xvckdldEEocGFpbnQuZ2V0Q29sb3IoKSkpIHsKLSAgICAgICAgaWYgKCFz
a2lhRHJhd1RleHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpLCAqb3JpZ2lu
LCAmcGFpbnQsCisgICAgICAgIGlmICghc2tpYURyYXdUZXh0KGhmb250LCBkYywgcGxhdGZvcm1D
b250ZXh0LCAqb3JpZ2luLCAmcGFpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbHlw
aHNbMF0sICZhZHZhbmNlc1swXSwgJm9mZnNldHNbMF0sIG51bUdseXBocykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRpZEZpbGwgPSB0cnVlOwpAQCAtMzk4LDcgKzM5NSw3
IEBAIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICAgICAgICAg
IHBhaW50LnNldExvb3BlcigwKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghc2tpYURyYXdU
ZXh0KGhmb250LCBkYywgcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSwgKm9yaWdpbiwgJnBhaW50
LAorICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBsYXRmb3JtQ29udGV4dCwg
Km9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAm
YWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>