<?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>7761</bug_id>
          
          <creation_ts>2006-03-13 22:29:21 -0800</creation_ts>
          <short_desc>Tabs in class attribute not treated as whitespace</short_desc>
          <delta_ts>2019-02-06 09:03:35 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</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>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>36187</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-13 22:29:21 -0800</bug_when>
    <thetext>Tab characters are considered part of the class name they precede/follow. See the test case, which renders correctly in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36188</commentid>
    <comment_count>1</comment_count>
      <attachid>7057</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-13 22:29:57 -0800</bug_when>
    <thetext>Created attachment 7057
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36329</commentid>
    <comment_count>2</comment_count>
      <attachid>7064</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-14 15:29:17 -0800</bug_when>
    <thetext>Created attachment 7064
Treat \t and \r as whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36330</commentid>
    <comment_count>3</comment_count>
      <attachid>7064</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-14 15:46:59 -0800</bug_when>
    <thetext>Comment on attachment 7064
Treat \t and \r as whitespace

Looks great. We wanted to get this class off of QStringList anyway, so hooray for that!

OK, let me now be crazy and make premature optimization comments:

+        while (classAttr[sPos] &amp;&amp; (classAttr[sPos] == &apos; &apos; || classAttr[sPos] == &apos;\r&apos; || classAttr[sPos] == &apos;\n&apos; || classAttr[sPos] == &apos;\t&apos;))
+            sPos++;

The code above is a little inefficient. First of all, it checks that the character is non-null before comparing it with three specific characters. The check for 0 is not needed because if it&apos;s &apos; &apos; or &apos;\r&apos; or &apos;\n&apos; or &apos;\t&apos;, then it&apos;s definitely not 0.

Each call to the [] operator does a separate comparison with the length of the string so it would be nicer if we didn&apos;t have to index over and over again. If you made a little helper function then you could write:

    while (isClassWhitespace(classAttr[sPos]))
        sPos++;

which might be clearer anyway.

Checking for the null character to detect the end of the string is intrinsically inefficient for our Platform::String class, because it has a length stored, not a trailing null. So if you were to take classAttr.unicode() and classAttr.length() and work directly, you&apos;d end up with something more efficient. Something like this:

    str = classAttr.unicode();

    while (sPos &lt; length &amp;&amp; isClassWhitespace(str[sPos]))
        ++sPos;
    if (sPos &gt;= length)
        break;
    int ePos = sPos;
    while (ePos &lt; length &amp;&amp; !isClassWhitespace(str[ePos]))
        ++sPos;

But I can&apos;t tell whether this kind of tweaking makes the code better or worse.

ePos should not be declared outside the loop. Instead it should be declared right where it&apos;s used.

Do we want to optimize the common case where sPos is 0 and ePos is 1 so that we don&apos;t create a new atomic string for that case?

Not sure what to do about these nitpicks. The code is good as is. I&apos;m going to mark this review-, but it&apos;s practically a review+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36331</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-14 15:47:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 7064 [edit])
&gt; Do we want to optimize the common case where sPos is 0 and ePos is 1 so that we
&gt; don&apos;t create a new atomic string for that case?

I meant where sPos is 0 and ePos is len.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36451</commentid>
    <comment_count>5</comment_count>
      <attachid>7089</attachid>
    <who name="">mitz</who>
    <bug_when>2006-03-15 10:01:27 -0800</bug_when>
    <thetext>Created attachment 7089
Revised patch

(In reply to comment #3)
&gt; OK, let me now be crazy and make premature optimization comments:

Yay! I followed your suggestions in this version.

&gt; Do we want to optimize the common case [...] so that we
&gt; don&apos;t create a new atomic string for that case?

In that case, this patch uses AtomicString(classAttr) instead of AtomicString(str, length), but I almost convinced myself that there is no difference.

&gt; Not sure what to do about these nitpicks. The code is good as is.

Not really... it was also checking each boundary character twice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36461</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-15 10:38:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; In that case, this patch uses AtomicString(classAttr) instead of
&gt; AtomicString(str, length), but I almost convinced myself that there is no
&gt; difference.

You&apos;re right, there is no difference. To make a difference we&apos;d have to change the code path so that the attribute stays an atomic string. Currently the attribute starts out an atomic string in the attribute, but then:

    1) AttrImpl::value() changes it into a plain string (should be changed to return AtomicString)
    2) calling parseClassAttribute would also change it into a plain string (should be changed to pass an AtomicString)

Also, lowercasing inside parseClassAttribute has to be done carefully; the code does seem to be doing that right already.

But if we took care of all of those, then we could have a fast path. I&apos;m not certain it would matter, but it seems like it would be a win. But lets not require that be in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36466</commentid>
    <comment_count>7</comment_count>
      <attachid>7089</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-15 10:40:25 -0800</bug_when>
    <thetext>Comment on attachment 7089
Revised patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36949</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-03-19 11:22:37 -0800</bug_when>
    <thetext>Verified in r13387 nightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502999</commentid>
    <comment_count>9</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:35 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7057</attachid>
            <date>2006-03-13 22:29:57 -0800</date>
            <delta_ts>2006-03-13 22:29:57 -0800</delta_ts>
            <desc>test case</desc>
            <filename>tabsInClassAttr.html</filename>
            <type>text/html</type>
            <size>165</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PHN0eWxlPgogICAgcCB7IGNvbG9yOiByZWQ7IH0KCXAuZ3JlZW4geyBjb2xvcjogZ3JlZW47IH0K
PC9zdHlsZT4KPGRpdj5UaGVzZSBzaG91bGQgYmUgZ3JlZW46PC9kaXY+CjxwIGNsYXNzPSJncmVl
bgkiPlRhYiBhZnRlcjwvcD4KPHAgY2xhc3M9IglncmVlbiI+VGFiIGJlZm9yZTwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7064</attachid>
            <date>2006-03-14 15:29:17 -0800</date>
            <delta_ts>2006-03-15 10:02:35 -0800</delta_ts>
            <desc>Treat \t and \r as whitespace</desc>
            <filename>7761_r1.patch</filename>
            <type>text/plain</type>
            <size>8179</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzMjkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDMtIyMgIE1pdHogUGV0dGVsICA8b3Bl
bmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBUZXN0IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjEKKyAgICAgICAgICBUYWJzIGluIGNsYXNzIGF0dHJp
YnV0ZSBub3QgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlCisKKyAgICAgICAgKiBmYXN0L2RvbS9FbGVt
ZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRy
aWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0VsZW1lbnQvY2xhc3MtYXR0cmlidXRlLXdoaXRlc3BhY2UuaHRtbDogQWRkZWQuCisKIDIwMDYt
MDMtMTQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGtpbHplci5uZXQ+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFz
cy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4
cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorNzE1YjUyMGIzYzhkNDAzYzU1MDRmMjgwNDZhZGE1YzcKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVt
ZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBjbGFzcy1h
dHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWlt
ZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1
dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSA1M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUz
OiAiVGVzdCBmb3IgIgorICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNpemUgNjU1
eDE4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDM0OHgxOCBbY29s
b3I9IzAwMDBFRV0KKyAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICg1MywwKSBzaXpl
IDM0OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTMsMCkgd2lkdGggMzQ4OiAiaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYxIgorICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICg0MDEsMCkgc2l6ZSAzMDd4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICg0MDEsMCkgd2lkdGggMzA3OiAiIFRhYnMgaW4gY2xhc3MgYXR0cmlidXRl
IG5vdCB0cmVhdGVkIGFzIHdoaXRlc3BhY2UiCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICg3MDgsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDcwOCwwKSB3aWR0aCA0
OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAyMzN4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzM6ICJBbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUg
Z3JlZW46IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNjgpIHNpemUgNzg0eDE4IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDU3
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTc6ICJUYWIgYWZ0ZXIiCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw4Nikgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNjl4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2OTogIlRhYiBiZWZvcmUiCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwxMDQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDg2eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggODY6ICJOZXdsaW5lIGFmdGVyIgorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMTIyKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA5OHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDk4OiAiTmV3bGluZSBiZWZvcmUiCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwxNDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNzY6ICJTcGFjZXMgYWZ0ZXIiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwxNTgpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDg4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggODg6ICJTcGFjZXMgYmVmb3JlIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MTc2KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSA1NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDU0OiAiQ1IgYWZ0ZXIiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOTQpIHNpemUg
Nzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDY2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjY6ICJDUiBi
ZWZvcmUiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0
ZS13aGl0ZXNwYWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KKyAgICBkaXYgeyBjb2xvcjogcmVkOyB9CisJZGl2LmdyZWVuIHsgY29s
b3I6IGdyZWVuOyB9Cis8L3N0eWxlPgorPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPgorVGVzdCBmb3IgPGk+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzYxIj5odHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTc3NjE8L2E+CitUYWJzIGluIGNsYXNzIGF0dHJpYnV0ZSBub3QgdHJlYXRl
ZCBhcyB3aGl0ZXNwYWNlPC9pPi4KKzwvcD4KKzxwPkFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3Vs
ZCBiZSBncmVlbjo8L3A+Cis8ZGl2IGNsYXNzPSJncmVlbgkiPlRhYiBhZnRlcjwvZGl2PgorPGRp
diBjbGFzcz0iCWdyZWVuIj5UYWIgYmVmb3JlPC9kaXY+Cis8ZGl2IGNsYXNzPSJncmVlbgorIj5O
ZXdsaW5lIGFmdGVyPC9kaXY+Cis8ZGl2IGNsYXNzPSIKK2dyZWVuIj5OZXdsaW5lIGJlZm9yZTwv
ZGl2PgorPGRpdiBjbGFzcz0iZ3JlZW4gICAiPlNwYWNlcyBhZnRlcjwvZGl2PgorPGRpdiBjbGFz
cz0iICAgZ3JlZW4iPlNwYWNlcyBiZWZvcmU8L2Rpdj4KKzxkaXYgY2xhc3M9ImdyZWVuDWZvbyI+
Q1IgYWZ0ZXI8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvbw1ncmVlbiI+Q1IgYmVmb3JlPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyOTApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA2LTAzLSMjICBNaXR6IFBldHRlbCAg
PG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0VsZW1lbnQvY2xhc3MtYXR0cmlidXRlLXdoaXRlc3BhY2UuaHRtbAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5v
cGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2MQorICAgICAgICAgIFRhYnMgaW4gY2xh
c3MgYXR0cmlidXRlIG5vdCB0cmVhdGVkIGFzIHdoaXRlc3BhY2UKKworICAgICAgICAqIGRvbS9k
b21fZWxlbWVudGltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRNYXBwZWRBdHRyTWFw
SW1wbDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IFRyZWF0IFx0IGFuZCBccgorICAgICAgICBhcyB3
aGl0ZXNwYWNlIHRvby4KKwogMjAwNi0wMy0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgYW5kIEVyaWMuCkluZGV4OiBXZWJDb3Jl
L2RvbS9kb21fZWxlbWVudGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL2RvbV9l
bGVtZW50aW1wbC5jcHAJKHJldmlzaW9uIDEzMjg3KQorKysgV2ViQ29yZS9kb20vZG9tX2VsZW1l
bnRpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0MCwyNyArMTI0MCwzMiBAQCB2b2lkIE5h
bWVkTWFwcGVkQXR0ck1hcEltcGw6OnBhcnNlQ2xhc3NBCiAgICAgICAgIChjbGFzc1N0ci5pbXBs
KCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogRE9NU3RyaW5nKGNsYXNzU3RyLmltcGwoKS0+bG93
ZXIoKSkpIDoKICAgICAgICAgY2xhc3NTdHI7CiAgICAgCi0gICAgaWYgKGNsYXNzQXR0ci5maW5k
KCcgJykgPT0gLTEgJiYgY2xhc3NBdHRyLmZpbmQoJ1xuJykgPT0gLTEpCi0gICAgICAgIG1fY2xh
c3NMaXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoY2xhc3NBdHRyKSk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIFFTdHJpbmcgdmFsID0gY2xhc3NBdHRyLnFzdHJpbmcoKTsKLSAgICAgICAgdmFsLnJl
cGxhY2UoJ1xuJywgJyAnKTsKLSAgICAgICAgUVN0cmluZ0xpc3QgbGlzdCA9IFFTdHJpbmdMaXN0
OjpzcGxpdCgnICcsIHZhbCk7CisgICAgQXRvbWljU3RyaW5nTGlzdCogY3VyciA9IDA7CisgICAg
aW50IHNQb3MgPSAwOworICAgIGludCBlUG9zOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
IHdoaWxlIChjbGFzc0F0dHJbc1Bvc10gJiYgKGNsYXNzQXR0cltzUG9zXSA9PSAnICcgfHwgY2xh
c3NBdHRyW3NQb3NdID09ICdccicgfHwgY2xhc3NBdHRyW3NQb3NdID09ICdcbicgfHwgY2xhc3NB
dHRyW3NQb3NdID09ICdcdCcpKQorICAgICAgICAgICAgc1BvcysrOwogICAgICAgICAKLSAgICAg
ICAgQXRvbWljU3RyaW5nTGlzdCogY3VyciA9IDA7Ci0gICAgICAgIGZvciAoUVN0cmluZ0xpc3Q6
Okl0ZXJhdG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0KSB7Ci0g
ICAgICAgICAgICBjb25zdCBRU3RyaW5nJiBzaW5nbGVDbGFzcyA9ICppdDsKLSAgICAgICAgICAg
IGlmICghc2luZ2xlQ2xhc3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnIp
IHsKLSAgICAgICAgICAgICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcgQXRvbWljU3RyaW5nTGlz
dChBdG9taWNTdHJpbmcoc2luZ2xlQ2xhc3MpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnIg
PSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBtX2NsYXNzTGlzdC5zZXRTdHJpbmcoQXRvbWljU3RyaW5n
KHNpbmdsZUNsYXNzKSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnIgPSAmbV9jbGFzc0xpc3Q7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAoIWNsYXNzQXR0cltzUG9zXSkgICAKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgZVBvcyA9IHNQb3M7CisgICAgICAg
IAorICAgICAgICB3aGlsZSAoY2xhc3NBdHRyW2VQb3NdICYmIGNsYXNzQXR0cltlUG9zXSAhPSAn
ICcgJiYgY2xhc3NBdHRyW2VQb3NdICE9ICdccicgJiYgY2xhc3NBdHRyW2VQb3NdICE9ICdcbicg
JiYgY2xhc3NBdHRyW2VQb3NdICE9ICdcdCcpCisgICAgICAgICAgICBlUG9zKys7CisgICAgICAg
IAorICAgICAgICBpZiAoZVBvcyA+IHNQb3MpIHsKKyAgICAgICAgICAgIGlmIChjdXJyKSB7Cisg
ICAgICAgICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcgQXRvbWljU3RyaW5nTGlzdChBdG9taWNT
dHJpbmcoY2xhc3NBdHRyLnVuaWNvZGUoKSArIHNQb3MsIGVQb3MgLSBzUG9zKSkpOworICAgICAg
ICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIG1fY2xhc3NMaXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoY2xhc3NBdHRy
LnVuaWNvZGUoKSArIHNQb3MsIGVQb3MgLSBzUG9zKSk7CisgICAgICAgICAgICAgICAgY3VyciA9
ICZtX2NsYXNzTGlzdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgc1BvcyA9IGVQb3M7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="1840"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7089</attachid>
            <date>2006-03-15 10:01:27 -0800</date>
            <delta_ts>2006-03-15 10:40:25 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>7761_r2.patch</filename>
            <type>text/plain</type>
            <size>8644</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzMjkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDMtIyMgIE1pdHogUGV0dGVsICA8b3Bl
bmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBUZXN0IGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjEKKyAgICAgICAgICBUYWJzIGluIGNsYXNzIGF0dHJp
YnV0ZSBub3QgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlCisKKyAgICAgICAgKiBmYXN0L2RvbS9FbGVt
ZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRy
aWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0VsZW1lbnQvY2xhc3MtYXR0cmlidXRlLXdoaXRlc3BhY2UuaHRtbDogQWRkZWQuCisKIDIwMDYt
MDMtMTQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGtpbHplci5uZXQ+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFjaWVqLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFz
cy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4
cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSBAQAorNzE1YjUyMGIzYzhkNDAzYzU1MDRmMjgwNDZhZGE1YzcKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVt
ZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBjbGFzcy1h
dHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWlt
ZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1
dGUtd2hpdGVzcGFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0ZS13aGl0ZXNwYWNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSA1M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUz
OiAiVGVzdCBmb3IgIgorICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNpemUgNjU1
eDE4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDM0OHgxOCBbY29s
b3I9IzAwMDBFRV0KKyAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICg1MywwKSBzaXpl
IDM0OHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTMsMCkgd2lkdGggMzQ4OiAiaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYxIgorICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICg0MDEsMCkgc2l6ZSAzMDd4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICg0MDEsMCkgd2lkdGggMzA3OiAiIFRhYnMgaW4gY2xhc3MgYXR0cmlidXRl
IG5vdCB0cmVhdGVkIGFzIHdoaXRlc3BhY2UiCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICg3MDgsMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDcwOCwwKSB3aWR0aCA0
OiAiLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAyMzN4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzM6ICJBbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUg
Z3JlZW46IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNjgpIHNpemUgNzg0eDE4IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDU3
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTc6ICJUYWIgYWZ0ZXIiCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw4Nikgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNjl4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2OTogIlRhYiBiZWZvcmUiCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwxMDQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDg2eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggODY6ICJOZXdsaW5lIGFmdGVyIgorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMTIyKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA5OHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDk4OiAiTmV3bGluZSBiZWZvcmUiCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwxNDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNzY6ICJTcGFjZXMgYWZ0ZXIiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwxNTgpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDg4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggODg6ICJTcGFjZXMgYmVmb3JlIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MTc2KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSA1NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDU0OiAiQ1IgYWZ0ZXIiCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOTQpIHNpemUg
Nzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDY2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjY6ICJDUiBi
ZWZvcmUiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2NsYXNzLWF0dHJpYnV0
ZS13aGl0ZXNwYWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxl
bWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9jbGFzcy1hdHRyaWJ1dGUtd2hpdGVzcGFjZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KKyAgICBkaXYgeyBjb2xvcjogcmVkOyB9CisJZGl2LmdyZWVuIHsgY29s
b3I6IGdyZWVuOyB9Cis8L3N0eWxlPgorPHRpdGxlPjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPgorVGVzdCBmb3IgPGk+PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NzYxIj5odHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTc3NjE8L2E+CitUYWJzIGluIGNsYXNzIGF0dHJpYnV0ZSBub3QgdHJlYXRl
ZCBhcyB3aGl0ZXNwYWNlPC9pPi4KKzwvcD4KKzxwPkFsbCBvZiB0aGUgZm9sbG93aW5nIHNob3Vs
ZCBiZSBncmVlbjo8L3A+Cis8ZGl2IGNsYXNzPSJncmVlbgkiPlRhYiBhZnRlcjwvZGl2PgorPGRp
diBjbGFzcz0iCWdyZWVuIj5UYWIgYmVmb3JlPC9kaXY+Cis8ZGl2IGNsYXNzPSJncmVlbgorIj5O
ZXdsaW5lIGFmdGVyPC9kaXY+Cis8ZGl2IGNsYXNzPSIKK2dyZWVuIj5OZXdsaW5lIGJlZm9yZTwv
ZGl2PgorPGRpdiBjbGFzcz0iZ3JlZW4gICAiPlNwYWNlcyBhZnRlcjwvZGl2PgorPGRpdiBjbGFz
cz0iICAgZ3JlZW4iPlNwYWNlcyBiZWZvcmU8L2Rpdj4KKzxkaXYgY2xhc3M9ImdyZWVuDWZvbyI+
Q1IgYWZ0ZXI8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvbw1ncmVlbiI+Q1IgYmVmb3JlPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzMDQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA2LTAzLSMjICBNaXR6IFBldHRlbCAg
PG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9t
L0VsZW1lbnQvY2xhc3MtYXR0cmlidXRlLXdoaXRlc3BhY2UuaHRtbAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5v
cGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2MQorICAgICAgICAgIFRhYnMgaW4gY2xh
c3MgYXR0cmlidXRlIG5vdCB0cmVhdGVkIGFzIHdoaXRlc3BhY2UKKworICAgICAgICAqIGRvbS9k
b21fZWxlbWVudGltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDbGFzc1doaXRlc3BhY2Up
OiBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBjaGFyYWN0ZXIKKyAgICAgICAgaW4gdGhl
IGNsYXNzIGF0dHJpYnV0ZSBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlLiBBZGRlZCBc
ciBhbmQgXHQuCisgICAgICAgIChXZWJDb3JlOjpOYW1lZE1hcHBlZEF0dHJNYXBJbXBsOjpwYXJz
ZUNsYXNzQXR0cmlidXRlKTogSW5zdGVhZCBvZiBjcmVhdGluZworICAgICAgICBhIFFTdHJpbmdM
aXN0IGFuZCBpdGVyYXRpbmcgaXQsIGRvIGV2ZXJ5dGhpbmcgaW4gb25lIHBhc3Mgb3ZlciB0aGUg
c3RyaW5nLgorCiAyMDA2LTAzLTE1ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4K
IAogICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvZG9tL2RvbV9lbGVt
ZW50aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vZG9tX2VsZW1lbnRpbXBsLmNw
cAkocmV2aXNpb24gMTMyODcpCisrKyBXZWJDb3JlL2RvbS9kb21fZWxlbWVudGltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQ4LDYgKzEyNDgsMTEgQEAgYm9vbCBOYW1lZE1hcHBlZEF0dHJN
YXBJbXBsOjptYXBzRXF1aXZhbAogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgc3RhdGlj
IGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoUUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9PSAnICcg
fHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Cit9CisKIHZvaWQgTmFtZWRN
YXBwZWRBdHRyTWFwSW1wbDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBET01TdHJpbmcmIGNs
YXNzU3RyKQogewogICAgIG1fY2xhc3NMaXN0LmNsZWFyKCk7CkBAIC0xMjU4LDI3ICsxMjYzLDMy
IEBAIHZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwSW1wbDo6cGFyc2VDbGFzc0EKICAgICAgICAgKGNs
YXNzU3RyLmltcGwoKS0+aXNMb3dlcigpID8gY2xhc3NTdHIgOiBET01TdHJpbmcoY2xhc3NTdHIu
aW1wbCgpLT5sb3dlcigpKSkgOgogICAgICAgICBjbGFzc1N0cjsKICAgICAKLSAgICBpZiAoY2xh
c3NBdHRyLmZpbmQoJyAnKSA9PSAtMSAmJiBjbGFzc0F0dHIuZmluZCgnXG4nKSA9PSAtMSkKLSAg
ICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhjbGFzc0F0dHIpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgUVN0cmluZyB2YWwgPSBjbGFzc0F0dHIucXN0cmluZygpOwotICAg
ICAgICB2YWwucmVwbGFjZSgnXG4nLCAnICcpOwotICAgICAgICBRU3RyaW5nTGlzdCBsaXN0ID0g
UVN0cmluZ0xpc3Q6OnNwbGl0KCcgJywgdmFsKTsKLSAgICAgICAgCi0gICAgICAgIEF0b21pY1N0
cmluZ0xpc3QqIGN1cnIgPSAwOwotICAgICAgICBmb3IgKFFTdHJpbmdMaXN0OjpJdGVyYXRvciBp
dCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gbGlzdC5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAg
Y29uc3QgUVN0cmluZyYgc2luZ2xlQ2xhc3MgPSAqaXQ7Ci0gICAgICAgICAgICBpZiAoIXNpbmds
ZUNsYXNzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGlmIChjdXJyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGN1cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xpc3QoQXRvbWljU3Ry
aW5nKHNpbmdsZUNsYXNzKSkpOwotICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci0+bmV4
dCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhzaW5nbGVDbGFz
cykpOwotICAgICAgICAgICAgICAgICAgICBjdXJyID0gJm1fY2xhc3NMaXN0OwotICAgICAgICAg
ICAgICAgIH0KKyAgICBBdG9taWNTdHJpbmdMaXN0KiBjdXJyID0gMDsKKyAgICAKKyAgICBjb25z
dCBRQ2hhciogc3RyID0gY2xhc3NBdHRyLnVuaWNvZGUoKTsKKyAgICBpbnQgbGVuZ3RoID0gY2xh
c3NBdHRyLmxlbmd0aCgpOworICAgIGludCBzUG9zID0gMDsKKworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIHdoaWxlIChzUG9zIDwgbGVuZ3RoICYmIGlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltz
UG9zXSkpCisgICAgICAgICAgICArK3NQb3M7CisgICAgICAgIGlmIChzUG9zID49IGxlbmd0aCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpbnQgZVBvcyA9IHNQb3MgKyAxOworICAgICAg
ICB3aGlsZSAoZVBvcyA8IGxlbmd0aCAmJiAhaXNDbGFzc1doaXRlc3BhY2Uoc3RyW2VQb3NdKSkK
KyAgICAgICAgICAgICsrZVBvczsKKyAgICAgICAgaWYgKGN1cnIpIHsKKyAgICAgICAgICAgIGN1
cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xpc3QoQXRvbWljU3RyaW5nKHN0ciArIHNQb3Ms
IGVQb3MgLSBzUG9zKSkpOworICAgICAgICAgICAgY3VyciA9IGN1cnItPm5leHQoKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzUG9zID09IDAgJiYgZVBvcyA9PSBsZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICBtX2NsYXNzTGlzdC5zZXRTdHJpbmcoQXRvbWljU3RyaW5nKGNs
YXNzQXR0cikpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9z
IC0gc1BvcykpOworICAgICAgICAgICAgY3VyciA9ICZtX2NsYXNzTGlzdDsKICAgICAgICAgfQor
ICAgICAgICBzUG9zID0gZVBvcyArIDE7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="1851"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>