<?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>36556</bug_id>
          
          <creation_ts>2010-03-24 14:18:18 -0700</creation_ts>
          <short_desc>CSSPrimitiveValue::cssText() is slow</short_desc>
          <delta_ts>2010-04-27 14:44:16 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://service.futuremark.com/peacekeeper/run.action</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38221</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>kenneth</cc>
    
    <cc>koivisto</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203577</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-24 14:18:18 -0700</bug_when>
    <thetext>CSSPrimitiveValue::cssText() (actually, the vsnprintf functions it calls) are showing up as hotspots in the Rendering test of the Peacekeeper benchmark.  In the &quot;physics&quot; demo of that test, CRT printf internals are consuming 37%+ of CPU on Chromium/Win.  There should be some low-hanging fruit there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203628</commentid>
    <comment_count>1</comment_count>
      <attachid>51554</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-24 15:05:40 -0700</bug_when>
    <thetext>Created attachment 51554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203646</commentid>
    <comment_count>2</comment_count>
      <attachid>51554</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-24 15:17:04 -0700</bug_when>
    <thetext>Comment on attachment 51554
Patch

Needs at least one test for each of the places where you had to clear m_cachedCSSText that would fail if you hadn&apos;t cleared out m_cachedCSSText. Can I comment out any one of the lines that set m_cachedCSSText and see a test fail?

It would be nice to make the caching work for FontFamilyValue, too.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204025</commentid>
    <comment_count>3</comment_count>
      <attachid>51634</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-25 07:01:06 -0700</bug_when>
    <thetext>Created attachment 51634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204028</commentid>
    <comment_count>4</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-25 07:04:11 -0700</bug_when>
    <thetext>Ok, I&apos;ve added a test for the normal case, and for setting the value via getPropertyCSSValue() / setFloatValue().

On further inspection, it turns out that init() is private, and only ever called from a constructor, so it&apos;s not necessary to reset the cached string in those cases.  I have removed that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204265</commentid>
    <comment_count>5</comment_count>
      <attachid>51634</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-25 15:46:45 -0700</bug_when>
    <thetext>Comment on attachment 51634
Patch

Rejecting patch 51634 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 12543 test cases.
fast/css/font-face-multiple-remote-sources.html -&gt; failed

Exiting early after 1 failures. 5245 tests run.
83.59s total testing time

5244 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/1360006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204365</commentid>
    <comment_count>6</comment_count>
      <attachid>51634</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-25 18:17:12 -0700</bug_when>
    <thetext>Comment on attachment 51634
Patch

This test passes fine on my local machine.  I&apos;m going to give the commit bot another try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204410</commentid>
    <comment_count>7</comment_count>
      <attachid>51634</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-25 22:23:57 -0700</bug_when>
    <thetext>Comment on attachment 51634
Patch

Rejecting patch 51634 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 12549 test cases.
fast/css/font-face-multiple-remote-sources.html -&gt; failed

Exiting early after 1 failures. 5245 tests run.
82.34s total testing time

5244 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/1352006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204734</commentid>
    <comment_count>8</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-26 12:57:07 -0700</bug_when>
    <thetext>OK, this is getting ugly.  Turns out that, even without my changes, my new test causes a number of tests to fail, but only if the new test is run first.  Run individually, all the existing tests pass.

E.g.,
run-webkit-tests fast/css/cssText-cache.html -&gt; pass
run-webkit-tests fast/css/font-smoothing.html -&gt; pass
run-webkit-tests fast/css/cssText-cache.html fast/css/font-smoothing.html -&gt; pass, fail

The bounding boxes in the output are about 2x larger than they should be, which causes the text diffs to fail.

I&apos;ve narrowed it down to something in setFloatValue(), but I&apos;m kind of at a loss at this point.  If I comment out that part of the test, everything is ok, but it&apos;d be nice to track down the bug before this goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204738</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-26 13:03:18 -0700</bug_when>
    <thetext>Something I have found useful in the many times I have dealt with problems like this is invoking DumpRenderTree directly, running it under GDB. So don&apos;t use the run-webkit-tests engine at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204742</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-26 13:11:16 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Something I have found useful in the many times I have dealt with problems like
&gt; this is invoking DumpRenderTree directly, running it under GDB. So don&apos;t use
&gt; the run-webkit-tests engine at all.

Thanks, yeah.  I&apos;ve been doing that.  Nothing within the setFloatValue(), cleanup() or cssText() calls seems to be corrupt, or bad.  I&apos;m guessing maybe it&apos;s corruption or some kind of odd side effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204749</commentid>
    <comment_count>11</comment_count>
      <attachid>51634</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-26 13:21:59 -0700</bug_when>
    <thetext>Comment on attachment 51634
Patch

A number of cases in CSSPrimitiveValue::cssText() do early returns, so you need to refactor those so that they fall through to the end and actually use the cache.  rect(), attr(), pair all have this problem.

You yanked a FIXME that had useful information in it. Any reason, or just an accident?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204753</commentid>
    <comment_count>12</comment_count>
      <attachid>51634</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-26 13:28:50 -0700</bug_when>
    <thetext>Comment on attachment 51634
Patch

setFloatValue is pretty buggy when used this way.  It doesn&apos;t really work right as a public DOM call.  It isn&apos;t working properly with full page zoom for example, and I also don&apos;t think it properly propagates changes to the front end RenderStyles either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204796</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-26 14:46:26 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 51634 [details])
&gt; setFloatValue is pretty buggy when used this way.  It doesn&apos;t really work right
&gt; as a public DOM call.  It isn&apos;t working properly with full page zoom for
&gt; example, and I also don&apos;t think it properly propagates changes to the front end
&gt; RenderStyles either.

Hmm, ok.  Darin had asked me to make sure the test exercised all code paths that clear the cache.  Is there another way to call setFloatValue() or setStringValue() from JS?  Or should I skip it for now, until the bugs are fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204805</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-26 14:51:59 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 51634 [details])
&gt; A number of cases in CSSPrimitiveValue::cssText() do early returns, so you need
&gt; to refactor those so that they fall through to the end and actually use the
&gt; cache.  rect(), attr(), pair all have this problem.

Will fix.

&gt; You yanked a FIXME that had useful information in it. Any reason, or just an
&gt; accident?

I thought that the caching obviated the need to retain the original (unparsed) string, while also remaining spec-correct, but perhaps I misunderstood the comment.  I&apos;ll put it back.

I appreciate your (and Darin&apos;s) feedback, BTW.  This code is new to me and I want to make sure it&apos;s correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204845</commentid>
    <comment_count>15</comment_count>
      <attachid>51792</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-26 16:07:09 -0700</bug_when>
    <thetext>Created attachment 51792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205035</commentid>
    <comment_count>16</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-27 12:53:15 -0700</bug_when>
    <thetext>OK, I restored the comment, fixed the early returns to enable caching, and took the setFloatValue() calls out of the test.  Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205617</commentid>
    <comment_count>17</comment_count>
      <attachid>51792</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-29 13:06:44 -0700</bug_when>
    <thetext>Comment on attachment 51792
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205701</commentid>
    <comment_count>18</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-29 15:29:06 -0700</bug_when>
    <thetext>Committed r56744: &lt;http://trac.webkit.org/changeset/56744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205714</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 15:46:39 -0700</bug_when>
    <thetext>Please roll out http://trac.webkit.org/changeset/56744.  At least the changes to the python were invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205716</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 15:51:08 -0700</bug_when>
    <thetext>The python bits are the only parts that I&apos;m suggesting are wrong.  You can pick on Adam Barth for making that check so draconian, however &quot;Dave Hyatt&quot; is not a reviewer according to committers.py.  &quot;David Hyatt&quot; is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205722</commentid>
    <comment_count>21</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-03-29 16:03:01 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; The python bits are the only parts that I&apos;m suggesting are wrong.  You can pick
&gt; on Adam Barth for making that check so draconian, however &quot;Dave Hyatt&quot; is not a
&gt; reviewer according to committers.py.  &quot;David Hyatt&quot; is.

Sorry; I didn&apos;t mean to land that (I&apos;m used to gcl semantics).  I couldn&apos;t make webkit-patch land it with either Dave or David in the ChangeLog.  Even if you specify it, it seems it still wants to pull the reviewer from the bug, and overrides what&apos;s in the ChangeLog.

Eric says he&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205735</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-29 16:35:07 -0700</bug_when>
    <thetext>validatereviewer.py fixed in http://trac.webkit.org/changeset/56748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216594</commentid>
    <comment_count>23</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-23 15:30:13 -0700</bug_when>
    <thetext>Stephanie, Geoff, this patch increases the size of CSSPrimitiveValue by a word. Do we have data to estimate the memory impact? How many CSSPrimitiveValues are created on a typical page? How many on membuster?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216599</commentid>
    <comment_count>24</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2010-04-23 15:33:53 -0700</bug_when>
    <thetext>Any memory regression wasn&apos;t bad enough that I caught it among the other memory issues we&apos;re having, but I can take a look and get more concrete details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216649</commentid>
    <comment_count>25</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-04-23 18:02:39 -0700</bug_when>
    <thetext>Lots of effort has went into reducing the memory consumption of the CSSOM and values:

https://bugs.webkit.org/show_bug.cgi?id=22379
https://bugs.webkit.org/show_bug.cgi?id=22717

We shouldn&apos;t regress without careful analysis, especially for a single benchmark. The only thing that stops this from being completely horrible is the sharing of CSSPrimitiveValues (which cuts down value object count by some 80%) . It will still be a significant hit with very large stylesheets.

There are alternative caching schemes (hash, rare value structure) that don&apos;t increase memory consumption. Have these been explored?

This patch also moves us to wrong direction by making it harder to turn css values into simple value type in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216655</commentid>
    <comment_count>26</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-04-23 18:16:42 -0700</bug_when>
    <thetext>Generally, adding a cache field that is almost always null to an object that is instantiated in large numbers is basically never the right solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216762</commentid>
    <comment_count>27</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-24 16:04:50 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Any memory regression wasn&apos;t bad enough that I caught it among the other memory
&gt; issues we&apos;re having, but I can take a look and get more concrete details.

Just a count of CSSPrimitiveValue objects allocated on a typical page, or in the course of the membuster suite, would be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216773</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-04-24 19:05:20 -0700</bug_when>
    <thetext>If we use a cache instead (hash for instance, as Antti suggested) we can control the size and thus the memory consumption. I think that would be preferred. It would also allow us to use different sizes on for instance desktop and mobile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216888</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-25 22:02:52 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; If we use a cache instead (hash for instance, as Antti suggested) we can
&gt; control the size and thus the memory consumption. I think that would be
&gt; preferred. It would also allow us to use different sizes on for instance
&gt; desktop and mobile.

I think that a &quot;rare data&quot; approach would be fine too; external storage in a hash table. I&apos;m not sure that reclaiming memory when a script calls cssText on everything is important. What&apos;s much more important is avoiding extra memory cost in the normal, common case where cssText is not called.

We probably need a new bug report about this memory use regression rather than further discussion here in a bug already marked fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217477</commentid>
    <comment_count>30</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2010-04-26 21:03:43 -0700</bug_when>
    <thetext>Comparing Membuster data the patch was maybe a 1MB regression.  I can&apos;t really compare at that fine a level.

As far as instances go
8 CSSPrimitiveValue objects on an empty page
469 on Apple.com (+ ~40 every time the headline changes -- can climb pretty quickly)
460 on google.com
873 on nytimes.com

8626 on the first 30 pages on Membuster
87085 over the entire test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217962</commentid>
    <comment_count>31</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2010-04-27 14:44:16 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=38221 on the memory impact.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51554</attachid>
            <date>2010-03-24 15:05:40 -0700</date>
            <delta_ts>2010-03-25 07:01:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36556-20100324180538.patch</filename>
            <type>text/plain</type>
            <size>3433</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjQ1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDMtMjQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gb3JkZXIgdG8gc3BlZWQgdXAgbXVsdGlwbGUgY2FsbHMgdG8gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSwKKyAgICAgICAgdGhpcyBDTCBjYWNoZXMgdGhlIFN0cmluZyByZXN1
bHQuICBXaGVuIG1fdmFsdWUgaXMgY2hhbmdlZCwgdGhlCisgICAgICAgIGNhY2hlZCBzdHJpbmcg
aXMgY2xlYXJlZC4gIFRoaXMgZ2l2ZXMgYSBnb29kIHNwZWVkdXAgb24gYmVuY2htYXJrcworICAg
ICAgICB3aGljaCBkbyBhIGxvdCBvZiBDU1MgcHJvcGVydHkgZ2V0cywgc3VjaCBhcyBQZWFjZWtl
ZXBlci4KKyAgICAgICAgVGhlIHByb2Nlc3NpbmcgY29zdCBzaG91bGQgYmUgbmVnbGlnaWJsZSwg
c2luY2UgdGhlIHN0cmluZ3MgYXJlIAorICAgICAgICByZWZjb3VudGVkLiAgVGhlIG1lbW9yeSBj
b3N0IGlzIGFuIGFkZGl0aW9uYWwgNCBieXRlcyBwZXIKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUsIGFuZCB0aGUgZXh0ZW5kZWQgbGlmZXRpbWUgb2YgdGhlIGNvbXB1dGVkIHN0cmluZworICAg
ICAgICAocG90ZW50aWFsbHksIHRoZSBzYW1lIGFzIHRoZSBsaWZldGltZSBvZiB0aGUgQ1NTUHJp
bWl0aXZlVmFsdWUpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjU1NgorCisgICAgICAgIENvdmVyZWQgYnkgZmFzdC9jc3MvbGFyZ2UtbnVtYmVy
LXJvdW5kLXRyaXAuaHRtbCwgYW5kIG1vcmUuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1p
dGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKwogMjAxMC0wMy0yNCAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLgpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gNTYyNTApCisrKyBXZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OCwxMiAr
Mjc4LDE0IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmluaXQoUGFzc1JlZlB0cjwKIHsKICAg
ICBtX3R5cGUgPSBDU1NfQ09VTlRFUjsKICAgICBtX3ZhbHVlLmNvdW50ZXIgPSBjLnJlbGVhc2VS
ZWYoKTsKKyAgICBtX2NhY2hlZENTU1RleHQgPSBTdHJpbmcoKTsKIH0KIAogdm9pZCBDU1NQcmlt
aXRpdmVWYWx1ZTo6aW5pdChQYXNzUmVmUHRyPFJlY3Q+IHIpCiB7CiAgICAgbV90eXBlID0gQ1NT
X1JFQ1Q7CiAgICAgbV92YWx1ZS5yZWN0ID0gci5yZWxlYXNlUmVmKCk7CisgICAgbV9jYWNoZWRD
U1NUZXh0ID0gU3RyaW5nKCk7CiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBA
IC0yOTEsNiArMjkzLDcgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6aW5pdChQYXNzUmVmUHRy
PAogewogICAgIG1fdHlwZSA9IENTU19EQVNIQk9BUkRfUkVHSU9OOwogICAgIG1fdmFsdWUucmVn
aW9uID0gci5yZWxlYXNlUmVmKCk7CisgICAgbV9jYWNoZWRDU1NUZXh0ID0gU3RyaW5nKCk7CiB9
CiAjZW5kaWYKIApAQCAtMjk4LDYgKzMwMSw3IEBAIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6Omlu
aXQoUGFzc1JlZlB0cjwKIHsKICAgICBtX3R5cGUgPSBDU1NfUEFJUjsKICAgICBtX3ZhbHVlLnBh
aXIgPSBwLnJlbGVhc2VSZWYoKTsKKyAgICBtX2NhY2hlZENTU1RleHQgPSBTdHJpbmcoKTsKIH0K
IAogQ1NTUHJpbWl0aXZlVmFsdWU6On5DU1NQcmltaXRpdmVWYWx1ZSgpCkBAIC0zMzYsNiArMzQw
LDcgQEAgdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xlYW51cCgpCiAgICAgfQogCiAgICAgbV90
eXBlID0gMDsKKyAgICBtX2NhY2hlZENTU1RleHQgPSBTdHJpbmcoKTsKIH0KIAogaW50IENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSkKQEAgLTcwNSw4ICs3MTAsOSBAQCBpbnQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmdldElkZW50KCkKIAogU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29u
c3QKIHsKLSAgICAvLyBGSVhNRTogcmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9m
IGEgZ2VuZXJhdGVkIG9uZSAoZS5nLiBjb2xvcgotICAgIC8vIG5hbWUgaWYgaXQgd2FzIHNwZWNp
ZmllZCkgLSBjaGVjayB3aGF0IHNwZWMgc2F5cyBhYm91dCB0aGlzCisgICAgaWYgKCFtX2NhY2hl
ZENTU1RleHQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX2NhY2hlZENTU1RleHQ7CisKICAg
ICBTdHJpbmcgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19V
TktOT1dOOgpAQCAtOTA1LDYgKzkxMSw3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Nz
VGV4dCgpIGNvbnMKICAgICAgICAgICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFs
dWUuc3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBtX2NhY2hlZENTU1Rl
eHQgPSB0ZXh0OwogICAgIHJldHVybiB0ZXh0OwogfQogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgJKHJldmlzaW9uIDU2MjUwKQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBh
aXIqIHBhaXI7CiAgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uOwogICAgIH0gbV92YWx1
ZTsKKyAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZENTU1RleHQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51634</attachid>
            <date>2010-03-25 07:01:06 -0700</date>
            <delta_ts>2010-03-26 16:07:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36556-20100325100104.patch</filename>
            <type>text/plain</type>
            <size>5052</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjUzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDMtMjUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gb3JkZXIgdG8gc3BlZWQgdXAgbXVsdGlwbGUgY2FsbHMgdG8gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSwKKyAgICAgICAgdGhpcyBDTCBjYWNoZXMgdGhlIFN0cmluZyByZXN1
bHQuICBXaGVuIG1fdmFsdWUgaXMgY2hhbmdlZCwgdGhlCisgICAgICAgIGNhY2hlZCBzdHJpbmcg
aXMgY2xlYXJlZC4gIFRoaXMgZ2l2ZXMgYSBnb29kIHNwZWVkdXAgb24gYmVuY2htYXJrcworICAg
ICAgICB3aGljaCBkbyBhIGxvdCBvZiBDU1MgcHJvcGVydHkgZ2V0cywgc3VjaCBhcyBQZWFjZWtl
ZXBlci4KKyAgICAgICAgVGhlIHByb2Nlc3NpbmcgY29zdCBzaG91bGQgYmUgbmVnbGlnaWJsZSwg
c2luY2UgdGhlIHN0cmluZ3MgYXJlIAorICAgICAgICByZWZjb3VudGVkLiAgVGhlIG1lbW9yeSBj
b3N0IGlzIGFuIGFkZGl0aW9uYWwgNCBieXRlcyBwZXIKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUsIGFuZCB0aGUgZXh0ZW5kZWQgbGlmZXRpbWUgb2YgdGhlIGNvbXB1dGVkIHN0cmluZworICAg
ICAgICAocG90ZW50aWFsbHksIHRoZSBzYW1lIGFzIHRoZSBsaWZldGltZSBvZiB0aGUgQ1NTUHJp
bWl0aXZlVmFsdWUpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjU1NgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2Nzc1RleHQtY2FjaGUuaHRt
bAorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aDoKKwogMjAxMC0wMy0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gNTYyNTApCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNyBAQCB2b2lkIENTU1By
aW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAgICB9CiAKICAgICBtX3R5cGUgPSAwOworICAgIG1f
Y2FjaGVkQ1NTVGV4dCA9IFN0cmluZygpOwogfQogCiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
KQpAQCAtNzA1LDggKzcwNiw5IEBAIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0SWRlbnQoKQog
CiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewotICAgIC8vIEZJ
WE1FOiByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlIGluc3RlYWQgb2YgYSBnZW5lcmF0ZWQgb25l
IChlLmcuIGNvbG9yCi0gICAgLy8gbmFtZSBpZiBpdCB3YXMgc3BlY2lmaWVkKSAtIGNoZWNrIHdo
YXQgc3BlYyBzYXlzIGFib3V0IHRoaXMKKyAgICBpZiAoIW1fY2FjaGVkQ1NTVGV4dC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkQ1NTVGV4dDsKKwogICAgIFN0cmluZyB0ZXh0Owog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CkBAIC05MDUs
NiArOTA3LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAg
ICAgICAgICAgdGV4dCA9IHF1b3RlU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIG1fY2FjaGVkQ1NTVGV4dCA9IHRleHQ7CiAgICAg
cmV0dXJuIHRleHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkocmV2aXNpb24g
NTYyNTApCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTEsNiArMjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUGFpciogcGFpcjsKICAgICAg
ICAgRGFzaGJvYXJkUmVnaW9uKiByZWdpb247CiAgICAgfSBtX3ZhbHVlOworICAgIG11dGFibGUg
U3RyaW5nIG1fY2FjaGVkQ1NTVGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU2NTM4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDMtMjUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5v
cmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IGZvciBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4
dCgpIHN0cmluZyBjYWNoZWluZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzY1NTYKKworICAgICAgICAqIGZhc3QvY3NzL2Nzc1RleHQtY2FjaGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jc3NUZXh0LWNhY2hlLmh0
bWw6IEFkZGVkLgorCiAyMDEwLTAzLTI1ICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6
QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LWNhY2hlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtY2FjaGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1BBU1M6IHN0eWxlLmxlZnQgd2Fz
IDEwcHgsIGV4cGVjdGVkIDEwcHgKK1BBU1M6IHN0eWxlLmxlZnQgd2FzIDIwcHgsIGV4cGVjdGVk
IDIwcHgKK1BBU1M6IHN0eWxlLmxlZnQgd2FzIDMwcHgsIGV4cGVjdGVkIDMwcHgKK1BBU1M6IHN0
eWxlLmxlZnQgd2FzIDQwcHgsIGV4cGVjdGVkIDQwcHgKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3NzVGV4dC1jYWNoZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2Nzc1RleHQtY2FjaGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2Nzc1RleHQtY2FjaGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPGJv
ZHk+Cis8ZGl2IGlkPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHRzIj4KKzwvZGl2Pgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKworICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICB2YXIgc3R5bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94
Jykuc3R5bGU7CisKKyAgc3R5bGUubGVmdCA9ICIxMHB4IjsKKyAgY2hlY2tSZXN1bHQoInN0eWxl
LmxlZnQiLCAiMTBweCIpOworICBzdHlsZS5sZWZ0ID0gIjIwcHgiOworICBjaGVja1Jlc3VsdCgi
c3R5bGUubGVmdCIsICIyMHB4Iik7CisKKyAgLy8gVmVyaWZ5IHVzaW5nIGdldFByb3BlcnR5Q1NT
VmFsdWUoKSBhbmQgc2V0RmxvYXRWYWx1ZSgpCisgIHZhciBsZWZ0ID0gc3R5bGUuZ2V0UHJvcGVy
dHlDU1NWYWx1ZSgibGVmdCIpOworICBsZWZ0LnNldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUuQ1NTX1BYLCAzMCk7CisgIGNoZWNrUmVzdWx0KCJzdHlsZS5sZWZ0IiwgIjMwcHgiKTsKKyAg
bGVmdC5zZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19QWCwgNDApOworICBjaGVj
a1Jlc3VsdCgic3R5bGUubGVmdCIsICI0MHB4Iik7CisKKyAgZnVuY3Rpb24gY2hlY2tSZXN1bHQo
cHJvcGVydHksIGV4cGVjdGVkVmFsdWUpIHsKKyAgICB2YXIgdmFsdWUgPSBldmFsKHByb3BlcnR5
KTsKKyAgICB2YXIgcmVzdWx0ID0gIjogIiArIHByb3BlcnR5ICsgIiB3YXMgIiArIHZhbHVlICsg
IiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkVmFsdWUgKyAiPGJyPiI7CisgICAgaWYgKHZhbHVlID09
IGV4cGVjdGVkVmFsdWUpCisgICAgICByZXN1bHQgPSAiPGIgc3R5bGU9XCJjb2xvcjpncmVlblwi
PlBBU1M8L2I+IiArIHJlc3VsdDsKKyAgICBlbHNlCisgICAgICByZXN1bHQgPSAiPGIgc3R5bGU9
XCJjb2xvcjpyZWRcIj5GQUlMPC9iPiIgKyByZXN1bHQ7CisgICAgdmFyIHJlc3VsdHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpOworICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9
IHJlc3VsdDsKKyAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51792</attachid>
            <date>2010-03-26 16:07:09 -0700</date>
            <delta_ts>2010-03-29 15:29:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36556-20100326190708.patch</filename>
            <type>text/plain</type>
            <size>5691</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjY0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDMtMjQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgSW4gb3JkZXIgdG8gc3BlZWQgdXAgbXVsdGlwbGUgY2FsbHMgdG8gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSwKKyAgICAgICAgdGhpcyBDTCBjYWNoZXMgdGhlIFN0cmluZyByZXN1bHQu
ICBXaGVuIG1fdmFsdWUgaXMgY2hhbmdlZCwgdGhlCisgICAgICAgIGNhY2hlZCBzdHJpbmcgaXMg
Y2xlYXJlZC4gIFRoaXMgZ2l2ZXMgYSBnb29kIHNwZWVkdXAgb24gYmVuY2htYXJrcworICAgICAg
ICB3aGljaCBkbyBhIGxvdCBvZiBDU1MgcHJvcGVydHkgZ2V0cywgc3VjaCBhcyBQZWFjZWtlZXBl
ci4KKyAgICAgICAgVGhlIHByb2Nlc3NpbmcgY29zdCBzaG91bGQgYmUgbmVnbGlnaWJsZSwgc2lu
Y2UgdGhlIHN0cmluZ3MgYXJlIAorICAgICAgICByZWZjb3VudGVkLiAgVGhlIG1lbW9yeSBjb3N0
IGlzIGFuIGFkZGl0aW9uYWwgNCBieXRlcyBwZXIKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUs
IGFuZCB0aGUgZXh0ZW5kZWQgbGlmZXRpbWUgb2YgdGhlIGNvbXB1dGVkIHN0cmluZworICAgICAg
ICAocG90ZW50aWFsbHksIHRoZSBzYW1lIGFzIHRoZSBsaWZldGltZSBvZiB0aGUgQ1NTUHJpbWl0
aXZlVmFsdWUpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjU1NgorCisgICAgICAgIENvdmVyZWQgYnkgZmFzdC9jc3MvY3NzVGV4dC1jYWNoZS5o
dG1sLCBhbmQgbW9yZS4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNsZWFudXApOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAqIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oOgorCiAyMDEwLTAzLTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4sIERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gNTY2NDYp
CisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzNiw2ICszMzYsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVwKCkKICAgICB9
CiAKICAgICBtX3R5cGUgPSAwOworICAgIG1fY2FjaGVkQ1NTVGV4dCA9IFN0cmluZygpOwogfQog
CiBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlKQpAQCAtNzA3LDYgKzcwOCw5IEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKIHsKICAgICAvLyBGSVhNRTogcmV0dXJu
IHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5nLiBjb2xv
cgogICAgIC8vIG5hbWUgaWYgaXQgd2FzIHNwZWNpZmllZCkgLSBjaGVjayB3aGF0IHNwZWMgc2F5
cyBhYm91dCB0aGlzCisgICAgaWYgKCFtX2NhY2hlZENTU1RleHQuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBtX2NhY2hlZENTU1RleHQ7CisKICAgICBTdHJpbmcgdGV4dDsKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19VTktOT1dOOgpAQCAtNzkyLDcgKzc5Niw4IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNr
ZWRBcHBlbmQoJyknKTsKIAotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0
KTsKKyAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgogICAgICAgICAg
ICAgdGV4dCA9ICJjb3VudGVyKCI7CkBAIC04MjAsNyArODI1LDggQEAgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVj
dFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwogCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAg
ICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJT
RVJfSEVYQ09MT1I6IHsKQEAgLTg1Myw3ICs4NTksOCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cisg
ICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFJUjoKICAgICAgICAgICAgIHRleHQg
PSBtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKTsKQEAgLTkwNSw2ICs5MTIsNyBAQCBT
dHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICB0ZXh0
ID0gcXVvdGVTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICB9CisgICAgbV9jYWNoZWRDU1NUZXh0ID0gdGV4dDsKICAgICByZXR1cm4gdGV4dDsK
IH0KIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiA1NjY0NikKKysrIFdl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsy
MTEsNyBAQCBwcml2YXRlOgogICAgICAgICBQYWlyKiBwYWlyOwogICAgICAgICBEYXNoYm9hcmRS
ZWdpb24qIHJlZ2lvbjsKICAgICB9IG1fdmFsdWU7CisgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNo
ZWRDU1NUZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTY2NDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMC0wMy0yNSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGRlZCBhIHRlc3QgZm9yIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgc3RyaW5nIGNhY2hl
aW5nLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjU1NgorCisgICAgICAgICogZmFzdC9jc3MvY3NzVGV4dC1jYWNoZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2Nzc1RleHQtY2FjaGUuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDMtMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbiwgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LWNhY2hlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtY2FjaGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1M6IHN0eWxlLmxlZnQgd2FzIDEwcHgsIGV4
cGVjdGVkIDEwcHgKK1BBU1M6IHN0eWxlLmxlZnQgd2FzIDIwcHgsIGV4cGVjdGVkIDIwcHgKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzVGV4dC1jYWNoZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtY2FjaGUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtY2FjaGUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMCBAQAorPGJvZHk+Cis8ZGl2IGlkPSJib3giPgorPC9kaXY+Cis8ZGl2IGlk
PSJyZXN1bHRzIj4KKzwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij4KKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICB2YXIgc3R5bGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYm94Jykuc3R5bGU7CisKKyAgc3R5bGUubGVmdCA9ICIxMHB4IjsK
KyAgY2hlY2tSZXN1bHQoInN0eWxlLmxlZnQiLCAiMTBweCIpOworICBzdHlsZS5sZWZ0ID0gIjIw
cHgiOworICBjaGVja1Jlc3VsdCgic3R5bGUubGVmdCIsICIyMHB4Iik7CisKKyAgZnVuY3Rpb24g
Y2hlY2tSZXN1bHQocHJvcGVydHksIGV4cGVjdGVkVmFsdWUpIHsKKyAgICB2YXIgdmFsdWUgPSBl
dmFsKHByb3BlcnR5KTsKKyAgICB2YXIgcmVzdWx0ID0gIjogIiArIHByb3BlcnR5ICsgIiB3YXMg
IiArIHZhbHVlICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkVmFsdWUgKyAiPGJyPiI7CisgICAg
aWYgKHZhbHVlID09IGV4cGVjdGVkVmFsdWUpCisgICAgICByZXN1bHQgPSAiPGIgc3R5bGU9XCJj
b2xvcjpncmVlblwiPlBBU1M8L2I+IiArIHJlc3VsdDsKKyAgICBlbHNlCisgICAgICByZXN1bHQg
PSAiPGIgc3R5bGU9XCJjb2xvcjpyZWRcIj5GQUlMPC9iPiIgKyByZXN1bHQ7CisgICAgdmFyIHJl
c3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cycpOworICAgIHJlc3VsdHMu
aW5uZXJIVE1MICs9IHJlc3VsdDsKKyAgfQorCis8L3NjcmlwdD4KKzwvYm9keT4K
</data>
<flag name="review"
          id="35141"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="35334"
          type_id="3"
          status="-"
          setter="senorblanco"
    />
          </attachment>
      

    </bug>

</bugzilla>