<?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>86551</bug_id>
          
          <creation_ts>2012-05-15 17:30:00 -0700</creation_ts>
          <short_desc>Kill RenderLayer::relativePositionOffset(LayoutUnit&amp; relX, LayoutUnit&amp; relY) and cleanup RenderInline::clippedOverflowRectForRepaint</short_desc>
          <delta_ts>2012-05-17 14:30:30 -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>528+ (Nightly build)</version>
          <rep_platform>All</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>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>624768</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-15 17:30:00 -0700</bug_when>
    <thetext>The function is only called once and could easily be replaced by the usual IntPoint / LayoutPoint manipulation.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624780</commentid>
    <comment_count>1</comment_count>
      <attachid>142109</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-15 17:38:24 -0700</bug_when>
    <thetext>Created attachment 142109
Proposed removal 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624786</commentid>
    <comment_count>2</comment_count>
      <attachid>142109</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-15 17:46:17 -0700</bug_when>
    <thetext>Comment on attachment 142109
Proposed removal 1.

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

&gt; Source/WebCore/rendering/RenderInline.cpp:948
&gt; -        if (inlineFlow-&gt;style()-&gt;position() == RelativePosition &amp;&amp; inlineFlow-&gt;hasLayer())
&gt; -            toRenderInline(inlineFlow)-&gt;layer()-&gt;relativePositionOffset(left, top);
&gt; +        if (inlineFlow-&gt;style()-&gt;position() == RelativePosition)
&gt; +            repaintRect.move(toRenderInline(inlineFlow)-&gt;layer()-&gt;relativePositionOffset());

Why is it OK to remove the inlineFlow-&gt;hasLayer() check? Presumably somehow you know that it has a layer, but how?

&gt; Source/WebCore/rendering/RenderInline.cpp:968
&gt; -        LayoutRect repaintRect(r);
&gt; -        repaintRect.move(-cb-&gt;scrolledContentOffset()); // For overflow:auto/scroll/hidden.
&gt; +        LayoutRect scrolledRepaintRect(repaintRect);
&gt; +        scrolledRepaintRect.move(-cb-&gt;scrolledContentOffset()); // For overflow:auto/scroll/hidden.
&gt;  
&gt;          LayoutRect boxRect(LayoutPoint(), cb-&gt;cachedSizeForOverflowClip());
&gt; -        r = intersection(repaintRect, boxRect);
&gt; +        repaintRect = intersection(scrolledRepaintRect, boxRect);

Why do we need a separate variable for scrolledRepaintRect? We should use repaintRect directly.

&gt; Source/WebCore/rendering/RenderInline.cpp:977
&gt; +                LayoutRect childRect = curr-&gt;rectWithOutlineForRepaint(repaintContainer, outlineSize);
&gt; +                repaintRect.unite(childRect);

I don’t think the local variable here helps.

&gt; Source/WebCore/rendering/RenderInline.cpp:983
&gt; +            LayoutRect contRect = continuation()-&gt;rectWithOutlineForRepaint(repaintContainer, outlineSize);
&gt; +            repaintRect.unite(contRect);

I don’t think the local variable here helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624828</commentid>
    <comment_count>3</comment_count>
      <attachid>142109</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-15 18:36:46 -0700</bug_when>
    <thetext>Comment on attachment 142109
Proposed removal 1.

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

&gt;&gt; Source/WebCore/rendering/RenderInline.cpp:948
&gt;&gt; +            repaintRect.move(toRenderInline(inlineFlow)-&gt;layer()-&gt;relativePositionOffset());
&gt; 
&gt; Why is it OK to remove the inlineFlow-&gt;hasLayer() check? Presumably somehow you know that it has a layer, but how?

Mostly because we ensure that RenderInline has a RenderLayer for position:relative. See the isRelPositioned() check in RenderInline::requiresLayer().

Also the classes inheriting from RenderInline either override clippedOverflowForRepaint (RenderSVGInline) or don&apos;t override requiresLayer (RenderRubyAsInline).

The only way we could crash here is if we have an SVG inline ancestor with a RenderInline or RenderRubyAsInline child. I don&apos;t think this is something we allow.

&gt;&gt; Source/WebCore/rendering/RenderInline.cpp:968
&gt;&gt; +        repaintRect = intersection(scrolledRepaintRect, boxRect);
&gt; 
&gt; Why do we need a separate variable for scrolledRepaintRect? We should use repaintRect directly.

I agree with you, I just didn&apos;t feel strongly enough to remove it. Will be changed of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625650</commentid>
    <comment_count>4</comment_count>
      <attachid>142305</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-16 11:13:13 -0700</bug_when>
    <thetext>Created attachment 142305
Patch v2: Improved after Darin&apos;s comments + added more explanation on hasLayer() in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626848</commentid>
    <comment_count>5</comment_count>
      <attachid>142305</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-05-17 12:29:39 -0700</bug_when>
    <thetext>Comment on attachment 142305
Patch v2: Improved after Darin&apos;s comments + added more explanation on hasLayer() in ChangeLog.

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

r=me. please do bring the null check back.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Kill RenderLayer::relativePositionOffset(LayoutUnit&amp; relX, LayoutUnit&amp; relY)

Do you want to add &quot;and cleanup RenderInline::clippedOverflowRectForRepaint&quot;.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No expected change in behavior.

Probably like &apos;No new tests since there is no expected change in behavior.&apos;

&gt; Source/WebCore/ChangeLog:14
&gt; +        variable and removed 2 unneeded NULL-checks:

s/variable/variables.
s/NULL/null

&gt; Source/WebCore/ChangeLog:16
&gt; +            - we ensure that a RenderInlie with position: relative has a RenderLayer

typo RenderInlie. however we won&apos;t need this. see comment below.

&gt; Source/WebCore/rendering/RenderInline.cpp:947
&gt; +        if (inlineFlow-&gt;style()-&gt;position() == RelativePosition)

I think we should bring the hasLayer() check back. If some new class (like svg) inherits from renderinline and overrides hasLayer() and does not need the isRelPositioned() check, we will crash with a null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626903</commentid>
    <comment_count>6</comment_count>
      <attachid>142305</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-17 13:28:43 -0700</bug_when>
    <thetext>Comment on attachment 142305
Patch v2: Improved after Darin&apos;s comments + added more explanation on hasLayer() in ChangeLog.

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Kill RenderLayer::relativePositionOffset(LayoutUnit&amp; relX, LayoutUnit&amp; relY)
&gt; 
&gt; Do you want to add &quot;and cleanup RenderInline::clippedOverflowRectForRepaint&quot;.

Sure.

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        variable and removed 2 unneeded NULL-checks:
&gt; 
&gt; s/variable/variables.
&gt; s/NULL/null

I prefer NULL in capital letters to match the C constant.

&gt;&gt; Source/WebCore/rendering/RenderInline.cpp:947
&gt;&gt; +        if (inlineFlow-&gt;style()-&gt;position() == RelativePosition)
&gt; 
&gt; I think we should bring the hasLayer() check back. If some new class (like svg) inherits from renderinline and overrides hasLayer() and does not need the isRelPositioned() check, we will crash with a null.

I don&apos;t think that&apos;s possible in our current code but it&apos;s likely for the better. I will add it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626919</commentid>
    <comment_count>7</comment_count>
      <attachid>142542</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-17 13:44:48 -0700</bug_when>
    <thetext>Created attachment 142542
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626987</commentid>
    <comment_count>8</comment_count>
      <attachid>142542</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 14:30:25 -0700</bug_when>
    <thetext>Comment on attachment 142542
Patch for landing

Clearing flags on attachment: 142542

Committed r117497: &lt;http://trac.webkit.org/changeset/117497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626988</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-17 14:30:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142109</attachid>
            <date>2012-05-15 17:38:24 -0700</date>
            <delta_ts>2012-05-16 11:13:10 -0700</delta_ts>
            <desc>Proposed removal 1.</desc>
            <filename>bug-86551-20120515173816.patch</filename>
            <type>text/plain</type>
            <size>5461</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIwNzI4ZTIxYjNlMjlj
M2NmYTUzNGMwNzYwODhkMjEwZDczZTg1OC4uZWJkNzY2OWVhNGUyMzc2Mjc2YWFkZGZjNTMyZWQ4
ODVhM2FjOTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTE1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEtpbGwgUmVu
ZGVyTGF5ZXI6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoTGF5b3V0VW5pdCYgcmVsWCwgTGF5b3V0
VW5pdCYgcmVsWSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg2NTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gZXhwZWN0ZWQgY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgQ2hhbmdlZCB0aGUgZnVuY3Rpb24g
dG8gdXNlIExheW91dFJlY3QgYXJpdGhtZXRpY3MgaW5zdGVhZCBvZiBjYWxjdWxhdGluZworICAg
ICAgICB0b3AgLyBsZWZ0IG1hbnVhbGx5LiBXaGlsZSBhdCBpdCwgcmVtb3ZlZCBzb21lIHVubmVl
ZGVkIE5VTEwtY2hlY2tzIGFuZCBpbXByb3ZlZAorICAgICAgICB0aGUgbmFtaW5nLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6IFJlbW92ZWQgdGhlIGZ1bmN0aW9uLgorCiAy
MDEyLTA1LTE0ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIFByZXZlbnQgS2V5Q29kZUNvbnZlcnNpb25BbmRyb2lkIGZyb20gYnJlYWtp
bmcgb24gbmV4dCBOREsgcm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCA2ODA0MzgzZWQ2MzY0NjcyZTc0YzVkY2Q3Njk2OTg3Y2M5ZWU2YjAwLi4wMjQ3
NjMyOTEzMWFhMWY2MWMzZmQwYTY1NDM5ZmI2NzUyOTFhYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTMyLDE0ICs5MzIsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcAogICAgIGlmICghZmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpICYm
ICFjb250aW51YXRpb24oKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAotICAgIC8v
IEZpbmQgb3VyIGxlZnRtb3N0IHBvc2l0aW9uLgotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3go
bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkpOwotICAgIExheW91dFVuaXQgbGVmdCA9
IGJvdW5kaW5nQm94LngoKTsKLSAgICBMYXlvdXRVbml0IHRvcCA9IGJvdW5kaW5nQm94LnkoKTsK
LQotICAgIC8vIE5vdyBpbnZhbGlkYXRlIGEgcmVjdGFuZ2xlLgotICAgIExheW91dFVuaXQgb3cg
PSBzdHlsZSgpID8gc3R5bGUoKS0+b3V0bGluZVNpemUoKSA6IDA7Ci0KKyAgICBMYXlvdXRSZWN0
IHJlcGFpbnRSZWN0KGxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpKTsKICAgICBib29s
IGhpdFJlcGFpbnRDb250YWluZXIgPSBmYWxzZTsKIAogICAgIC8vIFdlIG5lZWQgdG8gYWRkIGlu
IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZmZzZXRzIG9mIGFueSBpbmxpbmVzIChpbmNsdWRpbmcg
dXMpIHVwIHRvIG91cgpAQCAtOTUxLDQ2ICs5NDQsNDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxp
bmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXAKICAgICAgICAgICAgIGhpdFJlcGFpbnRDb250YWluZXIgPSB0cnVlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0eWxlKCktPnBvc2l0
aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbiAmJiBpbmxpbmVGbG93LT5oYXNMYXllcigpKQotICAg
ICAgICAgICAgdG9SZW5kZXJJbmxpbmUoaW5saW5lRmxvdyktPmxheWVyKCktPnJlbGF0aXZlUG9z
aXRpb25PZmZzZXQobGVmdCwgdG9wKTsKKyAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0eWxlKCkt
PnBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0
Lm1vdmUodG9SZW5kZXJJbmxpbmUoaW5saW5lRmxvdyktPmxheWVyKCktPnJlbGF0aXZlUG9zaXRp
b25PZmZzZXQoKSk7CiAgICAgfQogCi0gICAgTGF5b3V0UmVjdCByKC1vdyArIGxlZnQsIC1vdyAr
IHRvcCwgYm91bmRpbmdCb3gud2lkdGgoKSArIG93ICogMiwgYm91bmRpbmdCb3guaGVpZ2h0KCkg
KyBvdyAqIDIpOworICAgIExheW91dFVuaXQgb3V0bGluZVNpemUgPSBzdHlsZSgpLT5vdXRsaW5l
U2l6ZSgpOworICAgIHJlcGFpbnRSZWN0LmluZmxhdGUob3V0bGluZVNpemUpOwogCiAgICAgaWYg
KGhpdFJlcGFpbnRDb250YWluZXIgfHwgIWNiKQotICAgICAgICByZXR1cm4gcjsKKyAgICAgICAg
cmV0dXJuIHJlcGFpbnRSZWN0OwogCiAgICAgaWYgKGNiLT5oYXNDb2x1bW5zKCkpCi0gICAgICAg
IGNiLT5hZGp1c3RSZWN0Rm9yQ29sdW1ucyhyKTsKKyAgICAgICAgY2ItPmFkanVzdFJlY3RGb3JD
b2x1bW5zKHJlcGFpbnRSZWN0KTsKIAogICAgIGlmIChjYi0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsK
ICAgICAgICAgLy8gY2ItPmhlaWdodCgpIGlzIGluYWNjdXJhdGUgaWYgd2UncmUgaW4gdGhlIG1p
ZGRsZSBvZiBhIGxheW91dCBvZiB8Y2J8LCBzbyB1c2UgdGhlCiAgICAgICAgIC8vIGxheWVyJ3Mg
c2l6ZSBpbnN0ZWFkLiAgRXZlbiBpZiB0aGUgbGF5ZXIncyBzaXplIGlzIHdyb25nLCB0aGUgbGF5
ZXIgaXRzZWxmIHdpbGwgcmVwYWludAogICAgICAgICAvLyBhbnl3YXkgaWYgaXRzIHNpemUgZG9l
cyBjaGFuZ2UuCi0gICAgICAgIExheW91dFJlY3QgcmVwYWludFJlY3Qocik7Ci0gICAgICAgIHJl
cGFpbnRSZWN0Lm1vdmUoLWNiLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7IC8vIEZvciBvdmVy
ZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4uCisgICAgICAgIExheW91dFJlY3Qgc2Nyb2xsZWRSZXBh
aW50UmVjdChyZXBhaW50UmVjdCk7CisgICAgICAgIHNjcm9sbGVkUmVwYWludFJlY3QubW92ZSgt
Y2ItPnNjcm9sbGVkQ29udGVudE9mZnNldCgpKTsgLy8gRm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xs
L2hpZGRlbi4KIAogICAgICAgICBMYXlvdXRSZWN0IGJveFJlY3QoTGF5b3V0UG9pbnQoKSwgY2It
PmNhY2hlZFNpemVGb3JPdmVyZmxvd0NsaXAoKSk7Ci0gICAgICAgIHIgPSBpbnRlcnNlY3Rpb24o
cmVwYWludFJlY3QsIGJveFJlY3QpOworICAgICAgICByZXBhaW50UmVjdCA9IGludGVyc2VjdGlv
bihzY3JvbGxlZFJlcGFpbnRSZWN0LCBib3hSZWN0KTsKICAgICB9CiAKLSAgICBjYi0+Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHIpOworICAgIGNiLT5jb21wdXRlUmVj
dEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QpOwogCi0gICAgaWYgKG93
KSB7CisgICAgaWYgKG91dGxpbmVTaXplKSB7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBj
dXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewog
ICAgICAgICAgICAgaWYgKCFjdXJyLT5pc1RleHQoKSkgewotICAgICAgICAgICAgICAgIExheW91
dFJlY3QgY2hpbGRSZWN0ID0gY3Vyci0+cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50
Q29udGFpbmVyLCBvdyk7Ci0gICAgICAgICAgICAgICAgci51bml0ZShjaGlsZFJlY3QpOworICAg
ICAgICAgICAgICAgIExheW91dFJlY3QgY2hpbGRSZWN0ID0gY3Vyci0+cmVjdFdpdGhPdXRsaW5l
Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5lU2l6ZSk7CisgICAgICAgICAgICAg
ICAgcmVwYWludFJlY3QudW5pdGUoY2hpbGRSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIGlmIChjb250aW51YXRpb24oKSAmJiAhY29udGludWF0aW9uKCktPmlzSW5s
aW5lKCkgJiYgY29udGludWF0aW9uKCktPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRS
ZWN0IGNvbnRSZWN0ID0gY29udGludWF0aW9uKCktPnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQo
cmVwYWludENvbnRhaW5lciwgb3cpOwotICAgICAgICAgICAgci51bml0ZShjb250UmVjdCk7Cisg
ICAgICAgICAgICBMYXlvdXRSZWN0IGNvbnRSZWN0ID0gY29udGludWF0aW9uKCktPnJlY3RXaXRo
T3V0bGluZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb3V0bGluZVNpemUpOworICAgICAg
ICAgICAgcmVwYWludFJlY3QudW5pdGUoY29udFJlY3QpOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIHI7CisgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQogCiBMYXlvdXRSZWN0IFJl
bmRlcklubGluZTo6cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGViMzZjMzRkMzJmNTFhNmQ0MGZj
ZWMxMWMwNWE0NTgwOTQ4OThkZmUuLmM2MWU5NTUyMTQ5Y2NiYjljYzk0ODg5ZDExNmUyODlmMzIx
NWU5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zNjksNyAr
MzY5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKIAotICAgIHZv
aWQgcmVsYXRpdmVQb3NpdGlvbk9mZnNldChMYXlvdXRVbml0JiByZWxYLCBMYXlvdXRVbml0JiBy
ZWxZKSBjb25zdCB7IHJlbFggKz0gbV9yZWxhdGl2ZU9mZnNldC53aWR0aCgpOyByZWxZICs9IG1f
cmVsYXRpdmVPZmZzZXQuaGVpZ2h0KCk7IH0KICAgICBjb25zdCBMYXlvdXRTaXplJiByZWxhdGl2
ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZU9mZnNldDsgfQogCiAg
ICAgdm9pZCBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142305</attachid>
            <date>2012-05-16 11:13:13 -0700</date>
            <delta_ts>2012-05-17 13:44:45 -0700</delta_ts>
            <desc>Patch v2: Improved after Darin&apos;s comments + added more explanation on hasLayer() in ChangeLog.</desc>
            <filename>bug-86551-20120516111312.patch</filename>
            <type>text/plain</type>
            <size>5588</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5ZWYyOGI2ODQ4NWM2
ZDk4MjVjNmFhZDJhYWQwZDRhMjIxZTA0YS4uN2M3MGZhMDhjMDlhYTgyZmI0N2Q1ZjQwZmQ5MzE4
MWZjM2M5N2FkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTE2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEtpbGwgUmVu
ZGVyTGF5ZXI6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoTGF5b3V0VW5pdCYgcmVsWCwgTGF5b3V0
VW5pdCYgcmVsWSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg2NTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gZXhwZWN0ZWQgY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAgQ2hhbmdlZCB0aGUgZnVuY3Rpb24g
dG8gdXNlIExheW91dFJlY3QgYXJpdGhtZXRpY3MgaW5zdGVhZCBvZiBjYWxjdWxhdGluZworICAg
ICAgICB0b3AgLyBsZWZ0IG1hbnVhbGx5LiBXaGlsZSBhdCBpdCwgaW1wcm92ZWQgdGhlIG5hbWlu
ZywgcmVtb3ZlZCBzb21lIGxvY2FsCisgICAgICAgIHZhcmlhYmxlIGFuZCByZW1vdmVkIDIgdW5u
ZWVkZWQgTlVMTC1jaGVja3M6CisgICAgICAgICAgICAtIHN0eWxlKCkgY2FuIG5ldmVyIGJlIE5V
TEwuCisgICAgICAgICAgICAtIHdlIGVuc3VyZSB0aGF0IGEgUmVuZGVySW5saWUgd2l0aCBwb3Np
dGlvbjogcmVsYXRpdmUgaGFzIGEgUmVuZGVyTGF5ZXIKKyAgICAgICAgICAgIChoYXNMYXllcigp
IHdpbGwgbm90IGJlIE5VTEwgaW4gdGhpcyBjYXNlKS4gQWxzbyBiZWNhdXNlIHdlIGRvbid0IGFs
bG93IFNWRworICAgICAgICAgICAgaW5saW5lcyB0byBjb250YWluIEhUTUwgaW5saW5lcy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOiBSZW1vdmVkIHRoZSBmdW5jdGlvbi4K
KwogMjAxMi0wNS0xNiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEF2b2lkIGp1bXBzY3JvbGwgd2hlbiBlbnRlcmluZyBuZXcgdGV4dCBpbiBhIG11
bHRpLWxpbmUgZWRpdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAppbmRleCA2ODA0MzgzZWQ2MzY0NjcyZTc0YzVkY2Q3Njk2OTg3Y2M5ZWU2YjAwLi43ZjgyOTRm
YmIzM2VhZDliMTI3MmRlMDQ3OGFkOGE2ZTNiNmZkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtOTMyLDE0ICs5MzIsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcAogICAgIGlmICghZmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpICYmICFj
b250aW51YXRpb24oKSkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAotICAgIC8vIEZp
bmQgb3VyIGxlZnRtb3N0IHBvc2l0aW9uLgotICAgIExheW91dFJlY3QgYm91bmRpbmdCb3gobGlu
ZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkpOwotICAgIExheW91dFVuaXQgbGVmdCA9IGJv
dW5kaW5nQm94LngoKTsKLSAgICBMYXlvdXRVbml0IHRvcCA9IGJvdW5kaW5nQm94LnkoKTsKLQot
ICAgIC8vIE5vdyBpbnZhbGlkYXRlIGEgcmVjdGFuZ2xlLgotICAgIExheW91dFVuaXQgb3cgPSBz
dHlsZSgpID8gc3R5bGUoKS0+b3V0bGluZVNpemUoKSA6IDA7Ci0KKyAgICBMYXlvdXRSZWN0IHJl
cGFpbnRSZWN0KGxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpKTsKICAgICBib29sIGhp
dFJlcGFpbnRDb250YWluZXIgPSBmYWxzZTsKIAogICAgIC8vIFdlIG5lZWQgdG8gYWRkIGluIHRo
ZSByZWxhdGl2ZSBwb3NpdGlvbiBvZmZzZXRzIG9mIGFueSBpbmxpbmVzIChpbmNsdWRpbmcgdXMp
IHVwIHRvIG91cgpAQCAtOTUxLDQ2ICs5NDQsNDIgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6
OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXAK
ICAgICAgICAgICAgIGhpdFJlcGFpbnRDb250YWluZXIgPSB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0eWxlKCktPnBvc2l0aW9u
KCkgPT0gUmVsYXRpdmVQb3NpdGlvbiAmJiBpbmxpbmVGbG93LT5oYXNMYXllcigpKQotICAgICAg
ICAgICAgdG9SZW5kZXJJbmxpbmUoaW5saW5lRmxvdyktPmxheWVyKCktPnJlbGF0aXZlUG9zaXRp
b25PZmZzZXQobGVmdCwgdG9wKTsKKyAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0eWxlKCktPnBv
c2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0Lm1v
dmUodG9SZW5kZXJJbmxpbmUoaW5saW5lRmxvdyktPmxheWVyKCktPnJlbGF0aXZlUG9zaXRpb25P
ZmZzZXQoKSk7CiAgICAgfQogCi0gICAgTGF5b3V0UmVjdCByKC1vdyArIGxlZnQsIC1vdyArIHRv
cCwgYm91bmRpbmdCb3gud2lkdGgoKSArIG93ICogMiwgYm91bmRpbmdCb3guaGVpZ2h0KCkgKyBv
dyAqIDIpOworICAgIExheW91dFVuaXQgb3V0bGluZVNpemUgPSBzdHlsZSgpLT5vdXRsaW5lU2l6
ZSgpOworICAgIHJlcGFpbnRSZWN0LmluZmxhdGUob3V0bGluZVNpemUpOwogCiAgICAgaWYgKGhp
dFJlcGFpbnRDb250YWluZXIgfHwgIWNiKQotICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgcmV0
dXJuIHJlcGFpbnRSZWN0OwogCiAgICAgaWYgKGNiLT5oYXNDb2x1bW5zKCkpCi0gICAgICAgIGNi
LT5hZGp1c3RSZWN0Rm9yQ29sdW1ucyhyKTsKKyAgICAgICAgY2ItPmFkanVzdFJlY3RGb3JDb2x1
bW5zKHJlcGFpbnRSZWN0KTsKIAogICAgIGlmIChjYi0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKICAg
ICAgICAgLy8gY2ItPmhlaWdodCgpIGlzIGluYWNjdXJhdGUgaWYgd2UncmUgaW4gdGhlIG1pZGRs
ZSBvZiBhIGxheW91dCBvZiB8Y2J8LCBzbyB1c2UgdGhlCiAgICAgICAgIC8vIGxheWVyJ3Mgc2l6
ZSBpbnN0ZWFkLiAgRXZlbiBpZiB0aGUgbGF5ZXIncyBzaXplIGlzIHdyb25nLCB0aGUgbGF5ZXIg
aXRzZWxmIHdpbGwgcmVwYWludAogICAgICAgICAvLyBhbnl3YXkgaWYgaXRzIHNpemUgZG9lcyBj
aGFuZ2UuCi0gICAgICAgIExheW91dFJlY3QgcmVwYWludFJlY3Qocik7CiAgICAgICAgIHJlcGFp
bnRSZWN0Lm1vdmUoLWNiLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7IC8vIEZvciBvdmVyZmxv
dzphdXRvL3Njcm9sbC9oaWRkZW4uCiAKICAgICAgICAgTGF5b3V0UmVjdCBib3hSZWN0KExheW91
dFBvaW50KCksIGNiLT5jYWNoZWRTaXplRm9yT3ZlcmZsb3dDbGlwKCkpOwotICAgICAgICByID0g
aW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBib3hSZWN0KTsKKyAgICAgICAgcmVwYWludFJlY3Qu
aW50ZXJzZWN0KGJveFJlY3QpOwogICAgIH0KIAotICAgIGNiLT5jb21wdXRlUmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lciwgcik7CisgICAgY2ItPmNvbXB1dGVSZWN0Rm9yUmVwYWludChy
ZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCk7CiAKLSAgICBpZiAob3cpIHsKKyAgICBpZiAo
b3V0bGluZVNpemUpIHsKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBmaXJzdENo
aWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWN1cnItPmlzVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBjaGlsZFJl
Y3QgPSBjdXJyLT5yZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIG93
KTsKLSAgICAgICAgICAgICAgICByLnVuaXRlKGNoaWxkUmVjdCk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIWN1cnItPmlzVGV4dCgpKQorICAgICAgICAgICAgICAgIHJlcGFpbnRS
ZWN0LnVuaXRlKGN1cnItPnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5l
ciwgb3V0bGluZVNpemUpKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250aW51YXRpb24o
KSAmJiAhY29udGludWF0aW9uKCktPmlzSW5saW5lKCkgJiYgY29udGludWF0aW9uKCktPnBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRSZWN0IGNvbnRSZWN0ID0gY29udGludWF0aW9uKCkt
PnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb3cpOwotICAgICAg
ICAgICAgci51bml0ZShjb250UmVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNvbnRpbnVh
dGlvbigpICYmICFjb250aW51YXRpb24oKS0+aXNJbmxpbmUoKSAmJiBjb250aW51YXRpb24oKS0+
cGFyZW50KCkpCisgICAgICAgICAgICByZXBhaW50UmVjdC51bml0ZShjb250aW51YXRpb24oKS0+
cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5lU2l6ZSkp
OwogICAgIH0KIAotICAgIHJldHVybiByOworICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KIAog
TGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OnJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAyYjZkODQ2
MmQ0YzNlODAxNjI5NjM4YTA0MjViYTI4OTk2MTc5MjI2Li44NjBhMzcyOTBhYWRkNjE3OWMxZDAx
NzliMjFhMDBkOTY4NGY4ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aApAQCAtMzY5LDcgKzM2OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVHJhbnNmb3Jt
KCk7CiAKLSAgICB2b2lkIHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoTGF5b3V0VW5pdCYgcmVsWCwg
TGF5b3V0VW5pdCYgcmVsWSkgY29uc3QgeyByZWxYICs9IG1fcmVsYXRpdmVPZmZzZXQud2lkdGgo
KTsgcmVsWSArPSBtX3JlbGF0aXZlT2Zmc2V0LmhlaWdodCgpOyB9CiAgICAgY29uc3QgTGF5b3V0
U2l6ZSYgcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVP
ZmZzZXQ7IH0KIAogICAgIHZvaWQgY2xlYXJDbGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142542</attachid>
            <date>2012-05-17 13:44:48 -0700</date>
            <delta_ts>2012-05-17 14:30:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-86551-20120517134447.patch</filename>
            <type>text/plain</type>
            <size>5335</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVjZmY0ZmE3ZjM0MWEx
NGE1MmY1NTNiZmRhNWE5YzU2NmNjNDVlZi4uMTAyYmZkNGFlYTViZTc4OWNkYTk0ZmU0MjFhNDQ5
YmQ4OGYzYzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTE3ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEtpbGwgUmVu
ZGVyTGF5ZXI6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoTGF5b3V0VW5pdCYgcmVsWCwgTGF5b3V0
VW5pdCYgcmVsWSkgYW5kIGNsZWFudXAgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBYmhpc2hlayBBcnlhLgorCisgICAgICAg
IE5vIHRlc3Qgc2luY2UgdGhlcmUgaXMgbm8gZXhwZWN0ZWQgY2hhbmdlIGluIGJlaGF2aW9yLgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KToKKyAgICAgICAg
Q2hhbmdlZCB0aGUgZnVuY3Rpb24gdG8gdXNlIExheW91dFJlY3QgYXJpdGhtZXRpY3MgaW5zdGVh
ZCBvZiBjYWxjdWxhdGluZworICAgICAgICB0b3AgLyBsZWZ0IG1hbnVhbGx5LiBXaGlsZSBhdCBp
dCwgaW1wcm92ZWQgdGhlIG5hbWluZywgcmVtb3ZlZCBzb21lIGxvY2FsCisgICAgICAgIHZhcmlh
YmxlcyBhbmQgcmVtb3ZlZCBhbiB1bm5lZWRlZCBzdHlsZSgpIE5VTEwtY2hlY2suCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDogUmVtb3ZlZCB0aGUgZnVuY3Rpb24uCisKIDIw
MTItMDUtMTcgIE1pY2hhbCBNb2NueSAgPG1tb2NueUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gTGltaXRpbmcgcmVuZGVyIHN1cmZhY2UgdGV4dHVyZSBtYW5hZ2VyIG1lbW9yeSB0
byAwIHdoZW4gY29udGVudHNNZW1vcnlVc2VCeXRlcyBpcyBsYXJnZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNjgwNDM4M2VkNjM2NDY3MmU3NGM1ZGNk
NzY5Njk4N2NjOWVlNmIwMC4uMzhhODc0YjRhMWEwNTZmYzA5ZDk4YzBjNGRlNjNiNTgzYjEyMzVm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTkzMiwx
NCArOTMyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXAKICAgICBpZiAoIWZpcnN0TGluZUJv
eEluY2x1ZGluZ0N1bGxpbmcoKSAmJiAhY29udGludWF0aW9uKCkpCiAgICAgICAgIHJldHVybiBM
YXlvdXRSZWN0KCk7CiAKLSAgICAvLyBGaW5kIG91ciBsZWZ0bW9zdCBwb3NpdGlvbi4KLSAgICBM
YXlvdXRSZWN0IGJvdW5kaW5nQm94KGxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpKTsK
LSAgICBMYXlvdXRVbml0IGxlZnQgPSBib3VuZGluZ0JveC54KCk7Ci0gICAgTGF5b3V0VW5pdCB0
b3AgPSBib3VuZGluZ0JveC55KCk7Ci0KLSAgICAvLyBOb3cgaW52YWxpZGF0ZSBhIHJlY3Rhbmds
ZS4KLSAgICBMYXlvdXRVbml0IG93ID0gc3R5bGUoKSA/IHN0eWxlKCktPm91dGxpbmVTaXplKCkg
OiAwOwotCisgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdChsaW5lc1Zpc3VhbE92ZXJmbG93Qm91
bmRpbmdCb3goKSk7CiAgICAgYm9vbCBoaXRSZXBhaW50Q29udGFpbmVyID0gZmFsc2U7CiAKICAg
ICAvLyBXZSBuZWVkIHRvIGFkZCBpbiB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2Zmc2V0cyBvZiBh
bnkgaW5saW5lcyAoaW5jbHVkaW5nIHVzKSB1cCB0byBvdXIKQEAgLTk1Miw0NSArOTQ1LDQxIEBA
IExheW91dFJlY3QgUmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaW5saW5lRmxvdy0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBSZWxhdGl2ZVBv
c2l0aW9uICYmIGlubGluZUZsb3ctPmhhc0xheWVyKCkpCi0gICAgICAgICAgICB0b1JlbmRlcklu
bGluZShpbmxpbmVGbG93KS0+bGF5ZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldChsZWZ0LCB0
b3ApOworICAgICAgICAgICAgcmVwYWludFJlY3QubW92ZSh0b1JlbmRlcklubGluZShpbmxpbmVG
bG93KS0+bGF5ZXIoKS0+cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpKTsKICAgICB9CiAKLSAgICBM
YXlvdXRSZWN0IHIoLW93ICsgbGVmdCwgLW93ICsgdG9wLCBib3VuZGluZ0JveC53aWR0aCgpICsg
b3cgKiAyLCBib3VuZGluZ0JveC5oZWlnaHQoKSArIG93ICogMik7CisgICAgTGF5b3V0VW5pdCBv
dXRsaW5lU2l6ZSA9IHN0eWxlKCktPm91dGxpbmVTaXplKCk7CisgICAgcmVwYWludFJlY3QuaW5m
bGF0ZShvdXRsaW5lU2l6ZSk7CiAKICAgICBpZiAoaGl0UmVwYWludENvbnRhaW5lciB8fCAhY2Ip
Ci0gICAgICAgIHJldHVybiByOworICAgICAgICByZXR1cm4gcmVwYWludFJlY3Q7CiAKICAgICBp
ZiAoY2ItPmhhc0NvbHVtbnMoKSkKLSAgICAgICAgY2ItPmFkanVzdFJlY3RGb3JDb2x1bW5zKHIp
OworICAgICAgICBjYi0+YWRqdXN0UmVjdEZvckNvbHVtbnMocmVwYWludFJlY3QpOwogCiAgICAg
aWYgKGNiLT5oYXNPdmVyZmxvd0NsaXAoKSkgewogICAgICAgICAvLyBjYi0+aGVpZ2h0KCkgaXMg
aW5hY2N1cmF0ZSBpZiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgbGF5b3V0IG9mIHxjYnwsIHNv
IHVzZSB0aGUKICAgICAgICAgLy8gbGF5ZXIncyBzaXplIGluc3RlYWQuICBFdmVuIGlmIHRoZSBs
YXllcidzIHNpemUgaXMgd3JvbmcsIHRoZSBsYXllciBpdHNlbGYgd2lsbCByZXBhaW50CiAgICAg
ICAgIC8vIGFueXdheSBpZiBpdHMgc2l6ZSBkb2VzIGNoYW5nZS4KLSAgICAgICAgTGF5b3V0UmVj
dCByZXBhaW50UmVjdChyKTsKICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtY2ItPnNjcm9sbGVk
Q29udGVudE9mZnNldCgpKTsgLy8gRm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAog
ICAgICAgICBMYXlvdXRSZWN0IGJveFJlY3QoTGF5b3V0UG9pbnQoKSwgY2ItPmNhY2hlZFNpemVG
b3JPdmVyZmxvd0NsaXAoKSk7Ci0gICAgICAgIHIgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3Qs
IGJveFJlY3QpOworICAgICAgICByZXBhaW50UmVjdC5pbnRlcnNlY3QoYm94UmVjdCk7CiAgICAg
fQogCi0gICAgY2ItPmNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCByKTsK
KyAgICBjYi0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRS
ZWN0KTsKIAotICAgIGlmIChvdykgeworICAgIGlmIChvdXRsaW5lU2l6ZSkgewogICAgICAgICBm
b3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmICghY3Vyci0+aXNUZXh0KCkpIHsKLSAg
ICAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkUmVjdCA9IGN1cnItPnJlY3RXaXRoT3V0bGlu
ZUZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgb3cpOwotICAgICAgICAgICAgICAgIHIudW5p
dGUoY2hpbGRSZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY3Vyci0+aXNU
ZXh0KCkpCisgICAgICAgICAgICAgICAgcmVwYWludFJlY3QudW5pdGUoY3Vyci0+cmVjdFdpdGhP
dXRsaW5lRm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCBvdXRsaW5lU2l6ZSkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGNvbnRpbnVhdGlvbigpICYmICFjb250aW51YXRpb24oKS0+aXNJ
bmxpbmUoKSAmJiBjb250aW51YXRpb24oKS0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIExheW91
dFJlY3QgY29udFJlY3QgPSBjb250aW51YXRpb24oKS0+cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWlu
dChyZXBhaW50Q29udGFpbmVyLCBvdyk7Ci0gICAgICAgICAgICByLnVuaXRlKGNvbnRSZWN0KTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoY29udGludWF0aW9uKCkgJiYgIWNvbnRpbnVhdGlvbigp
LT5pc0lubGluZSgpICYmIGNvbnRpbnVhdGlvbigpLT5wYXJlbnQoKSkKKyAgICAgICAgICAgIHJl
cGFpbnRSZWN0LnVuaXRlKGNvbnRpbnVhdGlvbigpLT5yZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50
KHJlcGFpbnRDb250YWluZXIsIG91dGxpbmVTaXplKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHI7
CisgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQogCiBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6
cmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCmluZGV4IDJiNmQ4NDYyZDRjM2U4MDE2Mjk2MzhhMDQyNWJhMjg5
OTYxNzkyMjYuLjg2MGEzNzI5MGFhZGQ2MTc5YzFkMDE3OWIyMWEwMGQ5Njg0ZjhkMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zNjksNyArMzY5LDYgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgcmVsYXRpdmVQ
b3NpdGlvbk9mZnNldChMYXlvdXRVbml0JiByZWxYLCBMYXlvdXRVbml0JiByZWxZKSBjb25zdCB7
IHJlbFggKz0gbV9yZWxhdGl2ZU9mZnNldC53aWR0aCgpOyByZWxZICs9IG1fcmVsYXRpdmVPZmZz
ZXQuaGVpZ2h0KCk7IH0KICAgICBjb25zdCBMYXlvdXRTaXplJiByZWxhdGl2ZVBvc2l0aW9uT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZU9mZnNldDsgfQogCiAgICAgdm9pZCBjbGVh
ckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>