<?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>98566</bug_id>
          
          <creation_ts>2012-10-05 15:41:50 -0700</creation_ts>
          <short_desc>Make the common table-layout cases a little faster with inlining</short_desc>
          <delta_ts>2012-10-09 11:20:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>
          
          <blocked>98798</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>jchaffraix</cc>
    
    <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736049</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-05 15:41:50 -0700</bug_when>
    <thetext>Make the common table-layout cases a little faster with inlining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736053</commentid>
    <comment_count>1</comment_count>
      <attachid>167400</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-05 15:43:11 -0700</bug_when>
    <thetext>Created attachment 167400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736156</commentid>
    <comment_count>2</comment_count>
      <attachid>167400</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-05 18:42:08 -0700</bug_when>
    <thetext>Comment on attachment 167400
Patch

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

I think the change makes sense from a performance perspective. It also cleans up this code a bit which is nice.

r=me with comments.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make the common table-layout cases a little faster with inlining

It&apos;s probably the no-column case that you are talking about here.

&gt; Source/WebCore/rendering/RenderTable.cpp:-780
&gt; -

Nit: I like those extra spaces before returns as it helps see the different blocks so I would rather keep this one.

&gt; Source/WebCore/rendering/RenderTable.h:276
&gt; +    RenderTableCol* slowColElement(unsigned col, bool* startEdge = 0, bool* endEdge = 0) const;

Not default arguments as you only call it from colElement with all the arguments.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:153
&gt; +    Length colWidthSum = Length(0, Fixed);

While touching this code, you may just end up making colWidthSum an int and explicitly use Length::intValue() as we only ever add fixed length to it. This would save on the Length creation and copying.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:176
&gt; +    if (colWidthSum.isFixed() &amp;&amp; colWidthSum.value() &gt; 0)

AFAICT the isFixed() check will always be true as we explicitly make colWidthSum a Fixed Length.

&gt; Source/WebCore/rendering/RenderTableCell.h:248
&gt; +    Length logicalWidthFromTableColumn(RenderTableCol* firstColForThisCell, Length widthFromStyle) const;

I feel that the name could be improved a bit. You find your logical widths from your columns so it should probably be logicalWidthFromColumns (I would drop the &apos;Table&apos; part but it&apos;s a matter of preference).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737113</commentid>
    <comment_count>3</comment_count>
      <attachid>167400</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-08 15:16:58 -0700</bug_when>
    <thetext>Comment on attachment 167400
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:-780
&gt;&gt; -
&gt; 
&gt; Nit: I like those extra spaces before returns as it helps see the different blocks so I would rather keep this one.

Fixed.

&gt;&gt; Source/WebCore/rendering/RenderTable.h:276
&gt;&gt; +    RenderTableCol* slowColElement(unsigned col, bool* startEdge = 0, bool* endEdge = 0) const;
&gt; 
&gt; Not default arguments as you only call it from colElement with all the arguments.

Fixed.

&gt;&gt; Source/WebCore/rendering/RenderTableCell.cpp:153
&gt;&gt; +    Length colWidthSum = Length(0, Fixed);
&gt; 
&gt; While touching this code, you may just end up making colWidthSum an int and explicitly use Length::intValue() as we only ever add fixed length to it. This would save on the Length creation and copying.

Great suggestion.  It made obvious that we&apos;re not applying border/padding in teh negative-width case.  I added a FIXME.

&gt;&gt; Source/WebCore/rendering/RenderTableCell.cpp:176
&gt;&gt; +    if (colWidthSum.isFixed() &amp;&amp; colWidthSum.value() &gt; 0)
&gt; 
&gt; AFAICT the isFixed() check will always be true as we explicitly make colWidthSum a Fixed Length.

Yeah, and the &gt; 0 doesn&apos;t make much sense, nor does the max?  Unless it&apos;s specified that border/padding can never make width negative?

&gt;&gt; Source/WebCore/rendering/RenderTableCell.h:248
&gt;&gt; +    Length logicalWidthFromTableColumn(RenderTableCol* firstColForThisCell, Length widthFromStyle) const;
&gt; 
&gt; I feel that the name could be improved a bit. You find your logical widths from your columns so it should probably be logicalWidthFromColumns (I would drop the &apos;Table&apos; part but it&apos;s a matter of preference).

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737125</commentid>
    <comment_count>4</comment_count>
      <attachid>167631</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-08 15:30:40 -0700</bug_when>
    <thetext>Created attachment 167631
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737149</commentid>
    <comment_count>5</comment_count>
      <attachid>167631</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 15:59:30 -0700</bug_when>
    <thetext>Comment on attachment 167631
Patch for landing

Clearing flags on attachment: 167631

Committed r130698: &lt;http://trac.webkit.org/changeset/130698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737150</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 15:59:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167400</attachid>
            <date>2012-10-05 15:43:11 -0700</date>
            <delta_ts>2012-10-08 15:30:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98566-20121005154223.patch</filename>
            <type>text/plain</type>
            <size>8272</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDUwMmU3MTI1Y2Q2NzEw
MjQ3MTA4M2IxNDAzMDg0NDk1M2Y5NzY0NS4uMzk1MzU0M2Y3MTk4ZDIyOTM2OWYzOTJlZDVkMzNm
OTc5Y2Y0MmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDEyLTEwLTA1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBNYWtlIHRoZSBjb21tb24gdGFi
bGUtbGF5b3V0IGNhc2VzIGEgbGl0dGxlIGZhc3RlciB3aXRoIGlubGluaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODU2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIGFsbW9z
dCBub3Qgd29ydGggaXQgYXQgb25seSBhIGNvdXBsZSBwZXJjZW50IGJvb3N0IG9uCisgICAgICAg
IGh0dHA6Ly93d3cucm9ib2hvcm5ldC5vcmcvdGVzdHMvcmVzaXplY29sLmh0bWwKKyAgICAgICAg
SG93ZXZlciwgSSB0aGluayB0aGUgbG9naWNhbFdpZHRoRnJvbVRhYmxlQ29sdW1uIHNwbGl0IGl0
IGtpbmRhIG5pY2UKKyAgICAgICAgc28gSSd2ZSBkZWNpZGVkIHRvIHBvc3QgaXQgYW55d2F5Lgor
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpzbG93Q29sRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29sRWxlbWVudCk6Cisg
ICAgICAgIChSZW5kZXJUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxXaWR0aEZy
b21UYWJsZUNvbHVtbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpzdHlsZU9yQ29sTG9naWNhbFdpZHRo
KToKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisKKzIwMTItMTAtMDUgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgorCiAgICAgICAgIFJlbW92ZSBuZWVkbGVzcyB2aXJ0dWFsIGNh
bGxzIGFuZCBpbmxpbmUgUmVuZGVyU3R5bGU6OmxvZ2ljYWwqIHRvIG1ha2UgdGFibGUgbGF5b3V0
IGZhc3RlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg1NTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggYmUw
MDQ2NjExZjU1N2IyOTkzMTYwNzRkMzMwNzkwOWE2OWVkNTExNi4uNTg4YTdmNmU0MTFiMmY1ZGE4
NzQ4ODg2YzhkNmRmNzU2ZmUwOTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCkBAIC03NTQsMTAgKzc1NCw5IEBAIFJlbmRlclRhYmxlQ29sKiBSZW5kZXJUYWJs
ZTo6Zmlyc3RDb2x1bW4oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1SZW5kZXJUYWJsZUNv
bCogUmVuZGVyVGFibGU6OmNvbEVsZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFydEVkZ2Us
IGJvb2wqIGVuZEVkZ2UpIGNvbnN0CitSZW5kZXJUYWJsZUNvbCogUmVuZGVyVGFibGU6OnNsb3dD
b2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRFZGdlKSBj
b25zdAogewotICAgIGlmICghbV9oYXNDb2xFbGVtZW50cykKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgQVNTRVJUKG1faGFzQ29sRWxlbWVudHMpOwogCiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQg
PSAwOwogICAgIGZvciAoUmVuZGVyVGFibGVDb2wqIGNvbHVtblJlbmRlcmVyID0gZmlyc3RDb2x1
bW4oKTsgY29sdW1uUmVuZGVyZXI7IGNvbHVtblJlbmRlcmVyID0gY29sdW1uUmVuZGVyZXItPm5l
eHRDb2x1bW4oKSkgewpAQCAtNzc3LDcgKzc3Niw2IEBAIFJlbmRlclRhYmxlQ29sKiBSZW5kZXJU
YWJsZTo6Y29sRWxlbWVudCh1bnNpZ25lZCBjb2wsIGJvb2wqIHN0YXJ0RWRnZSwgYm9vbCogZW5k
CiAgICAgICAgICAgICByZXR1cm4gY29sdW1uUmVuZGVyZXI7CiAgICAgICAgIH0KICAgICB9Ci0K
ICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApp
bmRleCA1ODc4MDE3ZGIxNjZhNGM2MDgzZTMzNDRkNWU2OWRhZDQ5NDk3NzJjLi40M2I2MDExYTI5
YzI1MjMyMmFlMThiYzgzNzRmNmIzOGYwZmRhYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaApAQCAtMTk4LDcgKzE5OCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJu
IHRoZSBmaXJzdCBjb2x1bW4gb3IgY29sdW1uLWdyb3VwLgogICAgIFJlbmRlclRhYmxlQ29sKiBm
aXJzdENvbHVtbigpIGNvbnN0OwogCi0gICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsZW1lbnQodW5z
aWduZWQgY29sLCBib29sKiBzdGFydEVkZ2UgPSAwLCBib29sKiBlbmRFZGdlID0gMCkgY29uc3Q7
CisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFy
dEVkZ2UgPSAwLCBib29sKiBlbmRFZGdlID0gMCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFRo
ZSBjb21tb24gY2FzZSBpcyB0byBub3QgaGF2ZSBjb2x1bW5zLCBtYWtlIHRoYXQgY2FzZSBmYXN0
LgorICAgICAgICBpZiAoIW1faGFzQ29sRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHNsb3dDb2xFbGVtZW50KGNvbCwgc3RhcnRFZGdlLCBlbmRFZGdlKTsK
KyAgICB9CiAKICAgICBib29sIG5lZWRzU2VjdGlvblJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIG1f
bmVlZHNTZWN0aW9uUmVjYWxjOyB9CiAgICAgdm9pZCBzZXROZWVkc1NlY3Rpb25SZWNhbGMoKQpA
QCAtMjY3LDYgKzI3Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGZpcnN0
TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IGxhc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKIAorICAgIFJlbmRlclRhYmxl
Q29sKiBzbG93Q29sRWxlbWVudCh1bnNpZ25lZCBjb2wsIGJvb2wqIHN0YXJ0RWRnZSA9IDAsIGJv
b2wqIGVuZEVkZ2UgPSAwKSBjb25zdDsKKwogICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGZpcnN0
TGluZUJsb2NrKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmlu
ZGV4IDk5ZjdhZTc2YzAzNzJmZTNiZWFmNjlkNThiNTQzMmRmNTI3NTA5NzQuLmQ3OTNkZWYxYmRk
MmZiN2JjMzU3OTgyNDdjM2M0ZTdkMDYxODYxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xNDQsNDQgKzE0NCwzOCBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbEhlaWdodEZvclJvd1NpemluZygpIGNvbnN0CiAgICAg
cmV0dXJuIG1heChzdHlsZUxvZ2ljYWxIZWlnaHQsIGFkanVzdGVkTG9naWNhbEhlaWdodCk7CiB9
CiAKLUxlbmd0aCBSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKSBjb25z
dAotewotICAgIExlbmd0aCB3ID0gc3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7Ci0gICAgaWYgKCF3
LmlzQXV0bygpKQotICAgICAgICByZXR1cm4gdzsKLQotICAgIGlmIChSZW5kZXJUYWJsZUNvbCog
dGFibGVDb2wgPSB0YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKSkgewotICAgICAgICB1bnNpZ25l
ZCBjb2xTcGFuQ291bnQgPSBjb2xTcGFuKCk7Ci0KLSAgICAgICAgTGVuZ3RoIGNvbFdpZHRoU3Vt
ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBj
b2xTcGFuQ291bnQ7IGkrKykgewotICAgICAgICAgICAgTGVuZ3RoIGNvbFdpZHRoID0gdGFibGVD
b2wtPnN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpOwotCi0gICAgICAgICAgICAvLyBQZXJjZW50YWdl
IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBvbmx5IGZvciBjb2xTcGFuID09IDEuCi0gICAgICAg
ICAgICAvLyBPdGhlcndpc2Ugd2UgcmV0dXJuIG9yaWdpbmFsIHdpZHRoIGZvciB0aGUgY2VsbC4K
LSAgICAgICAgICAgIGlmICghY29sV2lkdGguaXNGaXhlZCgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbFNwYW5Db3VudCA+IDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB3OwotICAg
ICAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgY29sV2lkdGhTdW0gPSBMZW5ndGgoY29sV2lkdGhTdW0udmFsdWUoKSArIGNvbFdpZHRoLnZh
bHVlKCksIEZpeGVkKTsKLQotICAgICAgICAgICAgdGFibGVDb2wgPSB0YWJsZUNvbC0+bmV4dENv
bHVtbigpOwotICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8Y29sPiB0YWcgZm91bmQgZm9yIHRo
ZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBmb3Igbm93LgotICAgICAgICAgICAg
aWYgKCF0YWJsZUNvbCkKLSAgICAgICAgICAgICAgICBicmVhazsKK0xlbmd0aCBSZW5kZXJUYWJs
ZUNlbGw6OmxvZ2ljYWxXaWR0aEZyb21UYWJsZUNvbHVtbihSZW5kZXJUYWJsZUNvbCogZmlyc3RD
b2xGb3JUaGlzQ2VsbCwgTGVuZ3RoIHdpZHRoRnJvbVN0eWxlKSBjb25zdAoreworICAgIEFTU0VS
VChmaXJzdENvbEZvclRoaXNDZWxsICYmIGZpcnN0Q29sRm9yVGhpc0NlbGwgPT0gdGFibGUoKS0+
Y29sRWxlbWVudChjb2woKSkpOworICAgIFJlbmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IGZpcnN0
Q29sRm9yVGhpc0NlbGw7CisKKyAgICB1bnNpZ25lZCBjb2xTcGFuQ291bnQgPSBjb2xTcGFuKCk7
CisgICAgTGVuZ3RoIGNvbFdpZHRoU3VtID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgIExlbmd0aCBj
b2xXaWR0aCA9IHRhYmxlQ29sLT5zdHlsZSgpLT5sb2dpY2FsV2lkdGgoKTsKKworICAgICAgICAv
LyBQZXJjZW50YWdlIHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBvbmx5IGZvciBjb2xTcGFuID09
IDEuCisgICAgICAgIC8vIE90aGVyd2lzZSB3ZSByZXR1cm4gb3JpZ2luYWwgd2lkdGggZm9yIHRo
ZSBjZWxsLgorICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAgICAg
aWYgKGNvbFNwYW5Db3VudCA+IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdpZHRoRnJvbVN0
eWxlOworICAgICAgICAgICAgcmV0dXJuIGNvbFdpZHRoOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gQ29sdW1uIHdpZHRocyBzcGVjaWZpZWQgb24gPGNvbD4gYXBwbHkgdG8gdGhlIGJvcmRlciBi
b3ggb2YgdGhlIGNlbGwuCi0gICAgICAgIC8vIFBlcmNlbnRhZ2VzIGRvbid0IG5lZWQgdG8gYmUg
aGFuZGxlZCBzaW5jZSB0aGV5J3JlIGFsd2F5cyB0cmVhdGVkIHRoaXMgd2F5IChldmVuIHdoZW4g
c3BlY2lmaWVkIG9uIHRoZSBjZWxscykuCi0gICAgICAgIC8vIFNlZSBCdWd6aWxsYSBidWcgODEy
NiBmb3IgZGV0YWlscy4KLSAgICAgICAgaWYgKGNvbFdpZHRoU3VtLmlzRml4ZWQoKSAmJiBjb2xX
aWR0aFN1bS52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKG1h
eCgwLjBmLCBjb2xXaWR0aFN1bS52YWx1ZSgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0
aCgpKSwgRml4ZWQpOwotICAgICAgICByZXR1cm4gY29sV2lkdGhTdW07CisgICAgICAgIGNvbFdp
ZHRoU3VtID0gTGVuZ3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xXaWR0aC52YWx1ZSgpLCBG
aXhlZCk7CisKKyAgICAgICAgdGFibGVDb2wgPSB0YWJsZUNvbC0+bmV4dENvbHVtbigpOworICAg
ICAgICAvLyBJZiBubyBuZXh0IDxjb2w+IHRhZyBmb3VuZCBmb3IgdGhlIHNwYW4gd2UganVzdCBy
ZXR1cm4gd2hhdCB3ZSBoYXZlIGZvciBub3cuCisgICAgICAgIGlmICghdGFibGVDb2wpCisgICAg
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gdzsKKyAgICAvLyBDb2x1bW4gd2lk
dGhzIHNwZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2Vs
bC4KKyAgICAvLyBQZXJjZW50YWdlcyBkb24ndCBuZWVkIHRvIGJlIGhhbmRsZWQgc2luY2UgdGhl
eSdyZSBhbHdheXMgdHJlYXRlZCB0aGlzIHdheSAoZXZlbiB3aGVuIHNwZWNpZmllZCBvbiB0aGUg
Y2VsbHMpLgorICAgIC8vIFNlZSBCdWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWlscy4KKyAgICBp
ZiAoY29sV2lkdGhTdW0uaXNGaXhlZCgpICYmIGNvbFdpZHRoU3VtLnZhbHVlKCkgPiAwKQorICAg
ICAgICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMC4wZiwgY29sV2lkdGhTdW0udmFsdWUoKSAt
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSksIEZpeGVkKTsKKyAgICByZXR1cm4gY29s
V2lkdGhTdW07CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgK
aW5kZXggODQxY2UxYzdhNDQzNjQ5ZjM5NjFlNzZhNWI1NjhjYTIzNTM1OWQ5Ni4uZTE2MjE4OWNi
ZjhiN2QzM2NkODM1MmFhODFjM2FmMDhhOGNjNDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtODAsNyArODAsMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcm93KCktPnJvd0luZGV4KCk7CiAgICAgfQogCi0gICAgTGVuZ3RoIHN0eWxlT3JD
b2xMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICBMZW5ndGggc3R5bGVPckNvbExvZ2ljYWxXaWR0
aCgpIGNvbnN0CisgICAgeworICAgICAgICBMZW5ndGggc3R5bGVXaWR0aCA9IHN0eWxlKCktPmxv
Z2ljYWxXaWR0aCgpOworICAgICAgICBpZiAoIXN0eWxlV2lkdGguaXNBdXRvKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3R5bGVXaWR0aDsKKyAgICAgICAgaWYgKFJlbmRlclRhYmxlQ29sKiB0YWJs
ZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpKQorICAgICAgICAgICAgcmV0dXJuIGxv
Z2ljYWxXaWR0aEZyb21UYWJsZUNvbHVtbih0YWJsZUNvbCwgc3R5bGVXaWR0aCk7CisgICAgICAg
IHJldHVybiBzdHlsZVdpZHRoOworICAgIH0KIAogICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdo
dEZvclJvd1NpemluZygpIGNvbnN0OwogCkBAIC0yMzcsNiArMjQ1LDggQEAgcHJpdmF0ZToKICAg
ICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb21wdXRlQ29sbGFwc2VkQmVmb3JlQm9yZGVyKEluY2x1
ZGVCb3JkZXJDb2xvck9yTm90ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsKICAgICBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIoSW5jbHVkZUJvcmRl
ckNvbG9yT3JOb3QgPSBJbmNsdWRlQm9yZGVyQ29sb3IpIGNvbnN0OwogCisgICAgTGVuZ3RoIGxv
Z2ljYWxXaWR0aEZyb21UYWJsZUNvbHVtbihSZW5kZXJUYWJsZUNvbCogZmlyc3RDb2xGb3JUaGlz
Q2VsbCwgTGVuZ3RoIHdpZHRoRnJvbVN0eWxlKSBjb25zdDsKKwogICAgIHZvaWQgdXBkYXRlQ29s
QW5kUm93U3BhbkZsYWdzKCk7CiAKICAgICB1bnNpZ25lZCBwYXJzZVJvd1NwYW5Gcm9tRE9NKCkg
Y29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167631</attachid>
            <date>2012-10-08 15:30:40 -0700</date>
            <delta_ts>2012-10-08 15:59:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98566-20121008152942.patch</filename>
            <type>text/plain</type>
            <size>7838</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0Mjg1NTIwNGE2YzJj
YTM3YjVhYThhN2IxOGU5ZGMyMzkwZmYyMy4uNjg1MThlMzQwZWJlYjE0YzI4NWFlZTE2NDk4MjU0
NWY0NzI3ZDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEwLTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5vLWNvbHVtbiB0YWJs
ZS1sYXlvdXQgY2FzZXMgYSBsaXR0bGUgZmFzdGVyIHdpdGggaW5saW5pbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTY2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSnVsaWVuIENoYWZmcmFpeC4KKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBhbG1v
c3Qgbm90IHdvcnRoIGl0IGF0IG9ubHkgYSBjb3VwbGUgcGVyY2VudCBib29zdCBvbgorICAgICAg
ICBodHRwOi8vd3d3LnJvYm9ob3JuZXQub3JnL3Rlc3RzL3Jlc2l6ZWNvbC5odG1sCisgICAgICAg
IEhvd2V2ZXIsIEkgdGhpbmsgdGhlIGxvZ2ljYWxXaWR0aEZyb21UYWJsZUNvbHVtbiBzcGxpdCBp
dCBraW5kYSBuaWNlCisgICAgICAgIHNvIEkndmUgZGVjaWRlZCB0byBwb3N0IGl0IGFueXdheS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6c2xvd0NvbEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbEVsZW1lbnQpOgor
ICAgICAgICAoUmVuZGVyVGFibGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpsb2dpY2FsV2lkdGhG
cm9tVGFibGVDb2x1bW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbExvZ2ljYWxXaWR0
aCk6CisgICAgICAgIChSZW5kZXJUYWJsZUNlbGwpOgorCiAyMDEyLTEwLTA4ICBNaWtlIFdlc3Qg
IDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTnVsbC1jaGVjayBmb3IgRE9NV2luZG93
IGJlZm9yZSBmZWVkaW5nIGl0IHRvIEZlYXR1cmVPYnNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGJlMDA0NjYxMWY1NTdiMjk5MzE2MDc0ZDMzMDc5
MDlhNjllZDUxMTYuLjFmMjkyODkyOTg4NzVkOWE3YTA4YTZlNWVjMDZkYWQxZTAyNmQ2N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtNzU0LDEwICs3NTQs
OSBAQCBSZW5kZXJUYWJsZUNvbCogUmVuZGVyVGFibGU6OmZpcnN0Q29sdW1uKCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotUmVuZGVyVGFibGVDb2wqIFJlbmRlclRhYmxlOjpjb2xFbGVtZW50
KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRFZGdlKSBjb25zdAorUmVu
ZGVyVGFibGVDb2wqIFJlbmRlclRhYmxlOjpzbG93Q29sRWxlbWVudCh1bnNpZ25lZCBjb2wsIGJv
b2wqIHN0YXJ0RWRnZSwgYm9vbCogZW5kRWRnZSkgY29uc3QKIHsKLSAgICBpZiAoIW1faGFzQ29s
RWxlbWVudHMpCi0gICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX2hhc0NvbEVsZW1lbnRz
KTsKIAogICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gMDsKICAgICBmb3IgKFJlbmRlclRhYmxl
Q29sKiBjb2x1bW5SZW5kZXJlciA9IGZpcnN0Q29sdW1uKCk7IGNvbHVtblJlbmRlcmVyOyBjb2x1
bW5SZW5kZXJlciA9IGNvbHVtblJlbmRlcmVyLT5uZXh0Q29sdW1uKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggNTg3ODAxN2RiMTY2YTRjNjA4M2UzMzQ0ZDVl
NjlkYWQ0OTQ5NzcyYy4uZjU4ZjFjYjYzMGRiMmE5ZTNiNDNjNDFlMjJiNWI4NWM0Mzc2OTU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTE5OCw3ICsxOTgsMTMg
QEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgZmlyc3QgY29sdW1uIG9yIGNvbHVtbi1ncm91
cC4KICAgICBSZW5kZXJUYWJsZUNvbCogZmlyc3RDb2x1bW4oKSBjb25zdDsKIAotICAgIFJlbmRl
clRhYmxlQ29sKiBjb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlID0gMCwg
Ym9vbCogZW5kRWRnZSA9IDApIGNvbnN0OworICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbGVtZW50
KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlID0gMCwgYm9vbCogZW5kRWRnZSA9IDApIGNv
bnN0CisgICAgeworICAgICAgICAvLyBUaGUgY29tbW9uIGNhc2UgaXMgdG8gbm90IGhhdmUgY29s
dW1ucywgbWFrZSB0aGF0IGNhc2UgZmFzdC4KKyAgICAgICAgaWYgKCFtX2hhc0NvbEVsZW1lbnRz
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzbG93Q29sRWxlbWVudChj
b2wsIHN0YXJ0RWRnZSwgZW5kRWRnZSk7CisgICAgfQogCiAgICAgYm9vbCBuZWVkc1NlY3Rpb25S
ZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU2VjdGlvblJlY2FsYzsgfQogICAgIHZvaWQg
c2V0TmVlZHNTZWN0aW9uUmVjYWxjKCkKQEAgLTI2Nyw2ICsyNzMsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsYXN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZF
UlJJREU7CiAKKyAgICBSZW5kZXJUYWJsZUNvbCogc2xvd0NvbEVsZW1lbnQodW5zaWduZWQgY29s
LCBib29sKiBzdGFydEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNvbnN0OworCiAgICAgdmlydHVhbCBS
ZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRmlyc3RMZXR0ZXIoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKaW5kZXggOTlmN2FlNzZjMDM3MmZlM2JlYWY2OWQ1OGI1NDMyZGY1Mjc1
MDk3NC4uOWVmN2YzZGY0MTEzNDBiZDMyOTY5NTllMmI2OWJiMDhkNzIxZWViNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTE0NCw0NCArMTQ0
LDM2IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpsb2dpY2FsSGVpZ2h0Rm9yUm93U2l6
aW5nKCkgY29uc3QKICAgICByZXR1cm4gbWF4KHN0eWxlTG9naWNhbEhlaWdodCwgYWRqdXN0ZWRM
b2dpY2FsSGVpZ2h0KTsKIH0KIAotTGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbExv
Z2ljYWxXaWR0aCgpIGNvbnN0Ci17Ci0gICAgTGVuZ3RoIHcgPSBzdHlsZSgpLT5sb2dpY2FsV2lk
dGgoKTsKLSAgICBpZiAoIXcuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiB3OwotCi0gICAgaWYg
KFJlbmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIGNvbFNwYW5Db3VudCA9IGNvbFNwYW4oKTsKLQotICAgICAgICBM
ZW5ndGggY29sV2lkdGhTdW0gPSBMZW5ndGgoMCwgRml4ZWQpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBMZW5ndGgg
Y29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7Ci0KLSAgICAgICAg
ICAgIC8vIFBlcmNlbnRhZ2UgdmFsdWUgc2hvdWxkIGJlIHJldHVybmVkIG9ubHkgZm9yIGNvbFNw
YW4gPT0gMS4KLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSByZXR1cm4gb3JpZ2luYWwgd2lk
dGggZm9yIHRoZSBjZWxsLgotICAgICAgICAgICAgaWYgKCFjb2xXaWR0aC5pc0ZpeGVkKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoY29sU3BhbkNvdW50ID4gMSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHc7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbFdpZHRoOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBjb2xXaWR0aFN1bSA9IExlbmd0aChjb2xXaWR0aFN1bS52YWx1
ZSgpICsgY29sV2lkdGgudmFsdWUoKSwgRml4ZWQpOwotCi0gICAgICAgICAgICB0YWJsZUNvbCA9
IHRhYmxlQ29sLT5uZXh0Q29sdW1uKCk7Ci0gICAgICAgICAgICAvLyBJZiBubyBuZXh0IDxjb2w+
IHRhZyBmb3VuZCBmb3IgdGhlIHNwYW4gd2UganVzdCByZXR1cm4gd2hhdCB3ZSBoYXZlIGZvciBu
b3cuCi0gICAgICAgICAgICBpZiAoIXRhYmxlQ29sKQotICAgICAgICAgICAgICAgIGJyZWFrOwor
TGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbFdpZHRoRnJvbUNvbHVtbnMoUmVuZGVyVGFi
bGVDb2wqIGZpcnN0Q29sRm9yVGhpc0NlbGwsIExlbmd0aCB3aWR0aEZyb21TdHlsZSkgY29uc3QK
K3sKKyAgICBBU1NFUlQoZmlyc3RDb2xGb3JUaGlzQ2VsbCAmJiBmaXJzdENvbEZvclRoaXNDZWxs
ID09IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpKTsKKyAgICBSZW5kZXJUYWJsZUNvbCogdGFi
bGVDb2wgPSBmaXJzdENvbEZvclRoaXNDZWxsOworCisgICAgdW5zaWduZWQgY29sU3BhbkNvdW50
ID0gY29sU3BhbigpOworICAgIGludCBjb2xXaWR0aFN1bSA9IDA7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8PSBjb2xTcGFuQ291bnQ7IGkrKykgeworICAgICAgICBMZW5ndGggY29sV2lk
dGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+bG9naWNhbFdpZHRoKCk7CisKKyAgICAgICAgLy8gUGVy
Y2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgY29sU3BhbiA9PSAxLgor
ICAgICAgICAvLyBPdGhlcndpc2Ugd2UgcmV0dXJuIG9yaWdpbmFsIHdpZHRoIGZvciB0aGUgY2Vs
bC4KKyAgICAgICAgaWYgKCFjb2xXaWR0aC5pc0ZpeGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChj
b2xTcGFuQ291bnQgPiAxKQorICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aEZyb21TdHlsZTsK
KyAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENv
bHVtbiB3aWR0aHMgc3BlY2lmaWVkIG9uIDxjb2w+IGFwcGx5IHRvIHRoZSBib3JkZXIgYm94IG9m
IHRoZSBjZWxsLgotICAgICAgICAvLyBQZXJjZW50YWdlcyBkb24ndCBuZWVkIHRvIGJlIGhhbmRs
ZWQgc2luY2UgdGhleSdyZSBhbHdheXMgdHJlYXRlZCB0aGlzIHdheSAoZXZlbiB3aGVuIHNwZWNp
ZmllZCBvbiB0aGUgY2VsbHMpLgotICAgICAgICAvLyBTZWUgQnVnemlsbGEgYnVnIDgxMjYgZm9y
IGRldGFpbHMuCi0gICAgICAgIGlmIChjb2xXaWR0aFN1bS5pc0ZpeGVkKCkgJiYgY29sV2lkdGhT
dW0udmFsdWUoKSA+IDApCi0gICAgICAgICAgICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMC4w
ZiwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSks
IEZpeGVkKTsKLSAgICAgICAgcmV0dXJuIGNvbFdpZHRoU3VtOworICAgICAgICBjb2xXaWR0aFN1
bSArPSBjb2xXaWR0aC52YWx1ZSgpOworICAgICAgICB0YWJsZUNvbCA9IHRhYmxlQ29sLT5uZXh0
Q29sdW1uKCk7CisgICAgICAgIC8vIElmIG5vIG5leHQgPGNvbD4gdGFnIGZvdW5kIGZvciB0aGUg
c3BhbiB3ZSBqdXN0IHJldHVybiB3aGF0IHdlIGhhdmUgZm9yIG5vdy4KKyAgICAgICAgaWYgKCF0
YWJsZUNvbCkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB3OworICAg
IC8vIENvbHVtbiB3aWR0aHMgc3BlY2lmaWVkIG9uIDxjb2w+IGFwcGx5IHRvIHRoZSBib3JkZXIg
Ym94IG9mIHRoZSBjZWxsLCBzZWUgYnVnIDgxMjYuCisgICAgLy8gRklYTUU6IFdoeSBpcyBib3Jk
ZXIvcGFkZGluZyBpZ25vcmVkIGluIHRoZSBuZWdhdGl2ZSB3aWR0aCBjYXNlPworICAgIGlmIChj
b2xXaWR0aFN1bSA+IDApCisgICAgICAgIHJldHVybiBMZW5ndGgobWF4KDAsIGNvbFdpZHRoU3Vt
IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLmNlaWwoKSksIEZpeGVkKTsKKyAgICBy
ZXR1cm4gTGVuZ3RoKGNvbFdpZHRoU3VtLCBGaXhlZCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggODQxY2UxYzdhNDQzNjQ5ZjM5NjFlNzZhNWI1
NjhjYTIzNTM1OWQ5Ni4uNDVjN2FlNTMxYzA2YjMxODk1NTBiNjcxMTY2ZmQ4OGU2MWQwMDFmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtODAsNyAr
ODAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcm93KCktPnJvd0luZGV4KCk7CiAgICAg
fQogCi0gICAgTGVuZ3RoIHN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICBMZW5n
dGggc3R5bGVPckNvbExvZ2ljYWxXaWR0aCgpIGNvbnN0CisgICAgeworICAgICAgICBMZW5ndGgg
c3R5bGVXaWR0aCA9IHN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpOworICAgICAgICBpZiAoIXN0eWxl
V2lkdGguaXNBdXRvKCkpCisgICAgICAgICAgICByZXR1cm4gc3R5bGVXaWR0aDsKKyAgICAgICAg
aWYgKFJlbmRlclRhYmxlQ29sKiBmaXJzdENvbHVtbiA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29s
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aEZyb21Db2x1bW5zKGZpcnN0Q29s
dW1uLCBzdHlsZVdpZHRoKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlV2lkdGg7CisgICAgfQogCiAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yUm93U2l6aW5nKCkgY29uc3Q7CiAKQEAgLTIz
Nyw2ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbXB1dGVD
b2xsYXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgPSBJbmNsdWRlQm9y
ZGVyQ29sb3IpIGNvbnN0OwogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbXB1dGVDb2xsYXBz
ZWRBZnRlckJvcmRlcihJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCA9IEluY2x1ZGVCb3JkZXJDb2xv
cikgY29uc3Q7CiAKKyAgICBMZW5ndGggbG9naWNhbFdpZHRoRnJvbUNvbHVtbnMoUmVuZGVyVGFi
bGVDb2wqIGZpcnN0Q29sRm9yVGhpc0NlbGwsIExlbmd0aCB3aWR0aEZyb21TdHlsZSkgY29uc3Q7
CisKICAgICB2b2lkIHVwZGF0ZUNvbEFuZFJvd1NwYW5GbGFncygpOwogCiAgICAgdW5zaWduZWQg
cGFyc2VSb3dTcGFuRnJvbURPTSgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>