<?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>37515</bug_id>
          
          <creation_ts>2010-04-13 12:10:45 -0700</creation_ts>
          <short_desc>getPathSegAtLength() gives incorrect value</short_desc>
          <delta_ts>2011-03-09 13:21:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://svgtorture.googlecode.com/svn/trunk/automated/test.html?SVGPathElement%20module%3A%20Supports%20getPathSegAtLength%28%29</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="Alexis Deveria">adeveria</reporter>
          <assigned_to name="Robin Qiu">robin.qiu</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>phrogz</cc>
    
    <cc>robin.qiu</cc>
    
    <cc>staikos</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212039</commentid>
    <comment_count>0</comment_count>
      <attachid>53270</attachid>
    <who name="Alexis Deveria">adeveria</who>
    <bug_when>2010-04-13 12:10:45 -0700</bug_when>
    <thetext>Created attachment 53270
Testcase that alerts the index returned by getPathSegAtLength()

On a simple path using this data: &quot;M0,0 L0,5 L0,10&quot;, using getPathSegAtLength(7) should return the number 2. Instead, it returns the number 1. 

Currently Opera gets this wrong too, while Gecko gets it right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220953</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-04 21:16:32 -0700</bug_when>
    <thetext>According to the spec: &quot;The index of the path segment, where the first path segment is number 0.&quot;  I think the return value should be 1.  However, there is indeed a bug in this function, because getPathSegAtLength(2) and getPathSegAtLength(7) both return 1. 

By the way, assuming the index of the path segment starts from 1, Firefox is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220978</commentid>
    <comment_count>2</comment_count>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-05 00:12:38 -0700</bug_when>
    <thetext>There is a tiny misktake in  SVGPathSegList::getPathSegAtLength(). I&apos;m going to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221002</commentid>
    <comment_count>3</comment_count>
      <attachid>55096</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-05 01:11:24 -0700</bug_when>
    <thetext>Created attachment 55096
Fixed this bug and added a test case.

Fixed this bug and added a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222327</commentid>
    <comment_count>4</comment_count>
      <attachid>55096</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-07 06:47:36 -0700</bug_when>
    <thetext>Comment on attachment 55096
Fixed this bug and added a test case.

r-, some comments:

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 6715cab..8bb4169 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,13 @@
&gt; +2010-05-05  Robin Qiu  &lt;robin.qiu@torchmobile.com.cn&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fix a bug in SVGPathSegList::getPathSegAtLength().
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=37515

The ChangeLog needs to be much more explicit :-) Please describe in detail what was broken, and what is fixed now.


&gt; +++ b/LayoutTests/svg/dom/svgpath-getPathSegAtLength.html
&gt; @@ -0,0 +1,28 @@
&gt; +&lt;!DOCTYPE html&gt;
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../../fast/js/resources/js-test-style.css&quot;&gt;
&gt; +&lt;script src=&quot;../../fast/js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; +&lt;script&gt;
&gt; +    description(&quot;Test SVG path.getPathSegAtLength().&quot;);
&gt; +    path = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;path&quot;);
&gt; +    path.setAttributeNS(null, &quot;d&quot;, &quot;M0 0 L0 5 L5 5 L 5 0&quot;);
&gt; +    var segIndex = [ path.getPathSegAtLength(0),
&gt; +                        path.getPathSegAtLength(1),
&gt; +                        path.getPathSegAtLength(5),
&gt; +                        path.getPathSegAtLength(6),
&gt; +                        path.getPathSegAtLength(10),
&gt; +                        path.getPathSegAtLength(11),
&gt; +                        path.getPathSegAtLength(16)];
&gt; +    shouldBe(&quot;segIndex.toString()&quot;, &quot;&apos;0,0,1,1,2,2,0&apos;&quot;);
&gt; +    successfullyParsed = true;
&gt; +&lt;/script&gt;
&gt; +&lt;script src=&quot;../../fast/js/resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;
In general this looks fine, though the prefered style is to add a new svgpath-getPathSegAtLength.js file in svg/dom/script-tests.
See svg/dom/id-reflect.html &amp; svg/dom/script-tests/id-reflect.js as example template. Should be trivial to change.
A comment within the test would also be nice, to why the segIndex should look like this.
I&apos;d advice to use &quot;shouldBe&quot; though, as it&apos;s much easier to read in the expected output.
IIRC: shouldBe(&quot;path.getPathSegAtLength(0)&quot;, &quot;0&quot;); etc..
This will include the actual command that you&apos;re executing in the expected.txt file.


&gt; +2010-05-05  Robin Qiu  &lt;robin.qiu@torchmobile.com.cn&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fix a bug in SVGPathSegList::getPathSegAtLength().
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=37515
&gt; +
&gt; +        Test: svg/dom/svgpath-getPathSegAtLength.html

Same as above, needs better explaination.

&gt; -unsigned SVGPathSegList::getPathSegAtLength(double, ExceptionCode&amp; ec)
&gt; +unsigned SVGPathSegList::getPathSegAtLength(double length, ExceptionCode&amp; ec)
&gt;  {
&gt;      // FIXME : to be useful this will need to support non-normalized SVGPathSegLists
&gt;      int len = numberOfItems();
&gt;      // FIXME: Eventually this will likely move to a &quot;path applier&quot;-like model, until then PathTraversalState is less useful as we could just use locals
&gt;      PathTraversalState traversalState(PathTraversalState::TraversalSegmentAtLength);
&gt; +    traversalState.m_desiredLength = length;
&gt;      for (int i = 0; i &lt; len; ++i) {
&gt;          SVGPathSeg* segment = getItem(i, ec).get();
&gt;          if (ec)
&gt; @@ -90,6 +91,8 @@ unsigned SVGPathSegList::getPathSegAtLength(double, ExceptionCode&amp; ec)
&gt;              ASSERT(false); // FIXME: This only works with normalized/processed path data.
&gt;              break;
&gt;          }
&gt; +        if (!segmentLength)
&gt; +            continue;
&gt;          traversalState.m_totalLength += segmentLength;
&gt;          if ((traversalState.m_action == PathTraversalState::TraversalSegmentAtLength)
&gt;              &amp;&amp; (traversalState.m_totalLength &gt; traversalState.m_desiredLength)) {

Wow, I wouldn&apos;t have expected it&apos;s so easy to implement. I wonder that this doesn&apos;t have any side effects :-)
Can you elaborate a bit more here to why this is correct? Maybe my question is resolved with a better ChangeLog!

Thanks a lot for tackling this,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222766</commentid>
    <comment_count>5</comment_count>
      <attachid>55450</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-07 19:51:23 -0700</bug_when>
    <thetext>Created attachment 55450
Modified according to Niko&apos;s comment.

This bug is just a misktake: almost all of the code is OK, but the parameter is not used at all, therefore, this function always returns &quot;1&quot;.

Another tiny problem is that the SVG spec says the index of the first path segment is number 0, but we start from number 1.
(By the way, Firefox starts from 1 as well), So I added this code to let it start from 0. 

+        if (!segmentLength)
+            continue

Here is a question, does &quot;M0 0 L5 5 L5 5 L10 10&quot; equal to &quot;M0 0 L5 5 L10 10&quot; ? 
If not, those two line code I added is incorrect, I will put it right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222768</commentid>
    <comment_count>6</comment_count>
      <attachid>55452</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-07 19:54:22 -0700</bug_when>
    <thetext>Created attachment 55452
Forgot to set &quot;review ?&quot;.  Modified according to Niko&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222797</commentid>
    <comment_count>7</comment_count>
      <attachid>55452</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-07 22:15:40 -0700</bug_when>
    <thetext>Comment on attachment 55452
Forgot to set &quot;review ?&quot;.  Modified according to Niko&apos;s comment.

WebCore/svg/SVGPathSegList.cpp:96
 +          if (!segmentLength)
Almost r+, the test is perfect. Just this line bugs me, from a SVG DOM perspective, &quot;M 5 5&quot; and &quot;M 5 5 M 5 5&quot; are two different path segments, no matter how it&apos;s rendered.
Also how can you be sure this is just a &quot;move&quot;? And why is the first move the one ignored? I guess this is not correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222826</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-07 23:32:02 -0700</bug_when>
    <thetext>Okay, I&apos;ve tried the testcase across the SVG implementations:

Safari 4 (latest release)
FAIL path.getPathSegAtLength(0) should be 0. Was 1.
FAIL path.getPathSegAtLength(1) should be 0. Was 1.
PASS path.getPathSegAtLength(5) is 1
PASS path.getPathSegAtLength(6) is 1
FAIL path.getPathSegAtLength(10) should be 2. Was 1.
FAIL path.getPathSegAtLength(11) should be 2. Was 1.
FAIL path.getPathSegAtLength(16) should be 0. Was 1.

Opera 10.10

FAIL path.getPathSegAtLength(0) should be 0. Was 2.
FAIL path.getPathSegAtLength(1) should be 0. Was 2.
FAIL path.getPathSegAtLength(5) should be 1. Was 2.
FAIL path.getPathSegAtLength(6) should be 1. Was 2.
PASS path.getPathSegAtLength(10) is 2
PASS path.getPathSegAtLength(11) is 2
FAIL path.getPathSegAtLength(16) should be 0. Was 3.

FireFox trunk (Minefield)

PASS path.getPathSegAtLength(0) is 0
FAIL path.getPathSegAtLength(1) should be 0. Was 1.
PASS path.getPathSegAtLength(5) is 1
FAIL path.getPathSegAtLength(6) should be 1. Was 2.
PASS path.getPathSegAtLength(10) is 2
FAIL path.getPathSegAtLength(11) should be 2. Was 3.
FAIL path.getPathSegAtLength(16) should be 0. Was 3.

I think FireFox does it right.
The path is auto-closed because of the last segment, so the distance=16 should actually say 3 IMHO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222830</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-07 23:59:10 -0700</bug_when>
    <thetext>Some more results on distances that exceed the actual path length, Opera/FF always return the last segment, we should mimic that.

PASS path.getPathSegAtLength(20) is 3
PASS path.getPathSegAtLength(24) is 3
PASS path.getPathSegAtLength(25) is 3
PASS path.getPathSegAtLength(100) is 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222849</commentid>
    <comment_count>10</comment_count>
      <attachid>55468</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-08 00:44:27 -0700</bug_when>
    <thetext>Created attachment 55468
3rd patch

Thanks for Niko&apos;s comment!

According to his comment, I changed some code, now, WebKit/Opera/FF all return the last path segment if the distance exceeds the actual path length, and also added some code in test case to verify this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222850</commentid>
    <comment_count>11</comment_count>
      <attachid>55468</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-08 00:53:20 -0700</bug_when>
    <thetext>Comment on attachment 55468
3rd patch

WebCore/svg/SVGPathSegList.cpp:103
 +      return --traversalState.m_segmentIndex;
Hm, why is that? Just return &quot;traversalState.m_segmentIndex - 1&quot;. That saves one assignment operation :-)
Sorry for that, but r- :( Other than that it looks very good, If you change that last thing, I&apos;m going to set r+/cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222868</commentid>
    <comment_count>12</comment_count>
      <attachid>55473</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-08 05:51:19 -0700</bug_when>
    <thetext>Created attachment 55473
4th edition

Changed the last line. 
I admit that &quot; return --traversalState.m_segmentIndex; &quot; really looks a little strange. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223007</commentid>
    <comment_count>13</comment_count>
      <attachid>55473</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-09 01:32:31 -0700</bug_when>
    <thetext>Comment on attachment 55473
4th edition

Good patch, r=me! Should land soon...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223012</commentid>
    <comment_count>14</comment_count>
      <attachid>55473</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-09 01:57:45 -0700</bug_when>
    <thetext>Comment on attachment 55473
4th edition

Rejecting patch 55473 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
 setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/i386/SVGPathSegList.o /Users/eseidel/Projects/CommitQueue/WebCore/svg/SVGPathSegList.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://webkit-commit-queue.appspot.com/results/2199083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223075</commentid>
    <comment_count>15</comment_count>
      <attachid>55473</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 14:05:59 -0700</bug_when>
    <thetext>Comment on attachment 55473
4th edition

I kinda dislike the behavior of returning the last path segment when you go past the path end, but I guess that makes the API more user friendly.  Glad we&apos;re finally adding testing!  That&apos;s why the method didn&apos;t work before was there was no testing. :)

Beautiful patch, btw.  Very well done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223076</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 14:06:56 -0700</bug_when>
    <thetext>/Users/eseidel/Projects/CommitQueue/WebCore/svg/SVGPathSegList.cpp: In member function ‘unsigned int WebCore::SVGPathSegList::getPathSegAtLength(double, WebCore::ExceptionCode&amp;)’:
/Users/eseidel/Projects/CommitQueue/WebCore/svg/SVGPathSegList.cpp:60: warning: implicit conversion shortens 64-bit value into a 32-bit value

was the error on the commit queue, btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223132</commentid>
    <comment_count>17</comment_count>
      <attachid>55515</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-09 18:47:32 -0700</bug_when>
    <thetext>Created attachment 55515
5th patch, fixed that warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223133</commentid>
    <comment_count>18</comment_count>
      <attachid>55515</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 18:55:19 -0700</bug_when>
    <thetext>Comment on attachment 55515
5th patch, fixed that warning.

Should we just have changed m_desiredLength to be a double?  I&apos;m not sure what type Path exposes for its length,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223191</commentid>
    <comment_count>19</comment_count>
      <attachid>55515</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-05-10 01:28:43 -0700</bug_when>
    <thetext>Comment on attachment 55515
5th patch, fixed that warning.

Hey Eric,

I just saw that you have already set r+, I&apos;m taking it back to r-, because of two issues:
WebCore/svg/SVGPathSegList.cpp:60
 +      traversalState.m_desiredLength = static_cast&lt;float&gt;length;
How can this compile? Missing paranthesis, it should be: static_cast&lt;float&gt;(length).
Second issue: We should not just cast double to float, but instead use &quot;narrowPrecisionToFloat&quot;.

Please upload a revised version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223220</commentid>
    <comment_count>20</comment_count>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-10 03:04:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 55515 [details])

I&apos;m really sorry for this fault. I should always check the code in any case. 
I&apos;m re-compiling all code and will do all layout tests. After that, I will upload a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223739</commentid>
    <comment_count>21</comment_count>
      <attachid>55663</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2010-05-10 22:05:08 -0700</bug_when>
    <thetext>Created attachment 55663
7 th patch

Changes in this patch:
1.  use narrowPrecisionToFloat() to converst double to float.
2. add a check before return &quot;traversalState.m_segmentIndex - 1&quot;, otherwise, it maybe return 4294967295(-1) in some occasions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223763</commentid>
    <comment_count>22</comment_count>
      <attachid>55663</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-10 22:56:59 -0700</bug_when>
    <thetext>Comment on attachment 55663
7 th patch

Great! Hopefully it lands this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224471</commentid>
    <comment_count>23</comment_count>
      <attachid>55663</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-12 01:19:31 -0700</bug_when>
    <thetext>Comment on attachment 55663
7 th patch

Clearing flags on attachment: 55663

Committed r59213: &lt;http://trac.webkit.org/changeset/59213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224472</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-12 01:19:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227308</commentid>
    <comment_count>25</comment_count>
    <who name="Alexis Deveria">adeveria</who>
    <bug_when>2010-05-18 08:06:43 -0700</bug_when>
    <thetext>Just wanted to say thanks for fixing this so fast! Great work! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364736</commentid>
    <comment_count>26</comment_count>
    <who name="Gavin Kistner">phrogz</who>
    <bug_when>2011-03-09 13:21:51 -0800</bug_when>
    <thetext>This bug appears to be correctly fixed in WebKit nightly builds, but is still present in the just-released Safari v5.0.4. How can I a) find out why it has not been accepted there, and/or b) encourage it to be applied to Safari?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>53270</attachid>
            <date>2010-04-13 12:10:45 -0700</date>
            <delta_ts>2010-04-13 12:10:45 -0700</delta_ts>
            <desc>Testcase that alerts the index returned by getPathSegAtLength()</desc>
            <filename>segatlength.svg</filename>
            <type>image/svg+xml</type>
            <size>484</size>
            <attacher name="Alexis Deveria">adeveria</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+CgkKCTxkZXNjPgoJCVRlc3QgZm9yIHBhdGgu
Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuIFNob3VsZCByZXR1cm4gIjIiCgkJYXMgdGhlIGxlbmd0aCBn
aXZlbiB3b3VsZCBiZSBvbiB0aGUgc2Vjb25kIHNlZ21lbnQuIAoJCQoJCVNlZTogaHR0cDovL3d3
dy53My5vcmcvVFIvU1ZHL3BhdGhzLmh0bWwjSW50ZXJmYWNlU1ZHUGF0aEVsZW1lbnQKCTwvZGVz
Yz4KCQoJPHBhdGggaWQ9InBhdGgiIGQ9Ik0wLDAgTDAsNSBMMCwxMCIvPgoKCTxzY3JpcHQ+PCFb
Q0RBVEFbCgkJdmFyIHBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGF0aCcpOwoJCXZh
ciBzZWdJbmRleCA9IHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDcpOwoJCWFsZXJ0KHNlZ0luZGV4
KTsKCQkKCV1dPjwvc2NyaXB0PgoKPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55096</attachid>
            <date>2010-05-05 01:11:24 -0700</date>
            <delta_ts>2010-05-10 13:00:36 -0700</delta_ts>
            <desc>Fixed this bug and added a test case.</desc>
            <filename>bug-37515.patch</filename>
            <type>text/plain</type>
            <size>4339</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi44YmI0MTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgKiBzdmcvZG9tL3N2Z3Bh
dGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3Zn
L2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAxMC0wNS0w
NCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCBleHBlY3RhdGlvbnMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcv
ZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2FhMDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBTVkcgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoKS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2VnSW5kZXgudG9TdHJpbmcoKSBpcyAn
MCwwLDEsMSwyLDIsMCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0
aFNlZ0F0TGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNl
Z0F0TGVuZ3RoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5Njg1
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRo
U2VnQXRMZW5ndGguaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IFNWRyBwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgpLiIpOwor
ICAgIHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInBhdGgiKTsKKyAgICBwYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsICJkIiwgIk0w
IDAgTDAgNSBMNSA1IEwgNSAwIik7CisgICAgdmFyIHNlZ0luZGV4ID0gWyBwYXRoLmdldFBhdGhT
ZWdBdExlbmd0aCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguZ2V0UGF0aFNlZ0F0
TGVuZ3RoKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoNSksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmdldFBhdGhTZWdBdExlbmd0aCg2
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEwKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDExKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDE2KV07CisgICAg
c2hvdWxkQmUoInNlZ0luZGV4LnRvU3RyaW5nKCkiLCAiJzAsMCwxLDEsMiwyLDAnIik7CisgICAg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmMDJmNGNjLi5iYTc3ZmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA1LTA1ICBS
b2JpbiBRaXUgIDxyb2Jpbi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBhIGJ1ZyBpbiBTVkdQYXRoU2Vn
TGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUxNQorCisgICAgICAgIFRlc3Q6IHN2Zy9kb20vc3ZncGF0
aC1nZXRQYXRoU2VnQXRMZW5ndGguaHRtbAorCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5n
dGgpOgorCiAyMDEwLTA1LTA0ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaXN0LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcApp
bmRleCAyNGJmNDU1Li41NGUxNTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCkBAIC01MSwxMiAr
NTEsMTMgQEAgU1ZHUGF0aFNlZ0xpc3Q6On5TVkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2ln
bmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlLCBFeGNlcHRpb25D
b2RlJiBlYykKK3Vuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91
YmxlIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRklYTUUgOiB0byBiZSB1
c2VmdWwgdGhpcyB3aWxsIG5lZWQgdG8gc3VwcG9ydCBub24tbm9ybWFsaXplZCBTVkdQYXRoU2Vn
TGlzdHMKICAgICBpbnQgbGVuID0gbnVtYmVyT2ZJdGVtcygpOwogICAgIC8vIEZJWE1FOiBFdmVu
dHVhbGx5IHRoaXMgd2lsbCBsaWtlbHkgbW92ZSB0byBhICJwYXRoIGFwcGxpZXIiLWxpa2UgbW9k
ZWwsIHVudGlsIHRoZW4gUGF0aFRyYXZlcnNhbFN0YXRlIGlzIGxlc3MgdXNlZnVsIGFzIHdlIGNv
dWxkIGp1c3QgdXNlIGxvY2FscwogICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0
ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCk7CisgICAgdHJh
dmVyc2FsU3RhdGUubV9kZXNpcmVkTGVuZ3RoID0gbGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0o
aSwgZWMpLmdldCgpOwogICAgICAgICBpZiAoZWMpCkBAIC05MCw2ICs5MSw4IEBAIHVuc2lnbmVk
IFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7IC8vIEZJWE1FOiBUaGlzIG9ubHkgd29y
a3Mgd2l0aCBub3JtYWxpemVkL3Byb2Nlc3NlZCBwYXRoIGRhdGEuCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBpZiAoIXNlZ21lbnRMZW5ndGgpCisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExlbmd0aCArPSBzZWdtZW50
TGVuZ3RoOwogICAgICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0aW9uID09IFBhdGhUcmF2
ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQogICAgICAgICAgICAgJiYgKHRy
YXZlcnNhbFN0YXRlLm1fdG90YWxMZW5ndGggPiB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5n
dGgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55450</attachid>
            <date>2010-05-07 19:51:23 -0700</date>
            <delta_ts>2010-05-08 00:44:27 -0700</delta_ts>
            <desc>Modified according to Niko&apos;s comment.</desc>
            <filename>bug-37515.2.patch</filename>
            <type>text/plain</type>
            <size>6125</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5lNzczNDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFub3RoZXIgdGlueSBwcm9i
bGVtIGlzIHRoYXQgdGhlIFNWRyBzcGVjIHNheXMgdGhlIGluZGV4IG9mICB0aGUgZmlyc3QKKyAg
ICAgICAgcGF0aCBzZWdtZW50IGlzIG51bWJlciAwLCBidXQgd2Ugc3RhcnQgZnJvbSBudW1iZXIg
MS4KKyAgICAgICAgU28gSSBhZGQgc29tZSBjb2RlIHRvIGxldCBpdCBzdGFydCBmcm9tIDAuIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MTUKKwor
ICAgICAgICAqIHN2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0
bWw6IEFkZGVkLgorCiAyMDEwLTA1LTA0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGV4cGVjdGF0aW9ucyBmaXguCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExl
bmd0aC5qcyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRlc3RzL3N2Z3BhdGgtZ2V0UGF0
aFNlZ0F0TGVuZ3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMzY1
ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpAQCAtMCwwICsxLDIxIEBACitkZXNjcmlwdGlv
bigiVGVzdCBTVkcgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoKS4iKTsKKy8qIAorICAgZ2V0UGF0
aFNlZ0F0TGVuZ3RoKCkgcmV0dXJucyB0aGUgaW5kZXggaW50byBwYXRoU2VnTGlzdCB3aGljaCBp
cyBkaXN0YW5jZSB1bml0cyBhbG9uZyB0aGUgcGF0aC4KKyAgIFBhcmFtZXRlcnMKKyAgIGluIGZs
b2F0IGRpc3RhbmNlICAgICAgICBUaGUgZGlzdGFuY2UgYWxvbmcgdGhlIHBhdGgsIHJlbGF0aXZl
IHRvIHRoZSBzdGFydCBvZiB0aGUgcGF0aCwgYXMgYSBkaXN0YW5jZSBpbiB0aGUgY3VycmVudCB1
c2VyIGNvb3JkaW5hdGUgc3lzdGVtLgorICAgUmV0dXJuIHZhbHVlCisgICB1bnNpZ25lZCBsb25n
ICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHBhdGggc2VnbWVudCwgd2hlcmUgdGhlIGZpcnN0IHBh
dGggc2VnbWVudCBpcyBudW1iZXIgMC4KKworICAgU2VlIHNwZWNpZmljYXRpb24gZm9yIGRldGFp
bDogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3BhdGhzLmh0bWwjRGlzdGFuY2VBbG9uZ0FQYXRo
CisqLworCitwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJwYXRoIik7CitwYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsICJkIiwgIk0w
IDAgTDAgNSBMNSA1IEwgNSAwIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MCkiLCAiMCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEpIiwgIjAiKTsK
K3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCg1KSIsICIxIik7CitzaG91bGRCZSgi
cGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoNikiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0
aFNlZ0F0TGVuZ3RoKDEwKSIsICIyIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMTEpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAi
MCIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5YTk3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3Ro
KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDApIGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMAor
UEFTUyBwYXRoLmdldFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDYpIGlzIDEKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIK
K1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRo
U2VnQXRMZW5ndGgoMTYpIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgt
Z2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0
UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzgzOWIwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc3ZncGF0aC1n
ZXRQYXRoU2VnQXRMZW5ndGguaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAyZjRjYy4uOTJjMjA2YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMC0wNS0wNSAgUm9iaW4gUWl1ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggYSBidWcgaW4gU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0aCgpLgorICAg
ICAgICBUaGlzIGJ1ZyBpcyBqdXN0IGEgbWlza3Rha2U6IGFsbW9zdCBhbGwgb2YgdGhlIGNvZGUg
aXMgT0ssIGJ1dCB0aGUKKyAgICAgICAgcGFyYW1ldGVyIGlzIG5vdCB1c2VkIGF0IGFsbCwgdGhl
cmVmb3JlLCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zCisgICAgICAgICIxIi4KKyAgICAg
ICAgQW5vdGhlciB0aW55IHByb2JsZW0gaXMgdGhhdCB0aGUgU1ZHIHNwZWMgc2F5cyB0aGUgaW5k
ZXggb2YgIHRoZSBmaXJzdAorICAgICAgICBwYXRoIHNlZ21lbnQgaXMgbnVtYmVyIDAsIGJ1dCB3
ZSBzdGFydCBmcm9tIG51bWJlciAxLgorICAgICAgICBTbyBJIGFkZCBzb21lIGNvZGUgdG8gbGV0
IGl0IHN0YXJ0IGZyb20gMC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzUxNQorCisgICAgICAgIFRlc3Q6IHN2Zy9kb20vc3ZncGF0aC1nZXRQYXRo
U2VnQXRMZW5ndGguaHRtbAorCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgpOgorCiAy
MDEwLTA1LTA0ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAppbmRleCAyNGJm
NDU1Li41ZWJiZDg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAK
KysrIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCkBAIC01MSwxMiArNTEsMTMgQEAg
U1ZHUGF0aFNlZ0xpc3Q6On5TVkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2lnbmVkIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3Vuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlIGxlbmd0
aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRklYTUUgOiB0byBiZSB1c2VmdWwgdGhp
cyB3aWxsIG5lZWQgdG8gc3VwcG9ydCBub24tbm9ybWFsaXplZCBTVkdQYXRoU2VnTGlzdHMKICAg
ICBpbnQgbGVuID0gbnVtYmVyT2ZJdGVtcygpOwogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRo
aXMgd2lsbCBsaWtlbHkgbW92ZSB0byBhICJwYXRoIGFwcGxpZXIiLWxpa2UgbW9kZWwsIHVudGls
IHRoZW4gUGF0aFRyYXZlcnNhbFN0YXRlIGlzIGxlc3MgdXNlZnVsIGFzIHdlIGNvdWxkIGp1c3Qg
dXNlIGxvY2FscwogICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJh
dmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCk7CisgICAgdHJhdmVyc2FsU3Rh
dGUubV9kZXNpcmVkTGVuZ3RoID0gbGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
OyArK2kpIHsKICAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0oaSwgZWMpLmdl
dCgpOwogICAgICAgICBpZiAoZWMpCkBAIC05MCw2ICs5MSwxMCBAQCB1bnNpZ25lZCBTVkdQYXRo
U2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGgg
bm9ybWFsaXplZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBTVkcgc3BlYzogdGhlIGluZGV4IG9m
IHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgc2hvdWxkIGJlIG51bWJlciAwLgorICAgICAgICAvLyBU
aGUgZmlyc3QgbW92ZSBzaG91bGQgYmUgaWdub3JlZDoKKyAgICAgICAgaWYgKCFzZWdtZW50TGVu
Z3RoKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRyYXZlcnNhbFN0YXRlLm1fdG90
YWxMZW5ndGggKz0gc2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKCh0cmF2ZXJzYWxTdGF0ZS5t
X2FjdGlvbiA9PSBQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCkK
ICAgICAgICAgICAgICYmICh0cmF2ZXJzYWxTdGF0ZS5tX3RvdGFsTGVuZ3RoID4gdHJhdmVyc2Fs
U3RhdGUubV9kZXNpcmVkTGVuZ3RoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55452</attachid>
            <date>2010-05-07 19:54:22 -0700</date>
            <delta_ts>2010-05-08 00:44:27 -0700</delta_ts>
            <desc>Forgot to set &quot;review ?&quot;.  Modified according to Niko&apos;s comment.</desc>
            <filename>bug-37515.2.patch</filename>
            <type>text/plain</type>
            <size>6125</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5lNzczNDBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFub3RoZXIgdGlueSBwcm9i
bGVtIGlzIHRoYXQgdGhlIFNWRyBzcGVjIHNheXMgdGhlIGluZGV4IG9mICB0aGUgZmlyc3QKKyAg
ICAgICAgcGF0aCBzZWdtZW50IGlzIG51bWJlciAwLCBidXQgd2Ugc3RhcnQgZnJvbSBudW1iZXIg
MS4KKyAgICAgICAgU28gSSBhZGQgc29tZSBjb2RlIHRvIGxldCBpdCBzdGFydCBmcm9tIDAuIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MTUKKwor
ICAgICAgICAqIHN2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0
bWw6IEFkZGVkLgorCiAyMDEwLTA1LTA0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGV4cGVjdGF0aW9ucyBmaXguCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExl
bmd0aC5qcyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc2NyaXB0LXRlc3RzL3N2Z3BhdGgtZ2V0UGF0
aFNlZ0F0TGVuZ3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMzY1
ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpAQCAtMCwwICsxLDIxIEBACitkZXNjcmlwdGlv
bigiVGVzdCBTVkcgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoKS4iKTsKKy8qIAorICAgZ2V0UGF0
aFNlZ0F0TGVuZ3RoKCkgcmV0dXJucyB0aGUgaW5kZXggaW50byBwYXRoU2VnTGlzdCB3aGljaCBp
cyBkaXN0YW5jZSB1bml0cyBhbG9uZyB0aGUgcGF0aC4KKyAgIFBhcmFtZXRlcnMKKyAgIGluIGZs
b2F0IGRpc3RhbmNlICAgICAgICBUaGUgZGlzdGFuY2UgYWxvbmcgdGhlIHBhdGgsIHJlbGF0aXZl
IHRvIHRoZSBzdGFydCBvZiB0aGUgcGF0aCwgYXMgYSBkaXN0YW5jZSBpbiB0aGUgY3VycmVudCB1
c2VyIGNvb3JkaW5hdGUgc3lzdGVtLgorICAgUmV0dXJuIHZhbHVlCisgICB1bnNpZ25lZCBsb25n
ICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHBhdGggc2VnbWVudCwgd2hlcmUgdGhlIGZpcnN0IHBh
dGggc2VnbWVudCBpcyBudW1iZXIgMC4KKworICAgU2VlIHNwZWNpZmljYXRpb24gZm9yIGRldGFp
bDogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3BhdGhzLmh0bWwjRGlzdGFuY2VBbG9uZ0FQYXRo
CisqLworCitwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIsICJwYXRoIik7CitwYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsICJkIiwgIk0w
IDAgTDAgNSBMNSA1IEwgNSAwIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MCkiLCAiMCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEpIiwgIjAiKTsK
K3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCg1KSIsICIxIik7CitzaG91bGRCZSgi
cGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoNikiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0
aFNlZ0F0TGVuZ3RoKDEwKSIsICIyIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMTEpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAi
MCIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5YTk3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3Ro
KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDApIGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMAor
UEFTUyBwYXRoLmdldFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDYpIGlzIDEKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIK
K1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRo
U2VnQXRMZW5ndGgoMTYpIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgt
Z2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0
UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzgzOWIwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vc3ZncGF0aC1n
ZXRQYXRoU2VnQXRMZW5ndGguaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAyZjRjYy4uOTJjMjA2YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMC0wNS0wNSAgUm9iaW4gUWl1ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxl
LmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggYSBidWcgaW4gU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0aCgpLgorICAg
ICAgICBUaGlzIGJ1ZyBpcyBqdXN0IGEgbWlza3Rha2U6IGFsbW9zdCBhbGwgb2YgdGhlIGNvZGUg
aXMgT0ssIGJ1dCB0aGUKKyAgICAgICAgcGFyYW1ldGVyIGlzIG5vdCB1c2VkIGF0IGFsbCwgdGhl
cmVmb3JlLCB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zCisgICAgICAgICIxIi4KKyAgICAg
ICAgQW5vdGhlciB0aW55IHByb2JsZW0gaXMgdGhhdCB0aGUgU1ZHIHNwZWMgc2F5cyB0aGUgaW5k
ZXggb2YgIHRoZSBmaXJzdAorICAgICAgICBwYXRoIHNlZ21lbnQgaXMgbnVtYmVyIDAsIGJ1dCB3
ZSBzdGFydCBmcm9tIG51bWJlciAxLgorICAgICAgICBTbyBJIGFkZCBzb21lIGNvZGUgdG8gbGV0
IGl0IHN0YXJ0IGZyb20gMC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzUxNQorCisgICAgICAgIFRlc3Q6IHN2Zy9kb20vc3ZncGF0aC1nZXRQYXRo
U2VnQXRMZW5ndGguaHRtbAorCisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgpOgorCiAy
MDEwLTA1LTA0ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAppbmRleCAyNGJm
NDU1Li41ZWJiZDg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAK
KysrIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCkBAIC01MSwxMiArNTEsMTMgQEAg
U1ZHUGF0aFNlZ0xpc3Q6On5TVkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2lnbmVkIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3Vuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlIGxlbmd0
aCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRklYTUUgOiB0byBiZSB1c2VmdWwgdGhp
cyB3aWxsIG5lZWQgdG8gc3VwcG9ydCBub24tbm9ybWFsaXplZCBTVkdQYXRoU2VnTGlzdHMKICAg
ICBpbnQgbGVuID0gbnVtYmVyT2ZJdGVtcygpOwogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRo
aXMgd2lsbCBsaWtlbHkgbW92ZSB0byBhICJwYXRoIGFwcGxpZXIiLWxpa2UgbW9kZWwsIHVudGls
IHRoZW4gUGF0aFRyYXZlcnNhbFN0YXRlIGlzIGxlc3MgdXNlZnVsIGFzIHdlIGNvdWxkIGp1c3Qg
dXNlIGxvY2FscwogICAgIFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJh
dmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCk7CisgICAgdHJhdmVyc2FsU3Rh
dGUubV9kZXNpcmVkTGVuZ3RoID0gbGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
OyArK2kpIHsKICAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0oaSwgZWMpLmdl
dCgpOwogICAgICAgICBpZiAoZWMpCkBAIC05MCw2ICs5MSwxMCBAQCB1bnNpZ25lZCBTVkdQYXRo
U2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGgg
bm9ybWFsaXplZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBTVkcgc3BlYzogdGhlIGluZGV4IG9m
IHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgc2hvdWxkIGJlIG51bWJlciAwLgorICAgICAgICAvLyBU
aGUgZmlyc3QgbW92ZSBzaG91bGQgYmUgaWdub3JlZDoKKyAgICAgICAgaWYgKCFzZWdtZW50TGVu
Z3RoKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRyYXZlcnNhbFN0YXRlLm1fdG90
YWxMZW5ndGggKz0gc2VnbWVudExlbmd0aDsKICAgICAgICAgaWYgKCh0cmF2ZXJzYWxTdGF0ZS5t
X2FjdGlvbiA9PSBQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCkK
ICAgICAgICAgICAgICYmICh0cmF2ZXJzYWxTdGF0ZS5tX3RvdGFsTGVuZ3RoID4gdHJhdmVyc2Fs
U3RhdGUubV9kZXNpcmVkTGVuZ3RoKSkgewo=
</data>
<flag name="review"
          id="39636"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55468</attachid>
            <date>2010-05-08 00:44:27 -0700</date>
            <delta_ts>2010-05-08 05:51:19 -0700</delta_ts>
            <desc>3rd patch</desc>
            <filename>bug-37515.3.patch</filename>
            <type>text/plain</type>
            <size>6618</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5iNzQxMzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZp
Y2F0aW9uIHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisg
ICAgICAgIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgKiBzdmcvZG9t
L3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wNS0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCBleHBlY3RhdGlvbnMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGguanMgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM0OGFhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2Vn
QXRMZW5ndGguanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHBhdGgu
Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuIik7CisvKiAKKyAgIGdldFBhdGhTZWdBdExlbmd0aCgpIHJl
dHVybnMgdGhlIGluZGV4IGludG8gcGF0aFNlZ0xpc3Qgd2hpY2ggaXMgZGlzdGFuY2UgdW5pdHMg
YWxvbmcgdGhlIHBhdGguCisgICBQYXJhbWV0ZXJzCisgICBpbiBmbG9hdCBkaXN0YW5jZSAgICAg
ICAgVGhlIGRpc3RhbmNlIGFsb25nIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2Yg
dGhlIHBhdGgsIGFzIGEgZGlzdGFuY2UgaW4gdGhlIGN1cnJlbnQgdXNlciBjb29yZGluYXRlIHN5
c3RlbS4KKyAgIFJldHVybiB2YWx1ZQorICAgdW5zaWduZWQgbG9uZyAgICAgICAgVGhlIGluZGV4
IG9mIHRoZSBwYXRoIHNlZ21lbnQsIHdoZXJlIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgbnVt
YmVyIDAuCisKKyAgIFNlZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWw6IGh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9wYXRocy5odG1sI0Rpc3RhbmNlQWxvbmdBUGF0aAorKi8KKworcGF0aCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0
aCIpOworcGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiZCIsICJNMCAwIEwwIDUgTDUgNSBMIDUg
MCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDApIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxKSIsICIxIik7CitzaG91bGRCZSgicGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoNSkiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0
TGVuZ3RoKDYpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxMCki
LCAiMiIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDExKSIsICIzIik7Cisv
LyBXZWJLaXQvT3BlcmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhl
IGRpc3RhbmNlIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aDoKK3Nob3VsZEJlKCJwYXRo
LmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAiMyIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDIwKSIsICIzIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MjQpIiwgIjMiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgyNSkiLCAiMyIp
Oworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEwMCkiLCAiMyIpOworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vc3Zn
cGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKCkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDAp
IGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMQorUEFTUyBwYXRoLmdl
dFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDYp
IGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIKK1BBU1MgcGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MTYpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjApIGlzIDMKK1BBU1MgcGF0
aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjQpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMjUpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTAwKSBpcyAzCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzliMDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdw
YXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGYwMmY0Y2MuLjAyYTBhYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIFJv
YmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1BhdGhTZWdM
aXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVzdCBhIG1p
c2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAgICAgIHBh
cmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbiBhbHdh
eXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZpY2F0aW9u
IHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisgICAgICAg
IGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgVGVzdDogc3ZnL2RvbS9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdB
dExlbmd0aCk6CisKIDIwMTAtMDUtMDQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCmluZGV4IDI0YmY0NTUuLmU1ZDljM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKQEAgLTUx
LDEyICs1MSwxMyBAQCBTVkdQYXRoU2VnTGlzdDo6flNWR1BhdGhTZWdMaXN0KCkKIHsKIH0KIAot
dW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0aChkb3VibGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0
aChkb3VibGUgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRSA6IHRv
IGJlIHVzZWZ1bCB0aGlzIHdpbGwgbmVlZCB0byBzdXBwb3J0IG5vbi1ub3JtYWxpemVkIFNWR1Bh
dGhTZWdMaXN0cwogICAgIGludCBsZW4gPSBudW1iZXJPZkl0ZW1zKCk7CiAgICAgLy8gRklYTUU6
IEV2ZW50dWFsbHkgdGhpcyB3aWxsIGxpa2VseSBtb3ZlIHRvIGEgInBhdGggYXBwbGllciItbGlr
ZSBtb2RlbCwgdW50aWwgdGhlbiBQYXRoVHJhdmVyc2FsU3RhdGUgaXMgbGVzcyB1c2VmdWwgYXMg
d2UgY291bGQganVzdCB1c2UgbG9jYWxzCiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNh
bFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKTsKKyAg
ICB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGggPSBsZW5ndGg7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBTVkdQYXRoU2VnKiBzZWdtZW50ID0gZ2V0
SXRlbShpLCBlYykuZ2V0KCk7CiAgICAgICAgIGlmIChlYykKQEAgLTkyLDEzICs5MywxNCBAQCB1
bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIH0KICAgICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExl
bmd0aCArPSBzZWdtZW50TGVuZ3RoOwogICAgICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0
aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQotICAg
ICAgICAgICAgJiYgKHRyYXZlcnNhbFN0YXRlLm1fdG90YWxMZW5ndGggPiB0cmF2ZXJzYWxTdGF0
ZS5tX2Rlc2lyZWRMZW5ndGgpKSB7CisgICAgICAgICAgICAmJiAodHJhdmVyc2FsU3RhdGUubV90
b3RhbExlbmd0aCA+PSB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGgpKSB7CiAgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXg7CiAgICAgICAgIH0KICAg
ICAgICAgdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXgrKzsKICAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIDA7IC8vIFRoZSBTVkcgc3BlYyBpcyB1bmNsZWFyIGFzIHRvIHdoYXQgdG8gcmV0dXJu
IHdoZW4gdGhlIGRpc3RhbmNlIGlzIG5vdCBvbiB0aGUgcGF0aCAgICAKKworICAgIC8vIFdlYktp
dC9PcGVyYS9GRiBhbGwgcmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlzdGFu
Y2UgZXhjZWVkcyB0aGUgYWN0dWFsIHBhdGggbGVuZ3RoOgorICAgIHJldHVybiAtLXRyYXZlcnNh
bFN0YXRlLm1fc2VnbWVudEluZGV4OwogfQogCiBQYXRoIFNWR1BhdGhTZWdMaXN0Ojp0b1BhdGhE
YXRhKCkK
</data>
<flag name="review"
          id="39661"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55473</attachid>
            <date>2010-05-08 05:51:19 -0700</date>
            <delta_ts>2010-05-09 18:47:32 -0700</delta_ts>
            <desc>4th edition</desc>
            <filename>bug-37515.4.patch</filename>
            <type>text/plain</type>
            <size>6620</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5iNzQxMzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZp
Y2F0aW9uIHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisg
ICAgICAgIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgKiBzdmcvZG9t
L3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wNS0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCBleHBlY3RhdGlvbnMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGguanMgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM0OGFhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2Vn
QXRMZW5ndGguanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHBhdGgu
Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuIik7CisvKiAKKyAgIGdldFBhdGhTZWdBdExlbmd0aCgpIHJl
dHVybnMgdGhlIGluZGV4IGludG8gcGF0aFNlZ0xpc3Qgd2hpY2ggaXMgZGlzdGFuY2UgdW5pdHMg
YWxvbmcgdGhlIHBhdGguCisgICBQYXJhbWV0ZXJzCisgICBpbiBmbG9hdCBkaXN0YW5jZSAgICAg
ICAgVGhlIGRpc3RhbmNlIGFsb25nIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2Yg
dGhlIHBhdGgsIGFzIGEgZGlzdGFuY2UgaW4gdGhlIGN1cnJlbnQgdXNlciBjb29yZGluYXRlIHN5
c3RlbS4KKyAgIFJldHVybiB2YWx1ZQorICAgdW5zaWduZWQgbG9uZyAgICAgICAgVGhlIGluZGV4
IG9mIHRoZSBwYXRoIHNlZ21lbnQsIHdoZXJlIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgbnVt
YmVyIDAuCisKKyAgIFNlZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWw6IGh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9wYXRocy5odG1sI0Rpc3RhbmNlQWxvbmdBUGF0aAorKi8KKworcGF0aCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0
aCIpOworcGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiZCIsICJNMCAwIEwwIDUgTDUgNSBMIDUg
MCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDApIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxKSIsICIxIik7CitzaG91bGRCZSgicGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoNSkiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0
TGVuZ3RoKDYpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxMCki
LCAiMiIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDExKSIsICIzIik7Cisv
LyBXZWJLaXQvT3BlcmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhl
IGRpc3RhbmNlIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aDoKK3Nob3VsZEJlKCJwYXRo
LmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAiMyIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDIwKSIsICIzIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MjQpIiwgIjMiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgyNSkiLCAiMyIp
Oworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEwMCkiLCAiMyIpOworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vc3Zn
cGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKCkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDAp
IGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMQorUEFTUyBwYXRoLmdl
dFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDYp
IGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIKK1BBU1MgcGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MTYpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjApIGlzIDMKK1BBU1MgcGF0
aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjQpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMjUpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTAwKSBpcyAzCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzliMDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdw
YXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGYwMmY0Y2MuLjAyYTBhYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIFJv
YmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1BhdGhTZWdM
aXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVzdCBhIG1p
c2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAgICAgIHBh
cmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbiBhbHdh
eXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZpY2F0aW9u
IHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisgICAgICAg
IGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgVGVzdDogc3ZnL2RvbS9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdB
dExlbmd0aCk6CisKIDIwMTAtMDUtMDQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCmluZGV4IDI0YmY0NTUuLmU1ZDljM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKQEAgLTUx
LDEyICs1MSwxMyBAQCBTVkdQYXRoU2VnTGlzdDo6flNWR1BhdGhTZWdMaXN0KCkKIHsKIH0KIAot
dW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0aChkb3VibGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0
aChkb3VibGUgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRSA6IHRv
IGJlIHVzZWZ1bCB0aGlzIHdpbGwgbmVlZCB0byBzdXBwb3J0IG5vbi1ub3JtYWxpemVkIFNWR1Bh
dGhTZWdMaXN0cwogICAgIGludCBsZW4gPSBudW1iZXJPZkl0ZW1zKCk7CiAgICAgLy8gRklYTUU6
IEV2ZW50dWFsbHkgdGhpcyB3aWxsIGxpa2VseSBtb3ZlIHRvIGEgInBhdGggYXBwbGllciItbGlr
ZSBtb2RlbCwgdW50aWwgdGhlbiBQYXRoVHJhdmVyc2FsU3RhdGUgaXMgbGVzcyB1c2VmdWwgYXMg
d2UgY291bGQganVzdCB1c2UgbG9jYWxzCiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNh
bFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKTsKKyAg
ICB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGggPSBsZW5ndGg7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBTVkdQYXRoU2VnKiBzZWdtZW50ID0gZ2V0
SXRlbShpLCBlYykuZ2V0KCk7CiAgICAgICAgIGlmIChlYykKQEAgLTkyLDEzICs5MywxNCBAQCB1
bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIH0KICAgICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExl
bmd0aCArPSBzZWdtZW50TGVuZ3RoOwogICAgICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0
aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQotICAg
ICAgICAgICAgJiYgKHRyYXZlcnNhbFN0YXRlLm1fdG90YWxMZW5ndGggPiB0cmF2ZXJzYWxTdGF0
ZS5tX2Rlc2lyZWRMZW5ndGgpKSB7CisgICAgICAgICAgICAmJiAodHJhdmVyc2FsU3RhdGUubV90
b3RhbExlbmd0aCA+PSB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGgpKSB7CiAgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXg7CiAgICAgICAgIH0KICAg
ICAgICAgdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXgrKzsKICAgICB9Ci0gICAgCi0gICAg
cmV0dXJuIDA7IC8vIFRoZSBTVkcgc3BlYyBpcyB1bmNsZWFyIGFzIHRvIHdoYXQgdG8gcmV0dXJu
IHdoZW4gdGhlIGRpc3RhbmNlIGlzIG5vdCBvbiB0aGUgcGF0aCAgICAKKworICAgIC8vIFdlYktp
dC9PcGVyYS9GRiBhbGwgcmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlzdGFu
Y2UgZXhjZWVkcyB0aGUgYWN0dWFsIHBhdGggbGVuZ3RoOgorICAgIHJldHVybiB0cmF2ZXJzYWxT
dGF0ZS5tX3NlZ21lbnRJbmRleCAtIDE7CiB9CiAKIFBhdGggU1ZHUGF0aFNlZ0xpc3Q6OnRvUGF0
aERhdGEoKQo=
</data>
<flag name="review"
          id="39670"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="39695"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55515</attachid>
            <date>2010-05-09 18:47:32 -0700</date>
            <delta_ts>2010-05-10 22:05:08 -0700</delta_ts>
            <desc>5th patch, fixed that warning.</desc>
            <filename>bug-37515.5.patch</filename>
            <type>text/plain</type>
            <size>6729</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5iNzQxMzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZp
Y2F0aW9uIHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisg
ICAgICAgIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgKiBzdmcvZG9t
L3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wNS0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCBleHBlY3RhdGlvbnMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGguanMgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM0OGFhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2Vn
QXRMZW5ndGguanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHBhdGgu
Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuIik7CisvKiAKKyAgIGdldFBhdGhTZWdBdExlbmd0aCgpIHJl
dHVybnMgdGhlIGluZGV4IGludG8gcGF0aFNlZ0xpc3Qgd2hpY2ggaXMgZGlzdGFuY2UgdW5pdHMg
YWxvbmcgdGhlIHBhdGguCisgICBQYXJhbWV0ZXJzCisgICBpbiBmbG9hdCBkaXN0YW5jZSAgICAg
ICAgVGhlIGRpc3RhbmNlIGFsb25nIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2Yg
dGhlIHBhdGgsIGFzIGEgZGlzdGFuY2UgaW4gdGhlIGN1cnJlbnQgdXNlciBjb29yZGluYXRlIHN5
c3RlbS4KKyAgIFJldHVybiB2YWx1ZQorICAgdW5zaWduZWQgbG9uZyAgICAgICAgVGhlIGluZGV4
IG9mIHRoZSBwYXRoIHNlZ21lbnQsIHdoZXJlIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgbnVt
YmVyIDAuCisKKyAgIFNlZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWw6IGh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9wYXRocy5odG1sI0Rpc3RhbmNlQWxvbmdBUGF0aAorKi8KKworcGF0aCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0
aCIpOworcGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiZCIsICJNMCAwIEwwIDUgTDUgNSBMIDUg
MCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDApIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxKSIsICIxIik7CitzaG91bGRCZSgicGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoNSkiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0
TGVuZ3RoKDYpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxMCki
LCAiMiIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDExKSIsICIzIik7Cisv
LyBXZWJLaXQvT3BlcmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhl
IGRpc3RhbmNlIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aDoKK3Nob3VsZEJlKCJwYXRo
LmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAiMyIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDIwKSIsICIzIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MjQpIiwgIjMiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgyNSkiLCAiMyIp
Oworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEwMCkiLCAiMyIpOworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vc3Zn
cGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKCkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDAp
IGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMQorUEFTUyBwYXRoLmdl
dFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDYp
IGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIKK1BBU1MgcGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MTYpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjApIGlzIDMKK1BBU1MgcGF0
aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjQpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMjUpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTAwKSBpcyAzCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzliMDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdw
YXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGYwMmY0Y2MuLjAyYTBhYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIFJv
YmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1BhdGhTZWdM
aXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVzdCBhIG1p
c2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAgICAgIHBh
cmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbiBhbHdh
eXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZpY2F0aW9u
IHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisgICAgICAg
IGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgVGVzdDogc3ZnL2RvbS9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdB
dExlbmd0aCk6CisKIDIwMTAtMDUtMDQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCmluZGV4IDI0YmY0NTUuLjNhN2Q5NGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKQEAgLTUx
LDEyICs1MSwxMyBAQCBTVkdQYXRoU2VnTGlzdDo6flNWR1BhdGhTZWdMaXN0KCkKIHsKIH0KIAot
dW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0aChkb3VibGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordW5zaWduZWQgU1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdBdExlbmd0
aChkb3VibGUgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRSA6IHRv
IGJlIHVzZWZ1bCB0aGlzIHdpbGwgbmVlZCB0byBzdXBwb3J0IG5vbi1ub3JtYWxpemVkIFNWR1Bh
dGhTZWdMaXN0cwogICAgIGludCBsZW4gPSBudW1iZXJPZkl0ZW1zKCk7CiAgICAgLy8gRklYTUU6
IEV2ZW50dWFsbHkgdGhpcyB3aWxsIGxpa2VseSBtb3ZlIHRvIGEgInBhdGggYXBwbGllciItbGlr
ZSBtb2RlbCwgdW50aWwgdGhlbiBQYXRoVHJhdmVyc2FsU3RhdGUgaXMgbGVzcyB1c2VmdWwgYXMg
d2UgY291bGQganVzdCB1c2UgbG9jYWxzCiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlIHRyYXZlcnNh
bFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKTsKKyAg
ICB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGggPSBzdGF0aWNfY2FzdDxmbG9hdD5sZW5n
dGg7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBTVkdQYXRo
U2VnKiBzZWdtZW50ID0gZ2V0SXRlbShpLCBlYykuZ2V0KCk7CiAgICAgICAgIGlmIChlYykKQEAg
LTkyLDEzICs5MywxNSBAQCB1bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVu
Z3RoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIH0KICAgICAgICAgdHJhdmVy
c2FsU3RhdGUubV90b3RhbExlbmd0aCArPSBzZWdtZW50TGVuZ3RoOwogICAgICAgICBpZiAoKHRy
YXZlcnNhbFN0YXRlLm1fYWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2Vn
bWVudEF0TGVuZ3RoKQotICAgICAgICAgICAgJiYgKHRyYXZlcnNhbFN0YXRlLm1fdG90YWxMZW5n
dGggPiB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRMZW5ndGgpKSB7CisgICAgICAgICAgICAmJiAo
dHJhdmVyc2FsU3RhdGUubV90b3RhbExlbmd0aCA+PSB0cmF2ZXJzYWxTdGF0ZS5tX2Rlc2lyZWRM
ZW5ndGgpKSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5k
ZXg7CiAgICAgICAgIH0KICAgICAgICAgdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXgrKzsK
ICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7IC8vIFRoZSBTVkcgc3BlYyBpcyB1bmNsZWFyIGFz
IHRvIHdoYXQgdG8gcmV0dXJuIHdoZW4gdGhlIGRpc3RhbmNlIGlzIG5vdCBvbiB0aGUgcGF0aCAg
ICAKKworICAgIC8vIFRoZSBTVkcgc3BlYyBpcyB1bmNsZWFyIGFzIHRvIHdoYXQgdG8gcmV0dXJu
IHdoZW4gdGhlIGRpc3RhbmNlIGlzIG5vdCBvbiB0aGUgcGF0aC4KKyAgICAvLyBXZWJLaXQvT3Bl
cmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlIGV4
Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aDoKKyAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUu
bV9zZWdtZW50SW5kZXggLSAxOwogfQogCiBQYXRoIFNWR1BhdGhTZWdMaXN0Ojp0b1BhdGhEYXRh
KCkK
</data>
<flag name="review"
          id="39718"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55663</attachid>
            <date>2010-05-10 22:05:08 -0700</date>
            <delta_ts>2010-05-12 01:19:30 -0700</delta_ts>
            <desc>7 th patch</desc>
            <filename>bug-37515.7.patch</filename>
            <type>text/plain</type>
            <size>6944</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzE1Y2FiLi5iNzQxMzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDUt
MDUgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVz
dCBhIG1pc2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAg
ICAgIHBhcmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlv
biBhbHdheXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZp
Y2F0aW9uIHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisg
ICAgICAgIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgKiBzdmcvZG9t
L3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wNS0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCBleHBlY3RhdGlvbnMgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGguanMgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL3NjcmlwdC10ZXN0cy9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWM0OGFhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zY3JpcHQtdGVzdHMvc3ZncGF0aC1nZXRQYXRoU2Vn
QXRMZW5ndGguanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oIlRlc3QgU1ZHIHBhdGgu
Z2V0UGF0aFNlZ0F0TGVuZ3RoKCkuIik7CisvKiAKKyAgIGdldFBhdGhTZWdBdExlbmd0aCgpIHJl
dHVybnMgdGhlIGluZGV4IGludG8gcGF0aFNlZ0xpc3Qgd2hpY2ggaXMgZGlzdGFuY2UgdW5pdHMg
YWxvbmcgdGhlIHBhdGguCisgICBQYXJhbWV0ZXJzCisgICBpbiBmbG9hdCBkaXN0YW5jZSAgICAg
ICAgVGhlIGRpc3RhbmNlIGFsb25nIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2Yg
dGhlIHBhdGgsIGFzIGEgZGlzdGFuY2UgaW4gdGhlIGN1cnJlbnQgdXNlciBjb29yZGluYXRlIHN5
c3RlbS4KKyAgIFJldHVybiB2YWx1ZQorICAgdW5zaWduZWQgbG9uZyAgICAgICAgVGhlIGluZGV4
IG9mIHRoZSBwYXRoIHNlZ21lbnQsIHdoZXJlIHRoZSBmaXJzdCBwYXRoIHNlZ21lbnQgaXMgbnVt
YmVyIDAuCisKKyAgIFNlZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWw6IGh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRy9wYXRocy5odG1sI0Rpc3RhbmNlQWxvbmdBUGF0aAorKi8KKworcGF0aCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0
aCIpOworcGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAiZCIsICJNMCAwIEwwIDUgTDUgNSBMIDUg
MCIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDApIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxKSIsICIxIik7CitzaG91bGRCZSgicGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoNSkiLCAiMSIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0
TGVuZ3RoKDYpIiwgIjIiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgxMCki
LCAiMiIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDExKSIsICIzIik7Cisv
LyBXZWJLaXQvT3BlcmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhl
IGRpc3RhbmNlIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aDoKK3Nob3VsZEJlKCJwYXRo
LmdldFBhdGhTZWdBdExlbmd0aCgxNikiLCAiMyIpOworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNl
Z0F0TGVuZ3RoKDIwKSIsICIzIik7CitzaG91bGRCZSgicGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MjQpIiwgIjMiKTsKK3Nob3VsZEJlKCJwYXRoLmdldFBhdGhTZWdBdExlbmd0aCgyNSkiLCAiMyIp
Oworc2hvdWxkQmUoInBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDEwMCkiLCAiMyIpOworc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vc3Zn
cGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9kb20vc3ZncGF0aC1nZXRQYXRoU2VnQXRMZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjAgQEAKK1Rlc3QgU1ZHIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKCkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDAp
IGlzIDAKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMSkgaXMgMQorUEFTUyBwYXRoLmdl
dFBhdGhTZWdBdExlbmd0aCg1KSBpcyAxCitQQVNTIHBhdGguZ2V0UGF0aFNlZ0F0TGVuZ3RoKDYp
IGlzIDIKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTApIGlzIDIKK1BBU1MgcGF0aC5n
ZXRQYXRoU2VnQXRMZW5ndGgoMTEpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgo
MTYpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjApIGlzIDMKK1BBU1MgcGF0
aC5nZXRQYXRoU2VnQXRMZW5ndGgoMjQpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5n
dGgoMjUpIGlzIDMKK1BBU1MgcGF0aC5nZXRQYXRoU2VnQXRMZW5ndGgoMTAwKSBpcyAzCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9zdmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzliMDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdmcvZG9tL3N2Z3BhdGgtZ2V0UGF0aFNlZ0F0TGVuZ3RoLmh0bWwKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdw
YXRoLWdldFBhdGhTZWdBdExlbmd0aC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KKworCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGYwMmY0Y2MuLjAyYTBhYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIFJv
YmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGEgYnVnIGluIFNWR1BhdGhTZWdM
aXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoKS4KKyAgICAgICAgVGhpcyBidWcgaXMganVzdCBhIG1p
c2t0YWtlOiBhbG1vc3QgYWxsIG9mIHRoZSBjb2RlIGlzIE9LLCBidXQgdGhlCisgICAgICAgIHBh
cmFtZXRlciBpcyBub3QgdXNlZCBhdCBhbGwsIHRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbiBhbHdh
eXMgcmV0dXJucworICAgICAgICAiMSIuCisgICAgICAgIEFuZCBtYWtlIGEgbW9kaWZpY2F0aW9u
IHRvIHJldHVybiB0aGUgbGFzdCBwYXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlCisgICAgICAg
IGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTE1CisKKyAgICAgICAgVGVzdDogc3ZnL2RvbS9z
dmdwYXRoLWdldFBhdGhTZWdBdExlbmd0aC5odG1sCisKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNl
Z0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmdldFBhdGhTZWdB
dExlbmd0aCk6CisKIDIwMTAtMDUtMDQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
Y3BwCmluZGV4IDI0YmY0NTUuLmQ5ZDYzMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaXN0LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0Lmgi
CiAKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgpAQCAt
NTEsMTIgKzUyLDEzIEBAIFNWR1BhdGhTZWdMaXN0Ojp+U1ZHUGF0aFNlZ0xpc3QoKQogewogfQog
Ci11bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit1bnNpZ25lZCBTVkdQYXRoU2VnTGlzdDo6Z2V0UGF0aFNlZ0F0TGVu
Z3RoKGRvdWJsZSBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZJWE1FIDog
dG8gYmUgdXNlZnVsIHRoaXMgd2lsbCBuZWVkIHRvIHN1cHBvcnQgbm9uLW5vcm1hbGl6ZWQgU1ZH
UGF0aFNlZ0xpc3RzCiAgICAgaW50IGxlbiA9IG51bWJlck9mSXRlbXMoKTsKICAgICAvLyBGSVhN
RTogRXZlbnR1YWxseSB0aGlzIHdpbGwgbGlrZWx5IG1vdmUgdG8gYSAicGF0aCBhcHBsaWVyIi1s
aWtlIG1vZGVsLCB1bnRpbCB0aGVuIFBhdGhUcmF2ZXJzYWxTdGF0ZSBpcyBsZXNzIHVzZWZ1bCBh
cyB3ZSBjb3VsZCBqdXN0IHVzZSBsb2NhbHMKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUgdHJhdmVy
c2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0YXRlOjpUcmF2ZXJzYWxTZWdtZW50QXRMZW5ndGgpOwor
ICAgIHRyYXZlcnNhbFN0YXRlLm1fZGVzaXJlZExlbmd0aCA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQobGVuZ3RoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAg
IFNWR1BhdGhTZWcqIHNlZ21lbnQgPSBnZXRJdGVtKGksIGVjKS5nZXQoKTsKICAgICAgICAgaWYg
KGVjKQpAQCAtOTIsMTMgKzk0LDE1IEBAIHVuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRo
U2VnQXRMZW5ndGgoZG91YmxlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgfQogICAgICAg
ICB0cmF2ZXJzYWxTdGF0ZS5tX3RvdGFsTGVuZ3RoICs9IHNlZ21lbnRMZW5ndGg7CiAgICAgICAg
IGlmICgodHJhdmVyc2FsU3RhdGUubV9hY3Rpb24gPT0gUGF0aFRyYXZlcnNhbFN0YXRlOjpUcmF2
ZXJzYWxTZWdtZW50QXRMZW5ndGgpCi0gICAgICAgICAgICAmJiAodHJhdmVyc2FsU3RhdGUubV90
b3RhbExlbmd0aCA+IHRyYXZlcnNhbFN0YXRlLm1fZGVzaXJlZExlbmd0aCkpIHsKKyAgICAgICAg
ICAgICYmICh0cmF2ZXJzYWxTdGF0ZS5tX3RvdGFsTGVuZ3RoID49IHRyYXZlcnNhbFN0YXRlLm1f
ZGVzaXJlZExlbmd0aCkpIHsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX3Nl
Z21lbnRJbmRleDsKICAgICAgICAgfQogICAgICAgICB0cmF2ZXJzYWxTdGF0ZS5tX3NlZ21lbnRJ
bmRleCsrOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsgLy8gVGhlIFNWRyBzcGVjIGlzIHVu
Y2xlYXIgYXMgdG8gd2hhdCB0byByZXR1cm4gd2hlbiB0aGUgZGlzdGFuY2UgaXMgbm90IG9uIHRo
ZSBwYXRoICAgIAorCisgICAgLy8gVGhlIFNWRyBzcGVjIGlzIHVuY2xlYXIgYXMgdG8gd2hhdCB0
byByZXR1cm4gd2hlbiB0aGUgZGlzdGFuY2UgaXMgbm90IG9uIHRoZSBwYXRoLgorICAgIC8vIFdl
YktpdC9PcGVyYS9GRiBhbGwgcmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlz
dGFuY2UgZXhjZWVkcyB0aGUgYWN0dWFsIHBhdGggbGVuZ3RoOgorICAgIHJldHVybiB0cmF2ZXJz
YWxTdGF0ZS5tX3NlZ21lbnRJbmRleCA/IHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4IC0g
MSA6IDA7CiB9CiAKIFBhdGggU1ZHUGF0aFNlZ0xpc3Q6OnRvUGF0aERhdGEoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>