<?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>7259</bug_id>
          
          <creation_ts>2006-02-14 14:15:58 -0800</creation_ts>
          <short_desc>Pages in bugzilla scroll slowly when obsolete attachments are present</short_desc>
          <delta_ts>2006-07-16 21:26:25 -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>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>32527</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-14 14:15:58 -0800</bug_when>
    <thetext>opacity basically has two major performance problems.

The first problem can be traced to mustExamineRenderer in RenderLayer.cpp, which basically gives up if you&apos;re an inlineFlow, meaning even when inline flows are totally off-screen, we still begin/end transparency layers for them (and try to paint them).

The second problem is that there&apos;s no clip set when we begin/end transparency layers, and so they&apos;re always enormous.  We need to try to set up a clip to limit the size.

I think a good way to fix mustExamineRenderer is to completely eliminate it and to also eliminate layer bounds.  We should replace the concept of layer bounds with an actual &quot;bounding box&quot; IntRect that should be specifically used for hit testing and for painting of the layer.  Then places that really cared about the use of x/w/width/height of the render object could use that instead of x/y/width/height vals in the layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32529</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-14 14:22:35 -0800</bug_when>
    <thetext>To solve the second problem, we can use this boundingBox concept but also have a function to get the boundingBox of a layer and all its child layers.  Then when starting and ending a transparency layer we can set up a clip that is that bounding box (which I believe will reduce the size of the offscreen buffer created by CGBeginTransparencyLayer).

Fixing problem 1 will make scrolling performance good again on Bugzilla when the transparent layers are off screen.

Fixing problem 2 will make the scrolling performance good even when the transparent layers are on screen.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36162</commentid>
    <comment_count>2</comment_count>
      <attachid>7054</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-13 17:26:20 -0800</bug_when>
    <thetext>Created attachment 7054
Patch to address problem #1.

This patch addresses the first issue and makes scrolling zippy again when no transparency layers are on-screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36173</commentid>
    <comment_count>3</comment_count>
      <attachid>7055</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-13 19:53:36 -0800</bug_when>
    <thetext>Created attachment 7055
Complete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36210</commentid>
    <comment_count>4</comment_count>
      <attachid>7055</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-14 02:09:04 -0800</bug_when>
    <thetext>Comment on attachment 7055
Complete patch.

r=me, but I have some style comments:

+    // Always examine the canvas and the root.
+    // FIXME: We need to 

Is that the comment you meant to write?


+IntRect RenderLayer::absoluteBoundingBox() const

This function is tricky, it might be easier to read if you broke out the inline and non-inline cases.

+        result.setX(m_x + result.x());
+        result.setY(m_y + result.y());

I think this would read better using IntRect::move


+    return IntRect(absX + result.x() - m_x,
+                   absY + result.y() - m_y,
+                   result.width(),
+                   result.height());

another case for using move() IMO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36211</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-14 03:00:22 -0800</bug_when>
    <thetext>Fixed.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50124</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-07-16 21:26:25 -0700</bug_when>
    <thetext>Would be great to see this in a software update... :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7054</attachid>
            <date>2006-03-13 17:26:20 -0800</date>
            <delta_ts>2006-03-13 19:53:36 -0800</delta_ts>
            <desc>Patch to address problem #1.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6142</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAxMzI1NikKKysr
IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQnJvd3NlckV4dGVuc2lvbldpbi5oIgogI2luY2x1ZGUg
IlRyYW5zZmVySm9iLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVXaW4uaCIKKyNpbmNsdWRlICJG
b250RGF0YVNldC5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9sYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuaAkocmV2aXNpb24gMTMyNDUpCisrKyByZW5kZXJp
bmcvcmVuZGVyX2xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw4ICsyMDIsOCBAQAogICAg
IFJlbmRlckxheWVyKiB0cmFuc3BhcmVudEFuY2VzdG9yKCk7CiAgICAgdm9pZCBiZWdpblRyYW5z
cGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQqKTsKICAgICAKLSAgICBSZW5kZXJMYXllciog
cm9vdCgpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlzOworICAgIGNvbnN0IFJl
bmRlckxheWVyKiByb290KCkgY29uc3QgeworICAgICAgICBjb25zdCBSZW5kZXJMYXllciogY3Vy
ciA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChjdXJyLT5wYXJlbnQoKSkgY3VyciA9IGN1cnItPnBh
cmVudCgpOwogICAgICAgICByZXR1cm4gY3VycjsKICAgICB9CkBAIC0yOTMsNyArMjkzLDEwIEBA
CiAKICAgICBib29sIGludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IEludFJlY3QmIGxheWVyQm91
bmRzLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5z
UG9pbnQoaW50IHgsIGludCB5LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBjb25zdDsKLSAg
ICAKKworICAgIC8vIFJldHVybnMgYSBib3VuZGluZyBib3ggZm9yIHRoaXMgbGF5ZXIgb25seS4K
KyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3goKSBjb25zdDsKKwogICAgIHZvaWQgdXBk
YXRlSG92ZXJBY3RpdmVTdGF0ZShSZW5kZXJPYmplY3Q6Ok5vZGVJbmZvJiBpbmZvKTsKICAgICAK
ICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50UmVjdDsg
fQpAQCAtMzA2LDcgKzMwOSw3IEBACiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhl
IG5vcm1hbCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCogcHRyLCBzaXplX3Qgc3opOwotICAgICAgICAKKwogcHJpdmF0ZToKICAgICAvLyBU
aGUgbm9ybWFsIG9wZXJhdG9yIG5ldyBpcyBkaXNhbGxvd2VkIG9uIGFsbCByZW5kZXIgb2JqZWN0
cy4KICAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHN6KSB0aHJvdygpOwpJbmRleDogcmVu
ZGVyaW5nL3JlbmRlcl9sYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9s
YXllci5jcHAJKHJldmlzaW9uIDEzMjY5KQorKysgcmVuZGVyaW5nL3JlbmRlcl9sYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJodG1sbmFtZXMuaCIK
ICNpbmNsdWRlICJyZW5kZXJfYXJlbmEuaCIKICNpbmNsdWRlICJyZW5kZXJfY2FudmFzLmgiCisj
aW5jbHVkZSAicmVuZGVyX2lubGluZS5oIgogI2luY2x1ZGUgInJlbmRlcl90aGVtZS5oIgogI2lu
Y2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGt4bWxjb3JlL1ZlY3Rvci5oPgpAQCAtMTI5MCwy
NSArMTI5MSw2OCBAQAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgbXVzdEV4YW1pbmVSZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0Rh
bWFnZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpIGNvbnN0CiB7Ci0gICAgaWYgKHJlbmRlcmVyLT5pc0NhbnZhcygpIHx8IHJlbmRlcmVy
LT5pc1Jvb3QoKSB8fCByZW5kZXJlci0+aXNJbmxpbmVGbG93KCkpCisgICAgLy8gQWx3YXlzIGV4
YW1pbmUgdGhlIGNhbnZhcyBhbmQgdGhlIHJvb3QuCisgICAgaWYgKHJlbmRlcmVyKCktPmlzQ2Fu
dmFzKCkgfHwgcmVuZGVyZXIoKS0+aXNSb290KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IAotICAgIEludFJlY3QgYmJveCA9IHJlbmRlcmVyLT5ib3JkZXJCb3goKTsKLSAgICBJbnRSZWN0
IG92ZXJmbG93UmVjdCA9IHJlbmRlcmVyLT5vdmVyZmxvd1JlY3QoZmFsc2UpOwotICAgIGlmIChi
Ym94ICE9IG92ZXJmbG93UmVjdCkKKworICAgIC8vIElmIHdlIGFyZW4ndCBhbiBpbmxpbmUgZmxv
dywgYW5kIG91ciBsYXllciBib3VuZHMgZG8gaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCwgdGhl
biB3ZSAKKyAgICAvLyBjYW4gZ28gYWhlYWQgYW5kIHJldHVybiB0cnVlLgorICAgIGlmICghcmVu
ZGVyZXIoKS0+aXNJbmxpbmVGbG93KCkgJiYgbGF5ZXJCb3VuZHMuaW50ZXJzZWN0cyhkYW1hZ2VS
ZWN0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgSW50UmVjdCBmbG9hdFJlY3QgPSByZW5k
ZXJlci0+ZmxvYXRSZWN0KCk7Ci0gICAgaWYgKGJib3ggIT0gZmxvYXRSZWN0KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgLy8gT3RoZXJ3
aXNlIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgc2luZ2xlIGxh
eWVyIGFuZCBzZWUgaWYgaXQgaW50ZXJzZWN0cworICAgIC8vIHRoZSBkYW1hZ2UgcmVjdC4KKyAg
ICByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCk7CiB9
CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IEludFJlY3Qm
IGxheWVyQm91bmRzLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBjb25zdAorSW50UmVjdCBS
ZW5kZXJMYXllcjo6YWJzb2x1dGVCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG11
c3RFeGFtaW5lUmVuZGVyZXIocmVuZGVyZXIoKSkgfHwgbGF5ZXJCb3VuZHMuaW50ZXJzZWN0cyhk
YW1hZ2VSZWN0KTsKKyAgICAvLyBUaGVyZSBhcmUgdGhyZWUgc3BlY2lhbCBjYXNlcyB3ZSBuZWVk
IHRvIGNvbnNpZGVyLgorICAgIC8vICgxKSBJbmxpbmUgRmxvd3MuICBGb3IgaW5saW5lIGZsb3dz
IHdlIHdpbGwgY3JlYXRlIGEgYm91bmRpbmcgYm94IHRoYXQgZnVsbCBlbmNvbXBhc3NlcyBhbGwg
b2YgdGhlIGxpbmVzIG9jY3VwaWVkIGJ5IHRoZQorICAgIC8vIGlubGluZS4gIEluIG90aGVyIHdv
cmRzLCBpZiBzb21lIDxzcGFuPiB3cmFwcyB0byB0aHJlZSBsaW5lcywgd2UnbGwgY3JlYXRlIGEg
Ym91bmRpbmcgYm94IHRoYXQgZnVsbHkgZW5jbG9zZXMgdGhlIHJvb3QKKyAgICAvLyBsaW5lIGJv
eGVzIG9mIGFsbCB0aHJlZSBsaW5lcyAoaW5jbHVkaW5nIG92ZXJmbG93IG9uIHRob3NlIGxpbmVz
KS4KKyAgICAvLyAoMikgTGVmdC9Ub3AgT3ZlcmZsb3cuICBUaGUgd2lkdGgvaGVpZ2h0IG9mIGxh
eWVycyBhbHJlYWR5IGluY2x1ZGVzIHJpZ2h0L2JvdHRvbSBvdmVyZmxvdy4gIEhvd2V2ZXIsIGlu
IHRoZSBjYXNlIG9mIGxlZnQvdG9wCisgICAgLy8gb3ZlcmZsb3csIHdlIGhhdmUgdG8gY3JlYXRl
IGEgYm91bmRpbmcgYm94IHRoYXQgd2lsbCBleHRlbmQgdG8gaW5jbHVkZSB0aGlzIG92ZXJmbG93
LgorICAgIC8vICgzKSBGbG9hdHMuICBXaGVuIGEgbGF5ZXIgaGFzIG92ZXJoYW5naW5nIGZsb2F0
cyB0aGF0IGl0IHBhaW50cywgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGVzZSBv
dmVyaGFuZ2luZyBmbG9hdHMKKyAgICAvLyBhcyBwYXJ0IG9mIG91ciBib3VuZGluZyBib3guICBX
ZSBkbyB0aGlzIGJlY2F1c2Ugd2UgYXJlIHRoZSByZXNwb25zaWJsZSBsYXllciBmb3IgYm90aCBo
aXQgdGVzdGluZyBhbmQgcGFpbnRpbmcgdGhvc2UKKyAgICAvLyBmbG9hdHMuCisgICAgSW50UmVj
dCByZXN1bHQ7CisgICAgaWYgKHJlbmRlcmVyKCktPmlzSW5saW5lRmxvdygpKSB7CisgICAgICAg
IC8vIEdvIGZyb20gb3VyIGZpcnN0IGxpbmUgYm94IHRvIG91ciBsYXN0IGxpbmUgYm94LgorICAg
ICAgICBSZW5kZXJJbmxpbmUqIGlubGluZUZsb3cgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbmxpbmUq
PihyZW5kZXJlcigpKTsKKyAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RCb3ggPSBpbmxpbmVG
bG93LT5maXJzdExpbmVCb3goKTsKKyAgICAgICAgaWYgKCFmaXJzdEJveCkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIGludCB0b3AgPSBmaXJzdEJveC0+cm9vdCgpLT50b3BP
dmVyZmxvdygpOworICAgICAgICBpbnQgYm90dG9tID0gaW5saW5lRmxvdy0+bGFzdExpbmVCb3go
KS0+cm9vdCgpLT5ib3R0b21PdmVyZmxvdygpOworICAgICAgICByZXN1bHQgPSBJbnRSZWN0KG1f
eCwgbV95ICsgKHRvcCAtIHJlbmRlcmVyKCktPnlQb3MoKSksIHdpZHRoKCksIGJvdHRvbSAtIHRv
cCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSW50UmVjdCBiYm94ID0gcmVuZGVyZXIoKS0+Ym9y
ZGVyQm94KCk7CisgICAgICAgIHJlc3VsdCA9IGJib3g7CisgICAgICAgIEludFJlY3Qgb3ZlcmZs
b3dSZWN0ID0gcmVuZGVyZXIoKS0+b3ZlcmZsb3dSZWN0KGZhbHNlKTsKKyAgICAgICAgaWYgKGJi
b3ggIT0gb3ZlcmZsb3dSZWN0KQorICAgICAgICAgICAgcmVzdWx0LnVuaXRlKG92ZXJmbG93UmVj
dCk7CisgICAgICAgIEludFJlY3QgZmxvYXRSZWN0ID0gcmVuZGVyZXIoKS0+ZmxvYXRSZWN0KCk7
CisgICAgICAgIGlmIChiYm94ICE9IGZsb2F0UmVjdCkKKyAgICAgICAgICAgIHJlc3VsdC51bml0
ZShmbG9hdFJlY3QpOworICAgICAgICAKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBhZGp1c3QgdGhl
IHgveSBvZiB0aGlzIHJlc3VsdCBzbyB0aGF0IGl0IGlzIGluIHRoZSBjb29yZGluYXRlIHNwYWNl
IG9mIHRoZSBsYXllci4gIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgLy8gY29tcHV0aW5nIHRoZSBk
ZWx0YSBiZXR3ZWVuIHRoZSBSZW5kZXJPYmplY3QncyB4L3kgYW5kIG91ciByZXN1bHQuCisgICAg
ICAgIHJlc3VsdC5zZXRYKG1feCArIChyZXN1bHQueCgpIC0gcmVuZGVyZXIoKS0+eFBvcygpKSk7
CisgICAgICAgIHJlc3VsdC5zZXRZKG1feSArIChyZXN1bHQueSgpIC0gKHJlbmRlcmVyKCktPnlQ
b3MoKSAtIHJlbmRlcmVyKCktPmJvcmRlclRvcEV4dHJhKCkpKSk7IC8vIHlQb3MoKSBsaWVzIHNv
IHdlIGhhdmUgdG8gYWRqdXN0IGZvciBib3JkZXJUb3BFeHRyYS4KKyAgICB9CisgICAgCisgICAg
Ly8gQ29udmVydCB0aGUgYm91bmRpbmcgYm94IHRvIGFuIGFic29sdXRlIHBvc2l0aW9uLiAgV2Ug
Y2FuIGRvIHRoaXMgZWFzaWx5IGJ5IGxvb2tpbmcgYXQgdGhlIGRlbHRhCisgICAgLy8gYmV0d2Vl
biB0aGUgYm91bmRpbmcgYm94J3MgeHBvcyBhbmQgb3VyIGxheWVyJ3MgeHBvcyBhbmQgdGhlbiBh
cHBseWluZyB0aGF0IHRvIHRoZSBhYnNvbHV0ZSBsYXllckJvdW5kcworICAgIC8vIHBhc3NlZCBp
bi4KKyAgICBpbnQgYWJzWCA9IDAsIGFic1kgPSAwOworICAgIGNvbnZlcnRUb0xheWVyQ29vcmRz
KHJvb3QoKSwgYWJzWCwgYWJzWSk7CisgICAgcmV0dXJuIEludFJlY3QoYWJzWCArIHJlc3VsdC54
KCkgLSBtX3gsCisgICAgICAgICAgICAgICAgICAgYWJzWSArIHJlc3VsdC55KCkgLSBtX3ksCisg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmhlaWdodCgpKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6Y29udGFpbnNQb2ludChpbnQg
eCwgaW50IHksIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7055</attachid>
            <date>2006-03-13 19:53:36 -0800</date>
            <delta_ts>2006-03-14 02:09:04 -0800</delta_ts>
            <desc>Complete patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9741</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAxMzI1NikKKysr
IHBsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQnJvd3NlckV4dGVuc2lvbldpbi5oIgogI2luY2x1ZGUg
IlRyYW5zZmVySm9iLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVXaW4uaCIKKyNpbmNsdWRlICJG
b250RGF0YVNldC5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9sYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuaAkocmV2aXNpb24gMTMyNDUpCisrKyByZW5kZXJp
bmcvcmVuZGVyX2xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwxMCArMjAwLDEwIEBACiAK
ICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdDsKICAgICBSZW5kZXJMYXllciogdHJhbnNw
YXJlbnRBbmNlc3RvcigpOwotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhp
Y3NDb250ZXh0Kik7CisgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCi0gICAgUmVuZGVyTGF5ZXIqIHJvb3QoKSB7
Ci0gICAgICAgIFJlbmRlckxheWVyKiBjdXJyID0gdGhpczsKKyAgICBjb25zdCBSZW5kZXJMYXll
ciogcm9vdCgpIGNvbnN0IHsKKyAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSB0aGlz
OwogICAgICAgICB3aGlsZSAoY3Vyci0+cGFyZW50KCkpIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsK
ICAgICAgICAgcmV0dXJuIGN1cnI7CiAgICAgfQpAQCAtMjkzLDcgKzI5MywxMCBAQAogCiAgICAg
Ym9vbCBpbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kcywgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BvaW50KGlu
dCB4LCBpbnQgeSwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgY29uc3Q7Ci0gICAgCisKKyAg
ICAvLyBSZXR1cm5zIGEgYm91bmRpbmcgYm94IGZvciB0aGlzIGxheWVyIG9ubHkuCisgICAgSW50
UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29uc3Q7CisKICAgICB2b2lkIHVwZGF0ZUhvdmVy
QWN0aXZlU3RhdGUoUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyYgaW5mbyk7CiAgICAgCiAgICAgSW50
UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0KQEAgLTMw
Niw3ICszMDksNyBAQAogCiAgICAgLy8gT3ZlcnJpZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwg
ZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQq
IHB0ciwgc2l6ZV90IHN6KTsKLSAgICAgICAgCisKIHByaXZhdGU6CiAgICAgLy8gVGhlIG5vcm1h
bCBvcGVyYXRvciBuZXcgaXMgZGlzYWxsb3dlZCBvbiBhbGwgcmVuZGVyIG9iamVjdHMuCiAgICAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeikgdGhyb3coKTsKSW5kZXg6IHJlbmRlcmluZy9y
ZW5kZXJfbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3Bw
CShyZXZpc2lvbiAxMzI2OSkKKysrIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiaHRtbG5hbWVzLmgiCiAjaW5jbHVk
ZSAicmVuZGVyX2FyZW5hLmgiCiAjaW5jbHVkZSAicmVuZGVyX2NhbnZhcy5oIgorI2luY2x1ZGUg
InJlbmRlcl9pbmxpbmUuaCIKICNpbmNsdWRlICJyZW5kZXJfdGhlbWUuaCIKICNpbmNsdWRlIDxh
c3NlcnQuaD4KICNpbmNsdWRlIDxreG1sY29yZS9WZWN0b3IuaD4KQEAgLTMzMCwxNyArMzMxLDM5
IEBACiAgICAgcmV0dXJuIGN1cnI7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogcCkKK3N0YXRpYyBJbnRSZWN0IHRyYW5zcGFy
ZW5jeUNsaXBCb3goUmVuZGVyTGF5ZXIqIGwpCiB7Ci0gICAgaWYgKGlzVHJhbnNwYXJlbnQoKSAm
JiBtX3VzZWRUcmFuc3BhcmVuY3kpCisgICAgLy8gRklYTUU6IEFsdGhvdWdoIHRoaXMgY29tcGxl
dGVseSBpZ25vcmVzIGNsaXBwaW5nLCB3ZSB1bHRpbWF0ZWx5IGludGVyc2VjdCB3aXRoIHRoZQor
ICAgIC8vIHBhaW50RGlydHlSZWN0LCBhbmQgdGhhdCBzaG91bGQgY3V0IGRvd24gb24gdGhlIGFt
b3VudCB3ZSBoYXZlIHRvIHBhaW50LiAgU3RpbGwgaXQKKyAgICAvLyB3b3VsZCBiZSBiZXR0ZXIg
dG8gcmVzcGVjdCBjbGlwcy4KKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gbC0+YWJzb2x1dGVCb3Vu
ZGluZ0JveCgpOworICAgIAorICAgIC8vIE5vdGU6IHdlIGRvbid0IGhhdmUgdG8gd2FsayB6LW9y
ZGVyIGxpc3RzIHNpbmNlIHRyYW5zcGFyZW50IGVsZW1lbnRzIGFsd2F5cyBlc3RhYmxpc2gKKyAg
ICAvLyBhIHN0YWNraW5nIGNvbnRleHQuICBUaGlzIG1lYW5zIHdlIGNhbiBqdXN0IHdhbGsgdGhl
IGxheWVyIHRyZWUgZGlyZWN0bHkuIAorICAgIGZvciAoUmVuZGVyTGF5ZXIqIGN1cnIgPSBsLT5m
aXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
IC8vIFRyYW5zcGFyZW50IGNoaWxkcmVuIHBhaW50IGluIGEgZGlmZmVyZW50IHRyYW5zcGFyZW5j
eSBsYXllciwgYW5kIHNvIHdlIGV4Y2x1ZGUgdGhlbS4KKyAgICAgICAgaWYgKCFjdXJyLT5pc1Ry
YW5zcGFyZW50KCkpCisgICAgICAgICAgICBjbGlwUmVjdC51bml0ZShjdXJyLT5hYnNvbHV0ZUJv
dW5kaW5nQm94KCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY2xpcFJlY3Q7Cit9CisKK3Zv
aWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCog
cCwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QpCit7CisgICAgaWYgKHAtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCAoaXNUcmFuc3BhcmVudCgpICYmIG1fdXNlZFRyYW5zcGFyZW5jeSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSB0cmFuc3Bh
cmVudEFuY2VzdG9yKCk7CiAgICAgaWYgKGFuY2VzdG9yKQotICAgICAgICBhbmNlc3Rvci0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcnMocCk7CisgICAgICAgIGFuY2VzdG9yLT5iZWdpblRyYW5zcGFy
ZW5jeUxheWVycyhwLCBwYWludERpcnR5UmVjdCk7CiAgICAgCiAgICAgaWYgKGlzVHJhbnNwYXJl
bnQoKSkgewogICAgICAgICBtX3VzZWRUcmFuc3BhcmVuY3kgPSB0cnVlOworICAgICAgICBJbnRS
ZWN0IGNsaXBSZWN0ID0gdHJhbnNwYXJlbmN5Q2xpcEJveCh0aGlzKTsKKyAgICAgICAgY2xpcFJl
Y3QuaW50ZXJzZWN0KHBhaW50RGlydHlSZWN0KTsKKyAgICAgICAgcC0+c2F2ZSgpOworICAgICAg
ICBwLT5hZGRDbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihyZW5kZXJlcigpLT5zdHlsZSgpLT5vcGFjaXR5KCkpOwogICAgIH0KIH0KQEAgLTEwMjIsNyAr
MTA0NSw3IEBACiAgICAgaWYgKHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1h
Z2VSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBCZWdpbiB0cmFuc3BhcmVuY3kgbGF5ZXJz
IGxhemlseSBub3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29tZXRoaW5nLgogICAg
ICAgICBpZiAoaGF2ZVRyYW5zcGFyZW5jeSkKLSAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXJzKHApOworICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMocCwgcGFpbnRE
aXJ0eVJlY3QpOwogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmly
c3QsIGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAvLyBFc3RhYmxp
c2ggdGhlIGNsaXAgdXNlZCB0byBwYWludCBvdXIgYmFja2dyb3VuZC4KQEAgLTEwNDgsNyArMTA3
MSw3IEBACiAgICAgaWYgKHNob3VsZFBhaW50ICYmICFjbGlwUmVjdFRvQXBwbHkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIC8vIEJlZ2luIHRyYW5zcGFyZW5jeSBsYXllcnMgbGF6aWx5IG5vdyB0aGF0
IHdlIGtub3cgd2UgaGF2ZSB0byBwYWludCBzb21ldGhpbmcuCiAgICAgICAgIGlmIChoYXZlVHJh
bnNwYXJlbmN5KQotICAgICAgICAgICAgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMocCk7CisgICAg
ICAgICAgICBiZWdpblRyYW5zcGFyZW5jeUxheWVycyhwLCBwYWludERpcnR5UmVjdCk7CiAKICAg
ICAgICAgLy8gU2V0IHVwIHRoZSBjbGlwIHVzZWQgd2hlbiBwYWludGluZyBvdXIgY2hpbGRyZW4u
CiAgICAgICAgIHNldENsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7CkBA
IC0xMDgzLDYgKzExMDYsNyBAQAogICAgIC8vIEVuZCBvdXIgdHJhbnNwYXJlbmN5IGxheWVyCiAg
ICAgaWYgKGlzVHJhbnNwYXJlbnQoKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpIHsKICAgICAgICAg
cC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcC0+cmVzdG9yZSgpOwogICAgICAg
ICBtX3VzZWRUcmFuc3BhcmVuY3kgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xMjkwLDI1ICsxMzE0
LDcxIEBACiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBtdXN0RXhhbWluZVJlbmRlcmVyKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCitib29sIFJlbmRlckxheWVyOjppbnRlcnNlY3RzRGFtYWdlUmVj
dChjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkg
Y29uc3QKIHsKLSAgICBpZiAocmVuZGVyZXItPmlzQ2FudmFzKCkgfHwgcmVuZGVyZXItPmlzUm9v
dCgpIHx8IHJlbmRlcmVyLT5pc0lubGluZUZsb3coKSkKKyAgICAvLyBBbHdheXMgZXhhbWluZSB0
aGUgY2FudmFzIGFuZCB0aGUgcm9vdC4KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byAKKyAgICBp
ZiAocmVuZGVyZXIoKS0+aXNDYW52YXMoKSB8fCByZW5kZXJlcigpLT5pc1Jvb3QoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgSW50UmVjdCBiYm94ID0gcmVuZGVyZXItPmJvcmRl
ckJveCgpOwotICAgIEludFJlY3Qgb3ZlcmZsb3dSZWN0ID0gcmVuZGVyZXItPm92ZXJmbG93UmVj
dChmYWxzZSk7Ci0gICAgaWYgKGJib3ggIT0gb3ZlcmZsb3dSZWN0KQorCisgICAgLy8gSWYgd2Ug
YXJlbid0IGFuIGlubGluZSBmbG93LCBhbmQgb3VyIGxheWVyIGJvdW5kcyBkbyBpbnRlcnNlY3Qg
dGhlIGRhbWFnZSByZWN0LCB0aGVuIHdlIAorICAgIC8vIGNhbiBnbyBhaGVhZCBhbmQgcmV0dXJu
IHRydWUuCisgICAgaWYgKCFyZW5kZXJlcigpLT5pc0lubGluZUZsb3coKSAmJiBsYXllckJvdW5k
cy5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBJbnRS
ZWN0IGZsb2F0UmVjdCA9IHJlbmRlcmVyLT5mbG9hdFJlY3QoKTsKLSAgICBpZiAoYmJveCAhPSBm
bG9hdFJlY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBjb21wdXRlIHRoZSBib3VuZGluZyBi
b3ggb2YgdGhpcyBzaW5nbGUgbGF5ZXIgYW5kIHNlZSBpZiBpdCBpbnRlcnNlY3RzCisgICAgLy8g
dGhlIGRhbWFnZSByZWN0LgorICAgIHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94KCkuaW50ZXJz
ZWN0cyhkYW1hZ2VSZWN0KTsKIH0KIAotYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFn
ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpIGNvbnN0CitJbnRSZWN0IFJlbmRlckxheWVyOjphYnNvbHV0ZUJvdW5kaW5nQm94KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbXVzdEV4YW1pbmVSZW5kZXJlcihyZW5kZXJlcigpKSB8fCBsYXll
ckJvdW5kcy5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpOworICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBz
cGVjaWFsIGNhc2VzIHdlIG5lZWQgdG8gY29uc2lkZXIuCisgICAgLy8gKDEpIElubGluZSBGbG93
cy4gIEZvciBpbmxpbmUgZmxvd3Mgd2Ugd2lsbCBjcmVhdGUgYSBib3VuZGluZyBib3ggdGhhdCBm
dWxseSBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIGxpbmVzIG9jY3VwaWVkIGJ5IHRoZQorICAgIC8v
IGlubGluZS4gIEluIG90aGVyIHdvcmRzLCBpZiBzb21lIDxzcGFuPiB3cmFwcyB0byB0aHJlZSBs
aW5lcywgd2UnbGwgY3JlYXRlIGEgYm91bmRpbmcgYm94IHRoYXQgZnVsbHkgZW5jbG9zZXMgdGhl
IHJvb3QKKyAgICAvLyBsaW5lIGJveGVzIG9mIGFsbCB0aHJlZSBsaW5lcyAoaW5jbHVkaW5nIG92
ZXJmbG93IG9uIHRob3NlIGxpbmVzKS4KKyAgICAvLyAoMikgTGVmdC9Ub3AgT3ZlcmZsb3cuICBU
aGUgd2lkdGgvaGVpZ2h0IG9mIGxheWVycyBhbHJlYWR5IGluY2x1ZGVzIHJpZ2h0L2JvdHRvbSBv
dmVyZmxvdy4gIEhvd2V2ZXIsIGluIHRoZSBjYXNlIG9mIGxlZnQvdG9wCisgICAgLy8gb3ZlcmZs
b3csIHdlIGhhdmUgdG8gY3JlYXRlIGEgYm91bmRpbmcgYm94IHRoYXQgd2lsbCBleHRlbmQgdG8g
aW5jbHVkZSB0aGlzIG92ZXJmbG93LgorICAgIC8vICgzKSBGbG9hdHMuICBXaGVuIGEgbGF5ZXIg
aGFzIG92ZXJoYW5naW5nIGZsb2F0cyB0aGF0IGl0IHBhaW50cywgd2UgbmVlZCB0byBtYWtlIHN1
cmUgdG8gaW5jbHVkZSB0aGVzZSBvdmVyaGFuZ2luZyBmbG9hdHMKKyAgICAvLyBhcyBwYXJ0IG9m
IG91ciBib3VuZGluZyBib3guICBXZSBkbyB0aGlzIGJlY2F1c2Ugd2UgYXJlIHRoZSByZXNwb25z
aWJsZSBsYXllciBmb3IgYm90aCBoaXQgdGVzdGluZyBhbmQgcGFpbnRpbmcgdGhvc2UKKyAgICAv
LyBmbG9hdHMuCisgICAgSW50UmVjdCByZXN1bHQ7CisgICAgaWYgKHJlbmRlcmVyKCktPmlzSW5s
aW5lRmxvdygpKSB7CisgICAgICAgIC8vIEdvIGZyb20gb3VyIGZpcnN0IGxpbmUgYm94IHRvIG91
ciBsYXN0IGxpbmUgYm94LgorICAgICAgICBSZW5kZXJJbmxpbmUqIGlubGluZUZsb3cgPSBzdGF0
aWNfY2FzdDxSZW5kZXJJbmxpbmUqPihyZW5kZXJlcigpKTsKKyAgICAgICAgSW5saW5lRmxvd0Jv
eCogZmlyc3RCb3ggPSBpbmxpbmVGbG93LT5maXJzdExpbmVCb3goKTsKKyAgICAgICAgaWYgKCFm
aXJzdEJveCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGludCB0b3AgPSBm
aXJzdEJveC0+cm9vdCgpLT50b3BPdmVyZmxvdygpOworICAgICAgICBpbnQgYm90dG9tID0gaW5s
aW5lRmxvdy0+bGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0b21PdmVyZmxvdygpOworICAgICAg
ICBpbnQgbGVmdCA9IGZpcnN0Qm94LT54UG9zKCk7CisgICAgICAgIGZvciAoSW5saW5lUnVuQm94
KiBjdXJyID0gZmlyc3RCb3gtPm5leHRMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0
TGluZUJveCgpKQorICAgICAgICAgICAgbGVmdCA9IGtNaW4obGVmdCwgY3Vyci0+eFBvcygpKTsK
KyAgICAgICAgcmVzdWx0ID0gSW50UmVjdChtX3ggKyBsZWZ0LCBtX3kgKyAodG9wIC0gcmVuZGVy
ZXIoKS0+eVBvcygpKSwgd2lkdGgoKSwgYm90dG9tIC0gdG9wKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBJbnRSZWN0IGJib3ggPSByZW5kZXJlcigpLT5ib3JkZXJCb3goKTsKKyAgICAgICAgcmVz
dWx0ID0gYmJveDsKKyAgICAgICAgSW50UmVjdCBvdmVyZmxvd1JlY3QgPSByZW5kZXJlcigpLT5v
dmVyZmxvd1JlY3QoZmFsc2UpOworICAgICAgICBpZiAoYmJveCAhPSBvdmVyZmxvd1JlY3QpCisg
ICAgICAgICAgICByZXN1bHQudW5pdGUob3ZlcmZsb3dSZWN0KTsKKyAgICAgICAgSW50UmVjdCBm
bG9hdFJlY3QgPSByZW5kZXJlcigpLT5mbG9hdFJlY3QoKTsKKyAgICAgICAgaWYgKGJib3ggIT0g
ZmxvYXRSZWN0KQorICAgICAgICAgICAgcmVzdWx0LnVuaXRlKGZsb2F0UmVjdCk7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBoYXZlIHRvIGFkanVzdCB0aGUgeC95IG9mIHRoaXMgcmVzdWx0IHNv
IHRoYXQgaXQgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGxheWVyLgorICAgICAg
ICByZXN1bHQuc2V0WChtX3ggKyByZXN1bHQueCgpKTsKKyAgICAgICAgcmVzdWx0LnNldFkobV95
ICsgcmVzdWx0LnkoKSk7CisgICAgfQorICAgIAorICAgIC8vIENvbnZlcnQgdGhlIGJvdW5kaW5n
IGJveCB0byBhbiBhYnNvbHV0ZSBwb3NpdGlvbi4gIFdlIGNhbiBkbyB0aGlzIGVhc2lseSBieSBs
b29raW5nIGF0IHRoZSBkZWx0YQorICAgIC8vIGJldHdlZW4gdGhlIGJvdW5kaW5nIGJveCdzIHhw
b3MgYW5kIG91ciBsYXllcidzIHhwb3MgYW5kIHRoZW4gYXBwbHlpbmcgdGhhdCB0byB0aGUgYWJz
b2x1dGUgbGF5ZXJCb3VuZHMKKyAgICAvLyBwYXNzZWQgaW4uCisgICAgaW50IGFic1ggPSAwLCBh
YnNZID0gMDsKKyAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290KCksIGFic1gsIGFic1kpOwor
ICAgIHJldHVybiBJbnRSZWN0KGFic1ggKyByZXN1bHQueCgpIC0gbV94LAorICAgICAgICAgICAg
ICAgICAgIGFic1kgKyByZXN1bHQueSgpIC0gbV95LAorICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgIHJlc3VsdC5oZWlnaHQoKSk7CiB9CiAKIGJv
b2wgUmVuZGVyTGF5ZXI6OmNvbnRhaW5zUG9pbnQoaW50IHgsIGludCB5LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KSBjb25zdApJbmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgJKHJldmlzaW9uIDEzMjQ1KQor
KysgcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDEwIEBACiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uKGludCwgaW50LCBpbnQsIGludCwgaW50
LCBib29sLCBib29sLCBpbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2
aXJ0dWFsIEludFJlY3QgZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOworICAgIAorICAgIC8vIEZJ
WE1FOiBXZSBjYW4ndCBzdXBwb3J0IHRoaW5ncyBsaWtlIG9wYWNpdHkgb24gdGFibGUgcm93cyBi
ZWNhdXNlIHRoZXkgaGF2ZSBubyBkaW1lbnNpb25zLiAgVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVu
CisgICAgLy8gdGFibGUgcm93cyByZWFsbHkgd29yayByaWdodC4KKyAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNMYXllcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZW5kZXJUYWJsZSogdGFi
bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZSo+KHBhcmVudCgpLT5w
YXJlbnQoKSk7IH0KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24qPihwYXJlbnQoKSk7IH0K
</data>
<flag name="review"
          id="1835"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>