<?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>22429</bug_id>
          
          <creation_ts>2008-11-22 13:27:43 -0800</creation_ts>
          <short_desc>document.styleSheets collection ignores media=presentation</short_desc>
          <delta_ts>2010-12-09 13:58:52 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hassman">bugzilla</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99796</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Hassman">bugzilla</who>
    <bug_when>2008-11-22 13:27:43 -0800</bug_when>
    <thetext>Collection document.styleSheets should contain all stylesheets from the document, but Webkit ignores stylesheets with media=&quot;presentation&quot; from this collection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99797</commentid>
    <comment_count>1</comment_count>
      <attachid>25380</attachid>
    <who name="Martin Hassman">bugzilla</who>
    <bug_when>2008-11-22 13:28:45 -0800</bug_when>
    <thetext>Created attachment 25380
Testcase

Testcase contains 4 stylesheets, but document.styleSheets.length is 3 (the media=&quot;projection&quot; is missing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102505</commentid>
    <comment_count>2</comment_count>
      <attachid>26014</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-12-14 12:48:08 -0800</bug_when>
    <thetext>Created attachment 26014
First attempt

I think it is not just media=&quot;projection&quot;, since with any media attribute I try the sheet ends up in the styleSheets collection. This patch makes an empty sheet entry to make the styleSheets collection correct. Since they are empty there are no rules that contribute to the style collection. Obviously there are speed regressions when encountering media other than all, screen or print, but I assume these are uncommon. If this is the right approach I&apos;ll make some testcase(s).
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102524</commentid>
    <comment_count>3</comment_count>
      <attachid>26014</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-14 18:28:26 -0800</bug_when>
    <thetext>Comment on attachment 26014
First attempt

&gt; +        document.styleSheets collection ognores media=presentation

&quot;ognores&quot;

&gt; +            if (m_sheet)
&gt; +                m_sheet = 0;

The above is a strange way to write &quot;m_sheet = 0&quot;.

But also, is there a reason we need to set m_sheet to 0 separately before assigning a new value? Sometimes we have done that intentionally in the past when there was a need to guarantee that the old ref went away before the new object was created. But I think in this case that code should just be omitted.

&gt; +            // create a dummy sheet without url and content

I&apos;d prefer to see new comments be written as full sentences. I&apos;d write it like this:

    // Create a dummy sheet without a URL or content.

&gt; +            m_sheet = CSSStyleSheet::create(this, m_url, chset);
&gt; +            m_sheet-&gt;setTitle(title());
&gt; +            m_sheet-&gt;setMedia(media.get());

This should be media.release(), not media.get().

Is an empty CSSStyleSheet really what&apos;s called for here? Don&apos;t we need a style sheet with a DOM that scripts can look at? Why is an empty one OK?

&gt; +            document()-&gt;updateStyleSelector();

It&apos;s a shame to call updateStyleSelector in this case. There are no new style rules, and there&apos;s no need to do work unless there was a non-empty style sheet before that we&apos;re replacing. It would be better to treat an empty style sheet the same as lack of a style sheet and call updateStyleSelector only when it is really needed. We don&apos;t want to do needless style computation when you add a &lt;link&gt; for a style sheet that fails the media query.

I&apos;m going to say review- because I&apos;d like to see a justification of the value of creating an empty style sheet. I really don&apos;t understand why it&apos;s correct to not load the style sheet and create an empty style sheet object. Is this what other browsers do? Or do they load these style sheets?

I&apos;d like to hear Hyatt&apos;s thoughts on this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102590</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-12-15 13:44:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 26014 [review])
&gt; &gt; +        document.styleSheets collection ognores media=presentation
&gt; 
&gt; &quot;ognores&quot;

Right, I didn&apos;t want to touch the original title, but I guess it is better to fix it.

&gt; &gt; +            if (m_sheet)
&gt; &gt; +                m_sheet = 0;
&gt; 
&gt; The above is a strange way to write &quot;m_sheet = 0&quot;.

Right. I first had some logic in the if to set a bool to decide whether updateStyleSelector should be called.

&gt; But also, is there a reason we need to set m_sheet to 0 separately before
&gt; assigning a new value? Sometimes we have done that intentionally in the past
&gt; when there was a need to guarantee that the old ref went away before the new
&gt; object was created. But I think in this case that code should just be omitted.

Possible, I am not sure.

&gt; &gt; +            // create a dummy sheet without url and content
&gt; 
&gt; I&apos;d prefer to see new comments be written as full sentences. I&apos;d write it like
&gt; this:
&gt; 
&gt;     // Create a dummy sheet without a URL or content.

I&apos;ll remember for future comments.

&gt; &gt; +            m_sheet = CSSStyleSheet::create(this, m_url, chset);
&gt; &gt; +            m_sheet-&gt;setTitle(title());
&gt; &gt; +            m_sheet-&gt;setMedia(media.get());
&gt; 
&gt; This should be media.release(), not media.get().

Ok.
 
&gt; Is an empty CSSStyleSheet really what&apos;s called for here? Don&apos;t we need a style
&gt; sheet with a DOM that scripts can look at? Why is an empty one OK?

I sort of did that because of efficiency. But it turns out FF and Opera still load stylesheets
for links with invalid/uncommon media attributes.

&gt; &gt; +            document()-&gt;updateStyleSelector();
&gt; 
&gt; It&apos;s a shame to call updateStyleSelector in this case. There are no new style
&gt; rules, and there&apos;s no need to do work unless there was a non-empty style sheet
&gt; before that we&apos;re replacing. It would be better to treat an empty style sheet
&gt; the same as lack of a style sheet and call updateStyleSelector only when it is
&gt; really needed. We don&apos;t want to do needless style computation when you add a
&gt; &lt;link&gt; for a style sheet that fails the media query.

Agreed.

&gt; I&apos;m going to say review- because I&apos;d like to see a justification of the value
&gt; of creating an empty style sheet. I really don&apos;t understand why it&apos;s correct to
&gt; not load the style sheet and create an empty style sheet object. Is this what
&gt; other browsers do? Or do they load these style sheets?

Right, FF and Opera do load them.
I did a new patch that does load and a start of a testcase, I&apos;ll upload what I have right now.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102593</commentid>
    <comment_count>5</comment_count>
      <attachid>26031</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-12-15 13:52:47 -0800</bug_when>
    <thetext>Created attachment 26031
Different approach

This patch simply loads all sheets regardless of the media attribute. However addRulesFromSheet still blocks the rules in this sheet. The testcase is a start but should also verify that the sheet gets loaded but does not apply for media attributes other than all, screen and print. I am not sure yet whether those should be multipe testcases. It is a bit hard for me to judge efficiency, obviously it is slower when there are sheets with media other than all, screen or print but I think that is uncommon. A more efficient solution would be to make ::styleSheets get all sheets on demand but I guess that would involve it waiting for all sheets to load before returning.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102677</commentid>
    <comment_count>6</comment_count>
      <attachid>26031</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-16 11:00:51 -0800</bug_when>
    <thetext>Comment on attachment 26031
Different approach

Ideally your test should also make sure that these loaded sheets also have some expected content.  I.e. you could iterate over the CSSStyleSheet dom object looking for a specific known rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103351</commentid>
    <comment_count>7</comment_count>
      <attachid>26236</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-12-24 01:12:19 -0800</bug_when>
    <thetext>Created attachment 26236
Improved testcase

This patch now reuses an existing style sheet in resources and tests that it gets loaded, as suggested by Eric.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105154</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-10 15:42:19 -0800</bug_when>
    <thetext>I need Hyatt&apos;s take on this. It seems like we need to parse all stylesheets, but it also seems like it&apos;s going to slow down browsing.

I think the patch is great, but I&apos;m not going to review it on my own without input from Dave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115348</commentid>
    <comment_count>9</comment_count>
      <attachid>26236</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-26 10:46:40 -0700</bug_when>
    <thetext>Comment on attachment 26236
Improved testcase

I&apos;m confused by your test case.  Why don&apos;t you explicitly look for the types of stylesheets in the test?  Or test for a specific number of exposed stylesheets?

Your patch should ideally contain the expected results as well.  Also, it would be good to know what other browsers do on this test.  Knowing what other browsers do makes it easier for the reviewer to agree with the patch concept. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115351</commentid>
    <comment_count>10</comment_count>
      <attachid>26236</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-26 10:49:18 -0700</bug_when>
    <thetext>Comment on attachment 26236
Improved testcase

Marking this as r=hyatt based on darin adler&apos;s comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123176</commentid>
    <comment_count>11</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-26 13:20:23 -0700</bug_when>
    <thetext>This seems ok.  It&apos;s unfortunate that we have to load irrelevant sheets, but if other browsers do it, I guess we have to.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123177</commentid>
    <comment_count>12</comment_count>
      <attachid>26236</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-26 13:20:41 -0700</bug_when>
    <thetext>Comment on attachment 26236
Improved testcase

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123569</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-29 11:12:06 -0700</bug_when>
    <thetext>Assign to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123620</commentid>
    <comment_count>14</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-29 15:00:40 -0700</bug_when>
    <thetext>Added the missing expected results: fast/css/sheet-collection-link-expected.txt
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123641</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-29 16:08:20 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/44277.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319680</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 13:12:32 -0800</bug_when>
    <thetext>Did this actually fix any real problems? It is pretty silly to load stylesheets that are never going to be used.

While braille sheets are too rare to matter, some complex media queries (for example to pick a stylesheet for device screen dimensions) may be more common. We should be able to optimize cases like that and the behavior from this patch goes exactly to wrong direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319702</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-12-09 13:58:52 -0800</bug_when>
    <thetext>I mean cases like this http://broadcast.oreilly.com/2010/04/using-css-media-queries-ipad.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25380</attachid>
            <date>2008-11-22 13:28:45 -0800</date>
            <delta_ts>2008-11-22 13:28:45 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>stylesheets.html</filename>
            <type>text/html</type>
            <size>368</size>
            <attacher name="Martin Hassman">bugzilla</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IiIgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJhbGwiPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIiIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0icHJvamVjdGlvbiI+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IiIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPg0KPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0icHJpbnQiPg0KPHNjcmlwdD4NCndp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpDQp7DQoJYWxlcnQoZG9jdW1lbnQuc3R5bGVTaGVldHMu
bGVuZ3RoKTsNCn0NCjwvc2NyaXB0Pg0KDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26014</attachid>
            <date>2008-12-14 12:48:08 -0800</date>
            <delta_ts>2008-12-15 13:52:47 -0800</delta_ts>
            <desc>First attempt</desc>
            <filename>22429.diff</filename>
            <type>text/plain</type>
            <size>2594</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTE3NmNmZi4uY2QzNzgzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0xMi0xNCAgUm9iIEJ1aXMgIDxy
d2xidWlzQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MjkK
KyAgICAgICAgZG9jdW1lbnQuc3R5bGVTaGVldHMgY29sbGVjdGlvbiBvZ25vcmVzIG1lZGlhPXBy
ZXNlbnRhdGlvbgorCisgICAgICAgIEVuc3VyZSB0aGF0IHN0eWxlc2hlZXRzIHRob3VnaCA8bGlu
az4gc2hvdyB1cCBpbiBkb2N1bWVudC5zdHlsZVNoZWV0cyByZWdhcmRsZXNzIG9mIG1lZGlhIGF0
dHJpYnV0ZS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5H
RUQKKworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisKIDIwMDgtMTItMTMgIEp1bGllbiBDaGFm
ZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDM5ODA1NGEuLjIxM2UzYjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0xODIsNiArMTgyLDEwIEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAvLyBTdHlsZXNoZWV0CiAgICAgLy8gVGhpcyB3
YXMgYnVnZ3kgYW5kIHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxsaW5rIHJlbD0iYWx0ZXJuYXRl
Ij4sIHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVhbmluZy4gLWR3aAogICAgIGlm
IChtX2Rpc2FibGVkU3RhdGUgIT0gMiAmJiBtX2lzU3R5bGVTaGVldCAmJiBkb2N1bWVudCgpLT5m
cmFtZSgpKSB7CisgICAgICAgIFN0cmluZyBjaHNldCA9IGdldEF0dHJpYnV0ZShjaGFyc2V0QXR0
cik7CisgICAgICAgIGlmIChjaHNldC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjaHNldCA9IGRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5lbmNvZGluZygpOworCiAgICAgICAgIC8vIG5v
IG5lZWQgdG8gbG9hZCBzdHlsZSBzaGVldHMgd2hpY2ggYXJlbid0IGZvciB0aGUgc2NyZWVuIG91
dHB1dAogICAgICAgICAvLyAjIyMgdGhlcmUgbWF5IGJlIGluIHNvbWUgc2l0dWF0aW9ucyBlLmcu
IGZvciBhbiBlZGl0b3Igb3Igc2NyaXB0IHRvIG1hbmlwdWxhdGUKICAgICAgICAgLy8gYWxzbywg
ZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCkBAIC0xOTYs
MTAgKzIwMCw2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgICAg
IGlmICghaXNBbHRlcm5hdGUoKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5k
aW5nU2hlZXQoKTsKIAotICAgICAgICAgICAgU3RyaW5nIGNoc2V0ID0gZ2V0QXR0cmlidXRlKGNo
YXJzZXRBdHRyKTsKLSAgICAgICAgICAgIGlmIChjaHNldC5pc0VtcHR5KCkgJiYgZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBjaHNldCA9IGRvY3VtZW50KCktPmZyYW1lKCkt
PmxvYWRlcigpLT5lbmNvZGluZygpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9j
YWNoZWRTaGVldCkgewogICAgICAgICAgICAgICAgIGlmIChtX2xvYWRpbmcpCiAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVBlbmRpbmdTaGVldCgpOwpAQCAtMjEzLDYgKzIx
MywxNCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgICAgICAgICAg
bV9sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVu
ZGluZ1NoZWV0KCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAobV9zaGVldCkKKyAgICAgICAgICAgICAgICBtX3NoZWV0ID0gMDsKKyAgICAgICAgICAg
IC8vIGNyZWF0ZSBhIGR1bW15IHNoZWV0IHdpdGhvdXQgdXJsIGFuZCBjb250ZW50CisgICAgICAg
ICAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHRoaXMsIG1fdXJsLCBjaHNldCk7
CisgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZSh0aXRsZSgpKTsKKyAgICAgICAgICAgIG1f
c2hlZXQtPnNldE1lZGlhKG1lZGlhLmdldCgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnVw
ZGF0ZVN0eWxlU2VsZWN0b3IoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9zaGVldCkg
ewogICAgICAgICAvLyB3ZSBubyBsb25nZXIgY29udGFpbiBhIHN0eWxlc2hlZXQsIGUuZy4gcGVy
aGFwcyByZWwgb3IgdHlwZSB3YXMgY2hhbmdlZAo=
</data>
<flag name="review"
          id="12246"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26031</attachid>
            <date>2008-12-15 13:52:47 -0800</date>
            <delta_ts>2008-12-24 01:12:19 -0800</delta_ts>
            <desc>Different approach</desc>
            <filename>22429-2.diff</filename>
            <type>text/plain</type>
            <size>5787</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmIxODRhLi4zNTEyYTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTIt
MTUgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGNhc2UgZm9yOgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MjkKKyAgICAgICAgZG9jdW1lbnQu
c3R5bGVTaGVldHMgY29sbGVjdGlvbiBpZ25vcmVzIG1lZGlhPXByZXNlbnRhdGlvbgorCisgICAg
ICAgICogZmFzdC9jc3Mvc2hlZXQtY29sbGVjdGlvbi1saW5rLmh0bWw6IEFkZGVkLgorCiAyMDA4
LTEyLTE1ICBQaWVycmUtT2xpdmllciBMYXRvdXIgIDxwb2xAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zaGVldC1jb2xsZWN0aW9uLWxpbmsuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0
LWNvbGxlY3Rpb24tbGluay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjhmYTg5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zaGVldC1j
b2xsZWN0aW9uLWxpbmsuaHRtbApAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnPgorICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmIChkb2N1bWVudC5z
dHlsZVNoZWV0cy5sZW5ndGggPT0gMTEgKQorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsgICAgICAgICAgICAKKyAgICB9
CisgICAgPC9zY3JpcHQ+CisgICAgPGxpbmsgbWVkaWE9ImFsbCIgaHJlZj0iZm9vLmNzcyIgcmVs
PSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0iYXVyYWwiIGhyZWY9ImZvby5jc3MiIHJl
bD0ic3R5bGVzaGVldCI+CisgICAgPGxpbmsgbWVkaWE9ImJyYWlsbGUiIGhyZWY9ImZvby5jc3Mi
IHJlbD0ic3R5bGVzaGVldCI+CisgICAgPGxpbmsgbWVkaWE9ImVtYm9zc2VkIiBocmVmPSJmb28u
Y3NzIiByZWw9InN0eWxlc2hlZXQiPgorICAgIDxsaW5rIG1lZGlhPSJoYW5kaGVsZCIgaHJlZj0i
Zm9vLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0icHJpbnQiIGhyZWY9
ImZvby5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CisgICAgPGxpbmsgbWVkaWE9InByb2plY3Rpb24i
IGhyZWY9ImZvby5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CisgICAgPGxpbmsgbWVkaWE9InNjcmVl
biIgaHJlZj0iZm9vLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0idHR5
IiBocmVmPSJmb28uY3NzIiByZWw9InN0eWxlc2hlZXQiPgorICAgIDxsaW5rIG1lZGlhPSJ0diIg
aHJlZj0iZm9vLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0iaW52YWxp
ZCIgaHJlZj0iZm9vLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB0aGUgc3R5bGVTaGVldCBjb2xsZWN0aW9uIGNv
bnRhaW5zIGFsbCBzaGVldHMgcmVmZXJlbmNlZCB0aHJvdWdoIHRoZSAmbHQ7bGluayZndDsgZWxl
bWVudHMuIFNlZSBidWcgIzIyNDI5LjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5Y2M2NDEzLi43MzI4YzhiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA4
LTEyLTE1ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQyOQorICAgICAgICBkb2N1bWVudC5zdHlsZVNoZWV0cyBjb2xsZWN0
aW9uIGlnbm9yZXMgbWVkaWE9cHJlc2VudGF0aW9uCisKKyAgICAgICAgRW5zdXJlIHRoYXQgc3R5
bGVzaGVldHMgdGhvdWdoIDxsaW5rPiBzaG93IHVwIGluIGRvY3VtZW50LnN0eWxlU2hlZXRzIHJl
Z2FyZGxlc3Mgb2YgbWVkaWEgYXR0cmlidXRlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3No
ZWV0LWNvbGxlY3Rpb24tbGluay5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorCiAy
MDA4LTEyLTE1ICBDYW1lcm9uIFp3YXJpY2ggIDx6d2FyaWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXgg
Mzk4MDU0YS4uYmZmYjhiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE4MiwzNyAr
MTgyLDI4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAvLyBTdHlsZXNo
ZWV0CiAgICAgLy8gVGhpcyB3YXMgYnVnZ3kgYW5kIHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxs
aW5rIHJlbD0iYWx0ZXJuYXRlIj4sIHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVh
bmluZy4gLWR3aAogICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gMiAmJiBtX2lzU3R5bGVTaGVl
dCAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgIC8vIG5vIG5lZWQgdG8gbG9hZCBz
dHlsZSBzaGVldHMgd2hpY2ggYXJlbid0IGZvciB0aGUgc2NyZWVuIG91dHB1dAotICAgICAgICAv
LyAjIyMgdGhlcmUgbWF5IGJlIGluIHNvbWUgc2l0dWF0aW9ucyBlLmcuIGZvciBhbiBlZGl0b3Ig
b3Igc2NyaXB0IHRvIG1hbmlwdWxhdGUKICAgICAgICAgLy8gYWxzbywgZG9uJ3QgbG9hZCBzdHls
ZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAgICAgIE1lZGlhUXVlcnlFdmFs
dWF0b3IgYWxsRXZhbCh0cnVlKTsKLSAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5F
dmFsKCJzY3JlZW4iLCB0cnVlKTsKLSAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2
YWwoInByaW50IiwgdHJ1ZSk7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gTWVk
aWFMaXN0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1fbWVkaWEpOwotICAgICAg
ICBpZiAoYWxsRXZhbC5ldmFsKG1lZGlhLmdldCgpKSB8fCBzY3JlZW5FdmFsLmV2YWwobWVkaWEu
Z2V0KCkpIHx8IHByaW50RXZhbC5ldmFsKG1lZGlhLmdldCgpKSkgewotCi0gICAgICAgICAgICAv
LyBBZGQgb3Vyc2VsdmVzIGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0
IGFuIGFsdGVybmF0ZSAKLSAgICAgICAgICAgIC8vIHN0eWxlc2hlZXQuICBBbHRlcm5hdGUgc3R5
bGVzaGVldHMgZG9uJ3QgaG9sZCB1cCByZW5kZXIgdHJlZSBjb25zdHJ1Y3Rpb24uCi0gICAgICAg
ICAgICBpZiAoIWlzQWx0ZXJuYXRlKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRk
UGVuZGluZ1NoZWV0KCk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBjaHNldCA9IGdldEF0dHJpYnV0
ZShjaGFyc2V0QXR0cik7Ci0gICAgICAgICAgICBpZiAoY2hzZXQuaXNFbXB0eSgpICYmIGRvY3Vt
ZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgY2hzZXQgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKKyAgICAgICAgLy8gQWRkIG91cnNlbHZlcyBhcyBh
IHBlbmRpbmcgc2hlZXQsIGJ1dCBvbmx5IGlmIHdlIGFyZW4ndCBhbiBhbHRlcm5hdGUgCisgICAg
ICAgIC8vIHN0eWxlc2hlZXQuICBBbHRlcm5hdGUgc3R5bGVzaGVldHMgZG9uJ3QgaG9sZCB1cCBy
ZW5kZXIgdHJlZSBjb25zdHJ1Y3Rpb24uCisgICAgICAgIGlmICghaXNBbHRlcm5hdGUoKSkKKyAg
ICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOworCisgICAgICAgIFN0cmlu
ZyBjaHNldCA9IGdldEF0dHJpYnV0ZShjaGFyc2V0QXR0cik7CisgICAgICAgIGlmIChjaHNldC5p
c0VtcHR5KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGNoc2V0ID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmVuY29kaW5nKCk7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbG9h
ZGluZykKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0
KCk7Ci0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKLSAgICAgICAgICAg
IG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxl
U2hlZXQobV91cmwsIGNoc2V0KTsKLSAgICAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQotICAg
ICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKCFpc0FsdGVybmF0ZSgpKSB7IC8vIHJlcXVlc3QgbWF5IGhhdmUgYmVlbiBkZW5p
ZWQgaWYgc3R5bGVzaGVldCBpcyBsb2NhbCBhbmQgZG9jdW1lbnQgaXMgcmVtb3RlLgotICAgICAg
ICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkg
eworICAgICAgICAgICAgaWYgKG1fbG9hZGluZykKICAgICAgICAgICAgICAgICBkb2N1bWVudCgp
LT5yZW1vdmVQZW5kaW5nU2hlZXQoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY2Fj
aGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICBtX2xvYWRp
bmcgPSB0cnVlOworICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KG1fdXJsLCBjaHNldCk7CisgICAgICAgIGlmIChtX2Nh
Y2hlZFNoZWV0KQorICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwor
ICAgICAgICBlbHNlIGlmICghaXNBbHRlcm5hdGUoKSkgeyAvLyByZXF1ZXN0IG1heSBoYXZlIGJl
ZW4gZGVuaWVkIGlmIHN0eWxlc2hlZXQgaXMgbG9jYWwgYW5kIGRvY3VtZW50IGlzIHJlbW90ZS4K
KyAgICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+
cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fc2hlZXQp
IHsKICAgICAgICAgLy8gd2Ugbm8gbG9uZ2VyIGNvbnRhaW4gYSBzdHlsZXNoZWV0LCBlLmcuIHBl
cmhhcHMgcmVsIG9yIHR5cGUgd2FzIGNoYW5nZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26236</attachid>
            <date>2008-12-24 01:12:19 -0800</date>
            <delta_ts>2009-05-26 13:20:41 -0700</delta_ts>
            <desc>Improved testcase</desc>
            <filename>22429-3.diff</filename>
            <type>text/plain</type>
            <size>6413</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NDQ3NWE4Li4yMmY5MzUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDgtMTIt
MjQgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGNhc2UgZm9yOgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MjkKKyAgICAgICAgZG9jdW1lbnQu
c3R5bGVTaGVldHMgY29sbGVjdGlvbiBpZ25vcmVzIG1lZGlhPXByZXNlbnRhdGlvbgorCisgICAg
ICAgICogZmFzdC9jc3Mvc2hlZXQtY29sbGVjdGlvbi1saW5rLmh0bWw6IEFkZGVkLgorCiAyMDA4
LTEyLTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3NoZWV0LWNvbGxlY3Rpb24tbGluay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc2hl
ZXQtY29sbGVjdGlvbi1saW5rLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2E4OTc1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3NoZWV0
LWNvbGxlY3Rpb24tbGluay5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHNjcmlwdCBsYW5ndWFnZT0namF2YXNjcmlwdCc+CisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdmFyIHNoZWV0cyA9
IGRvY3VtZW50LnN0eWxlU2hlZXRzOworICAgICAgICBpZiAoc2hlZXRzLmxlbmd0aCA9PSAxMSkg
eworICAgICAgICAgICAgZm9yIChpID0gMDtpIDwgc2hlZXRzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNoZWV0c1tpXS5jc3NSdWxlcy5sZW5ndGggIT0gMSB8fAorICAgICAg
ICAgICAgICAgICAgICBzaGVldHNbaV0uY3NzUnVsZXNbMF0udHlwZSAhPSBDU1NSdWxlLlNUWUxF
X1JVTEUgfHwKKyAgICAgICAgICAgICAgICAgICAgc2hlZXRzW2ldLmNzc1J1bGVzWzBdLnN0eWxl
LmdldFByb3BlcnR5Q1NTVmFsdWUoImJhY2tncm91bmQtaW1hZ2UiKSA9PSBudWxsKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gJ1NVQ0NFU1MnOworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxsaW5r
IG1lZGlhPSJhbGwiIGhyZWY9InJlc291cmNlcy9iYWNrZ3JvdW5kX2ltYWdlLmNzcyIgcmVsPSJz
dHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0iYXVyYWwiIGhyZWY9InJlc291cmNlcy9iYWNr
Z3JvdW5kX2ltYWdlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0iYnJh
aWxsZSIgaHJlZj0icmVzb3VyY2VzL2JhY2tncm91bmRfaW1hZ2UuY3NzIiByZWw9InN0eWxlc2hl
ZXQiPgorICAgIDxsaW5rIG1lZGlhPSJlbWJvc3NlZCIgaHJlZj0icmVzb3VyY2VzL2JhY2tncm91
bmRfaW1hZ2UuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorICAgIDxsaW5rIG1lZGlhPSJoYW5kaGVs
ZCIgaHJlZj0icmVzb3VyY2VzL2JhY2tncm91bmRfaW1hZ2UuY3NzIiByZWw9InN0eWxlc2hlZXQi
PgorICAgIDxsaW5rIG1lZGlhPSJwcmludCIgaHJlZj0icmVzb3VyY2VzL2JhY2tncm91bmRfaW1h
Z2UuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorICAgIDxsaW5rIG1lZGlhPSJwcm9qZWN0aW9uIiBo
cmVmPSJyZXNvdXJjZXMvYmFja2dyb3VuZF9pbWFnZS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+Cisg
ICAgPGxpbmsgbWVkaWE9InNjcmVlbiIgaHJlZj0icmVzb3VyY2VzL2JhY2tncm91bmRfaW1hZ2Uu
Y3NzIiByZWw9InN0eWxlc2hlZXQiPgorICAgIDxsaW5rIG1lZGlhPSJ0dHkiIGhyZWY9InJlc291
cmNlcy9iYWNrZ3JvdW5kX2ltYWdlLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KKyAgICA8bGluayBt
ZWRpYT0idHYiIGhyZWY9InJlc291cmNlcy9iYWNrZ3JvdW5kX2ltYWdlLmNzcyIgcmVsPSJzdHls
ZXNoZWV0Ij4KKyAgICA8bGluayBtZWRpYT0iaW52YWxpZCIgaHJlZj0icmVzb3VyY2VzL2JhY2tn
cm91bmRfaW1hZ2UuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHA+VGVzdCB0aGF0IHRoZSBzdHlsZVNoZWV0IGNvbGxlY3Rpb24gY29u
dGFpbnMgYWxsIHNoZWV0cyByZWZlcmVuY2VkIHRocm91Z2ggdGhlICZsdDtsaW5rJmd0OyBlbGVt
ZW50cy4gU2VlIGJ1ZyAjMjI0MjkuPC9wPgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDllODU2ZjIuLmZhNjE5MjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgt
MTItMjQgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDI5CisgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzIGNvbGxlY3Rp
b24gaWdub3JlcyBtZWRpYT1wcmVzZW50YXRpb24KKworICAgICAgICBFbnN1cmUgdGhhdCBzdHls
ZXNoZWV0cyB0aG91Z2ggPGxpbms+IHNob3cgdXAgaW4gZG9jdW1lbnQuc3R5bGVTaGVldHMgcmVn
YXJkbGVzcyBvZiBtZWRpYSBhdHRyaWJ1dGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc2hl
ZXQtY29sbGVjdGlvbi1saW5rLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcyk6CisKIDIw
MDgtMTItMjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCAx
OTIyMjZkLi5iY2Y5MTFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtMTgyLDM3ICsx
ODIsMjggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAgIC8vIFN0eWxlc2hl
ZXQKICAgICAvLyBUaGlzIHdhcyBidWdneSBhbmQgd291bGQgaW5jb3JyZWN0bHkgbWF0Y2ggPGxp
bmsgcmVsPSJhbHRlcm5hdGUiPiwgd2hpY2ggaGFzIGEgZGlmZmVyZW50IHNwZWNpZmllZCBtZWFu
aW5nLiAtZHdoCiAgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAhPSAyICYmIG1faXNTdHlsZVNoZWV0
ICYmIGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgLy8gbm8gbmVlZCB0byBsb2FkIHN0
eWxlIHNoZWV0cyB3aGljaCBhcmVuJ3QgZm9yIHRoZSBzY3JlZW4gb3V0cHV0Ci0gICAgICAgIC8v
ICMjIyB0aGVyZSBtYXkgYmUgaW4gc29tZSBzaXR1YXRpb25zIGUuZy4gZm9yIGFuIGVkaXRvciBv
ciBzY3JpcHQgdG8gbWFuaXB1bGF0ZQogICAgICAgICAvLyBhbHNvLCBkb24ndCBsb2FkIHN0eWxl
IHNoZWV0cyBmb3Igc3RhbmRhbG9uZSBkb2N1bWVudHMKLSAgICAgICAgTWVkaWFRdWVyeUV2YWx1
YXRvciBhbGxFdmFsKHRydWUpOwotICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2
YWwoInNjcmVlbiIsIHRydWUpOwotICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZh
bCgicHJpbnQiLCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWEgPSBNZWRp
YUxpc3Q6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgobV9tZWRpYSk7Ci0gICAgICAg
IGlmIChhbGxFdmFsLmV2YWwobWVkaWEuZ2V0KCkpIHx8IHNjcmVlbkV2YWwuZXZhbChtZWRpYS5n
ZXQoKSkgfHwgcHJpbnRFdmFsLmV2YWwobWVkaWEuZ2V0KCkpKSB7Ci0KLSAgICAgICAgICAgIC8v
IEFkZCBvdXJzZWx2ZXMgYXMgYSBwZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3ZSBhcmVuJ3Qg
YW4gYWx0ZXJuYXRlIAotICAgICAgICAgICAgLy8gc3R5bGVzaGVldC4gIEFsdGVybmF0ZSBzdHls
ZXNoZWV0cyBkb24ndCBob2xkIHVwIHJlbmRlciB0cmVlIGNvbnN0cnVjdGlvbi4KLSAgICAgICAg
ICAgIGlmICghaXNBbHRlcm5hdGUoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQ
ZW5kaW5nU2hlZXQoKTsKLQotICAgICAgICAgICAgU3RyaW5nIGNoc2V0ID0gZ2V0QXR0cmlidXRl
KGNoYXJzZXRBdHRyKTsKLSAgICAgICAgICAgIGlmIChjaHNldC5pc0VtcHR5KCkgJiYgZG9jdW1l
bnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBjaHNldCA9IGRvY3VtZW50KCktPmZyYW1l
KCktPmxvYWRlcigpLT5lbmNvZGluZygpOworICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIGFzIGEg
cGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAKKyAgICAg
ICAgLy8gc3R5bGVzaGVldC4gIEFsdGVybmF0ZSBzdHlsZXNoZWV0cyBkb24ndCBob2xkIHVwIHJl
bmRlciB0cmVlIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKCFpc0FsdGVybmF0ZSgpKQorICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7CisKKyAgICAgICAgU3RyaW5n
IGNoc2V0ID0gZ2V0QXR0cmlidXRlKGNoYXJzZXRBdHRyKTsKKyAgICAgICAgaWYgKGNoc2V0Lmlz
RW1wdHkoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgY2hzZXQgPSBkb2N1
bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9sb2Fk
aW5nKQotICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVQZW5kaW5nU2hlZXQo
KTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhpcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwotICAgICAgICAgICAg
bV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVT
aGVldChtX3VybCwgY2hzZXQpOwotICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCi0gICAg
ICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoIWlzQWx0ZXJuYXRlKCkpIHsgLy8gcmVxdWVzdCBtYXkgaGF2ZSBiZWVuIGRlbmll
ZCBpZiBzdHlsZXNoZWV0IGlzIGxvY2FsIGFuZCBkb2N1bWVudCBpcyByZW1vdGUuCi0gICAgICAg
ICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KSB7
CisgICAgICAgICAgICBpZiAobV9sb2FkaW5nKQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCkt
PnJlbW92ZVBlbmRpbmdTaGVldCgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jYWNo
ZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICB9CisgICAgICAgIG1fbG9hZGlu
ZyA9IHRydWU7CisgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIo
KS0+cmVxdWVzdENTU1N0eWxlU2hlZXQobV91cmwsIGNoc2V0KTsKKyAgICAgICAgaWYgKG1fY2Fj
aGVkU2hlZXQpCisgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5hZGRDbGllbnQodGhpcyk7Cisg
ICAgICAgIGVsc2UgaWYgKCFpc0FsdGVybmF0ZSgpKSB7IC8vIHJlcXVlc3QgbWF5IGhhdmUgYmVl
biBkZW5pZWQgaWYgc3R5bGVzaGVldCBpcyBsb2NhbCBhbmQgZG9jdW1lbnQgaXMgcmVtb3RlLgor
ICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5y
ZW1vdmVQZW5kaW5nU2hlZXQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9zaGVldCkg
ewogICAgICAgICAvLyB3ZSBubyBsb25nZXIgY29udGFpbiBhIHN0eWxlc2hlZXQsIGUuZy4gcGVy
aGFwcyByZWwgb3IgdHlwZSB3YXMgY2hhbmdlZAo=
</data>
<flag name="review"
          id="12404"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>