<?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>3667</bug_id>
          
          <creation_ts>2005-06-23 00:17:32 -0700</creation_ts>
          <short_desc>Core JavaScript 1.5 Reference:Objects:Array:forEach</short_desc>
          <delta_ts>2005-07-03 08:15:22 -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>JavaScriptCore</component>
          <version>412</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Francisco Tolmasky">tolmasky</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12897</commentid>
    <comment_count>0</comment_count>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 00:17:32 -0700</bug_when>
    <thetext>Executes a provided function once per array element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12898</commentid>
    <comment_count>1</comment_count>
      <attachid>2569</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 00:26:20 -0700</bug_when>
    <thetext>Created attachment 2569
Patch that adds forEach Javascript 1.5 functionality to JavascriptCore

This attachment adds the functionality outlined by Ecma for forEach in the
Array object as found here:
http://developer-test.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:forEach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12919</commentid>
    <comment_count>2</comment_count>
      <attachid>2569</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-23 07:06:56 -0700</bug_when>
    <thetext>Comment on attachment 2569
Patch that adds forEach Javascript 1.5 functionality to JavascriptCore

Patch looks good.

Need a few things before we can take it, though:

    1) We need a layout test to land along with the bug fix. It should test
both the 1 argument and 2 argument forms, as well as cases where the function
raises an exception. In addition it should test the return value and passing
strange values, including both &quot;null&quot; and &quot;undefined&quot; for both parameters.
    2) The check for thisObject should be changed: The way args works, anything
past the end is &quot;undefined&quot;, so the code should do an &quot;undefined or null&quot; check
instead of the size check so that undefined will be handed the same way null
is. I&apos;d suggest args[1].imp()-&gt;isUndefinedOrNull().
    3) The for statement uses &quot;unsigned int&quot; where we typically use &quot;unsigned&quot;
and is missing a space between the for and the &quot;(&quot;.
    4) The for loop continues to iterate even if the function called raises an
exception. I think it should probably break if there&apos;s an exception; need a
test case for that.

Looking good. It will be great to have this implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12966</commentid>
    <comment_count>3</comment_count>
      <attachid>2598</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 10:51:54 -0700</bug_when>
    <thetext>Created attachment 2598
Revised patch that adds forEach Javascript 1.5 functionality to JavascriptCore

This revised patch fixes the following concerns:
1. Coding Style Guidelines
2. Proper handling of exceptions.
3. Proper handling of optional arguments.

Also changed &quot;thisObject&quot; to &quot;applyThis&quot; so as to not be confused with
&quot;thisObj&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12967</commentid>
    <comment_count>4</comment_count>
      <attachid>2600</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 10:55:23 -0700</bug_when>
    <thetext>Created attachment 2600
Layout tests to test forEach functionality.

This archive contains the layout test for forEach as well as the expected
results and should be places in layout-tests/fast/js/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12970</commentid>
    <comment_count>5</comment_count>
      <attachid>2600</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-23 11:13:46 -0700</bug_when>
    <thetext>Comment on attachment 2600
Layout tests to test forEach functionality.

Very nice looking test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12971</commentid>
    <comment_count>6</comment_count>
      <attachid>2598</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-23 11:14:13 -0700</bug_when>
    <thetext>Comment on attachment 2598
Revised patch that adds forEach Javascript 1.5 functionality to JavascriptCore

A few tiny code formatting issues.

There should only be one space after the colon (&quot;:  args[1]&quot;).

There should not be a space after the parenthesis in the for.

The if statement is formatting incorrectly:

    if (exec-&gt;hadException())

the above is correct style. Patch otherwise looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12981</commentid>
    <comment_count>7</comment_count>
      <attachid>2602</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 11:50:41 -0700</bug_when>
    <thetext>Created attachment 2602
Revised patch that adds forEach Javascript 1.5 functionality to JavascriptCore

Fixed hasException coding style convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13013</commentid>
    <comment_count>8</comment_count>
      <attachid>2611</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 17:39:28 -0700</bug_when>
    <thetext>Created attachment 2611
Patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore

I went ahead and added some and every support.	I also fixed a bug that caused
Safari to crash when you sent in a non-function as the callback, for instance:
myArray.forEach(5).  To check for this I added another test to the layout-tests
(look at other attachments for this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13014</commentid>
    <comment_count>9</comment_count>
      <attachid>2612</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-23 17:43:01 -0700</bug_when>
    <thetext>Created attachment 2612
Layout tests to test forEach(), some(), and every() functionality.

I added another test to array-foreach.html to account for a crashing bug. I
also went ahead and wrote comprehensive tests for every and some.  Pretty sure
everything is rigorously tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13090</commentid>
    <comment_count>10</comment_count>
      <attachid>2612</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-24 08:37:00 -0700</bug_when>
    <thetext>Comment on attachment 2612
Layout tests to test forEach(), some(), and every() functionality.

Nice test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13091</commentid>
    <comment_count>11</comment_count>
      <attachid>2611</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-24 08:45:08 -0700</bug_when>
    <thetext>Comment on attachment 2611
Patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore

Looks great. There are some minor issues remaining that should be fixed before
we land this.

The URL in the comment only documents forEach, so it&apos;s not quite right any
more.

Formatting issues:

    1) Comment inside the case is not indented to match the code.
    2) &quot;if(id&quot; should be &quot;if (id&quot;
    3) single-line if and else, should be broken into multiple lines
    4) &quot;for ( unsigned&quot; should be &quot;for (unsigned&quot;
    5) indenting of if statements at end of loop looks like it&apos;s either wrong
or using tabs
    6) no need for else after an if statement that does a break

I think the if statement that sets up the result before the loop would be
clearer if it had a separate case for Some and for Every; the current version
is unnecessarily clever in a way that makes it slightly less clear.

The predicateResult boolean should be declared where it&apos;s initialized. There&apos;s
no reason to declare it outside the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13099</commentid>
    <comment_count>12</comment_count>
      <attachid>2630</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2005-06-24 11:21:11 -0700</bug_when>
    <thetext>Created attachment 2630
Revised patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13116</commentid>
    <comment_count>13</comment_count>
      <attachid>2630</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-24 21:27:00 -0700</bug_when>
    <thetext>Comment on attachment 2630
Revised patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore

There&apos;s still a lot of indentation using tabs in the new code in this patch;
need to use spaces instead.

But I&apos;m not going to be a hardass and say review- just because of that. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13517</commentid>
    <comment_count>14</comment_count>
      <attachid>2708</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2005-06-29 18:25:55 -0700</bug_when>
    <thetext>Created attachment 2708
patch revised for indentation

Fixing indentation before committing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2569</attachid>
            <date>2005-06-23 00:26:20 -0700</date>
            <delta_ts>2005-06-23 10:51:54 -0700</delta_ts>
            <desc>Patch that adds forEach Javascript 1.5 functionality to JavascriptCore</desc>
            <filename>forEachPatch.txt</filename>
            <type>text/plain</type>
            <size>2940</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQxCmRpZmYgLXAgLXUgLXIxLjQxIC4vSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAKLS0tIC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29i
amVjdC5jcHAJMjAwNS8wNi8yMiAwMDo0ODo0NwkxLjQxCisrKyAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuY3BwCTIwMDUvMDYvMjMgMDc6MjI6NTgKQEAgLTM5MCw3ICszOTAsNyBA
QCB1bnNpZ25lZCBBcnJheUluc3RhbmNlSW1wOjpwdXNoVW5kZWZpbmVkCiBjb25zdCBDbGFzc0lu
Zm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2VJbXA6
OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0
LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAxNAogICB0b1N0cmlu
ZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9Mb2NhbGVTdHJpbmcg
RG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6
Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYgKzQwMyw3IEBAIGNv
bnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZUltcDo6aW5mbyAKICAgc29ydCAgICAgICAgICAg
QXJyYXlQcm90b0Z1bmNJbXA6OlNvcnQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
c3BsaWNlICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgdW5zaGlmdCAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlVuU2hpZnQg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZm9yRWFjaCAgICAgICAgQXJyYXlQcm90b0Z1
bmNJbXA6OkZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUKIEBlbmQKICovCiAKQEAg
LTQ0Myw2ICs0NDQsNyBAQCBWYWx1ZSBBcnJheVByb3RvRnVuY0ltcDo6Y2FsbChFeGVjU3RhdGUg
CiAgIHVuc2lnbmVkIGludCBsZW5ndGggPSB0aGlzT2JqLmdldChleGVjLGxlbmd0aFByb3BlcnR5
TmFtZSkudG9VSW50MzIoZXhlYyk7CiAKICAgVmFsdWUgcmVzdWx0OworICAKICAgc3dpdGNoIChp
ZCkgewogICBjYXNlIFRvTG9jYWxlU3RyaW5nOgogICAgIC8vIFRPRE8gIC0gc2VlIDE1LjQuNC4z
CkBAIC03NjcsNiArNzY5LDI1IEBAIFZhbHVlIEFycmF5UHJvdG9GdW5jSW1wOjpjYWxsKEV4ZWNT
dGF0ZSAKICAgICB0aGlzT2JqLnB1dChleGVjLCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIEZvckVhY2g6
IHsKKyAgLy9odHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKKyAgIE9iamVjdCBl
YWNoRnVuY3Rpb24gPSBhcmdzWzBdLnRvT2JqZWN0KGV4ZWMpOworICAgT2JqZWN0IHRoaXNPYmpl
Y3QgPSAoYXJncy5zaXplKCkgPiAxICYmIGFyZ3NbMV0udHlwZSgpIT1OdWxsVHlwZSkgPyBhcmdz
WzFdLnRvT2JqZWN0KGV4ZWMpIDogZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9i
amVjdCgpOworICAgCisgICBmb3IodW5zaWduZWQgaW50IGsgPSAwOyBrIDwgbGVuZ3RoOyArK2sp
IHsKKyAgICAgIAorCSAgTGlzdCBlYWNoQXJndW1lbnRzOworCSAgCisJICBlYWNoQXJndW1lbnRz
LmFwcGVuZCh0aGlzT2JqLmdldChleGVjLCBrKSk7CisJICBlYWNoQXJndW1lbnRzLmFwcGVuZChO
dW1iZXIoaykpOworCSAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7CisJICAKKwkgIGVh
Y2hGdW5jdGlvbi5jYWxsKGV4ZWMsIHRoaXNPYmplY3QsIGVhY2hBcmd1bWVudHMpOworICAgfQor
ICAgcmVzdWx0ID0gdGhpc09iajsKKyAgIGJyZWFrOworICB9CisgIAogICBkZWZhdWx0OgogICAg
IGFzc2VydCgwKTsKICAgICBicmVhazsKSW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5
X29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9r
anMvYXJyYXlfb2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAtdSAt
cjEuMTEgLi9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgKLS0tIC4vSmF2YVNjcmlw
dENvcmUva2pzL2FycmF5X29iamVjdC5oCTIwMDIvMTIvMTIgMDk6MjA6MDIJMS4xMQorKysgLi9K
YXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgJMjAwNS8wNi8yMyAwNzoyMjo1OApAQCAt
NDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIFZhbHVlIGNhbGwoRXhl
Y1N0YXRlICpleGVjLCBPYmplY3QgJnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpOwogCiAgICAg
ZW51bSB7IFRvU3RyaW5nLCBUb0xvY2FsZVN0cmluZywgQ29uY2F0LCBKb2luLCBQb3AsIFB1c2gs
Ci0JICAgUmV2ZXJzZSwgU2hpZnQsIFNsaWNlLCBTb3J0LCBTcGxpY2UsIFVuU2hpZnQgfTsKKwkg
ICBSZXZlcnNlLCBTaGlmdCwgU2xpY2UsIFNvcnQsIFNwbGljZSwgVW5TaGlmdCwgRm9yRWFjaCB9
OwogICBwcml2YXRlOgogICAgIGludCBpZDsKICAgfTsK
</data>
<flag name="review"
          id="77"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2598</attachid>
            <date>2005-06-23 10:51:54 -0700</date>
            <delta_ts>2005-06-23 11:50:41 -0700</delta_ts>
            <desc>Revised patch that adds forEach Javascript 1.5 functionality to JavascriptCore</desc>
            <filename>ForEachPatch.txt</filename>
            <type>text/plain</type>
            <size>2972</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQxCmRpZmYgLXAgLXUgLXIxLjQxIC4vSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAKLS0tIC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29i
amVjdC5jcHAJMjAwNS8wNi8yMiAwMDo0ODo0NwkxLjQxCisrKyAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuY3BwCTIwMDUvMDYvMjMgMTc6NDg6MjQKQEAgLTM5MCw3ICszOTAsNyBA
QCB1bnNpZ25lZCBBcnJheUluc3RhbmNlSW1wOjpwdXNoVW5kZWZpbmVkCiBjb25zdCBDbGFzc0lu
Zm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2VJbXA6
OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0
LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAxNAogICB0b1N0cmlu
ZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9Mb2NhbGVTdHJpbmcg
RG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6
Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYgKzQwMyw3IEBAIGNv
bnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZUltcDo6aW5mbyAKICAgc29ydCAgICAgICAgICAg
QXJyYXlQcm90b0Z1bmNJbXA6OlNvcnQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
c3BsaWNlICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgdW5zaGlmdCAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlVuU2hpZnQg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZm9yRWFjaCAgICAgICAgQXJyYXlQcm90b0Z1
bmNJbXA6OkZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUKIEBlbmQKICovCiAKQEAg
LTQ0Myw2ICs0NDQsNyBAQCBWYWx1ZSBBcnJheVByb3RvRnVuY0ltcDo6Y2FsbChFeGVjU3RhdGUg
CiAgIHVuc2lnbmVkIGludCBsZW5ndGggPSB0aGlzT2JqLmdldChleGVjLGxlbmd0aFByb3BlcnR5
TmFtZSkudG9VSW50MzIoZXhlYyk7CiAKICAgVmFsdWUgcmVzdWx0OworICAKICAgc3dpdGNoIChp
ZCkgewogICBjYXNlIFRvTG9jYWxlU3RyaW5nOgogICAgIC8vIFRPRE8gIC0gc2VlIDE1LjQuNC4z
CkBAIC03NjcsNiArNzY5LDI4IEBAIFZhbHVlIEFycmF5UHJvdG9GdW5jSW1wOjpjYWxsKEV4ZWNT
dGF0ZSAKICAgICB0aGlzT2JqLnB1dChleGVjLCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIEZvckVhY2g6
IHsKKyAgLy9odHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKKyAgIE9iamVjdCBl
YWNoRnVuY3Rpb24gPSBhcmdzWzBdLnRvT2JqZWN0KGV4ZWMpOworICAgT2JqZWN0IGFwcGx5VGhp
cyA9IGFyZ3NbMV0uaW1wKCktPmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBleGVjLT5keW5hbWljSW50
ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCkgOiAgYXJnc1sxXS50b09iamVjdChleGVjKTsKKyAg
IAorICAgZm9yICggdW5zaWduZWQgayA9IDA7IGsgPCBsZW5ndGg7ICsraykgeworICAgICAgCisJ
ICBMaXN0IGVhY2hBcmd1bWVudHM7CisJICAKKwkgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNP
YmouZ2V0KGV4ZWMsIGspKTsKKwkgIGVhY2hBcmd1bWVudHMuYXBwZW5kKE51bWJlcihrKSk7CisJ
ICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKKwkgIAorCSAgZWFjaEZ1bmN0aW9uLmNh
bGwoZXhlYywgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKTsKKwkgIAorCSAgaWYoIGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpICkKKwkJYnJlYWs7CisgICB9CisgICByZXN1bHQgPSB0aGlzT2JqOworICAg
YnJlYWs7CisgIH0KKyAgCiAgIGRlZmF1bHQ6CiAgICAgYXNzZXJ0KDApOwogICAgIGJyZWFrOwpJ
bmRleDogLi9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuaAotLS0gLi9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgJ
MjAwMi8xMi8xMiAwOToyMDowMgkxLjExCisrKyAuL0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9v
YmplY3QuaAkyMDA1LzA2LzIzIDE3OjQ4OjI0CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgIHZpcnR1YWwgVmFsdWUgY2FsbChFeGVjU3RhdGUgKmV4ZWMsIE9iamVjdCAmdGhp
c09iaiwgY29uc3QgTGlzdCAmYXJncyk7CiAKICAgICBlbnVtIHsgVG9TdHJpbmcsIFRvTG9jYWxl
U3RyaW5nLCBDb25jYXQsIEpvaW4sIFBvcCwgUHVzaCwKLQkgICBSZXZlcnNlLCBTaGlmdCwgU2xp
Y2UsIFNvcnQsIFNwbGljZSwgVW5TaGlmdCB9OworCSAgIFJldmVyc2UsIFNoaWZ0LCBTbGljZSwg
U29ydCwgU3BsaWNlLCBVblNoaWZ0LCBGb3JFYWNoIH07CiAgIHByaXZhdGU6CiAgICAgaW50IGlk
OwogICB9Owo=
</data>
<flag name="review"
          id="87"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2600</attachid>
            <date>2005-06-23 10:55:23 -0700</date>
            <delta_ts>2005-06-23 17:43:01 -0700</delta_ts>
            <desc>Layout tests to test forEach functionality.</desc>
            <filename>foreach-tests.zip</filename>
            <type>application/zip</type>
            <size>3062</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">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
6pAGUtJDb0cz0T2qZeol/72yxGN1ejGtWgzzKgm9W62w0b6VYUzWTQ6tXHVgO5ZV3oAhNcpur+/T
YX3aLAgcfrK12hDRHIfy96dpZ2ammQPUqFbrd/14XSKy1l3LzhaVcepkKCNioMK5WnGJSt0WTGJR
hIM/lvtT2D6Y5KmkP1R5nXl2sWEGSix5bsDDyafG/D69O6JySil3sI+5JJR2iLTqPI1S2YZFw2XG
2g1RGeyJS1ea51wSAYLJ3G0NBRnSa5n3aiJzBtyC0x4aUTEbFGF3QSzRT/FMjsvFZePmv2yrOkbc
KF+7Ga7m8JJ2YOBl/XgqkIbO4m36kTl7V9tcnm9J3Y4QynWYPNQyIlxfou4PCfVI2ZUpnQdig0Bu
h7c+aTGGONyfxue5DrhOsP0Zt9Zsl7GyXVjHJHulkvcFbAvidphWWzRLXFR1cr/+p4Z7oyDCBnWf
W2Mfktniuh6ffJX4kPF42AuXeL/AJSukhXT07hVeuvAdzL0+/gFQSwcIXx178E4DAABFCgAAUEsD
BBQACAAIAEBV1zIAAAAAAAAAAAAAAAArABAAX19NQUNPU1gvZm9yZWFjaC10ZXN0cy8uX2FycmF5
LWZvcmVhY2guaHRtbFVYDABb97pCaPS6QvUB9QFjYBVjZ2BiwAQgMU4gNgJiBSg/CCShBQQeKUWJ
WPSAAQBQSwcIKGv4hyEAAABSAAAAUEsBAhUDCgAAAAAAz1bXMgAAAAAAAAAAAAAAAA4ADAAAAAAA
AAAAQO1BAAAAAGZvcmVhY2gtdGVzdHMvVVgIACX3ukJV97pCUEsBAhUDFAAIAAgAz1bXMsptCok2
AQAABBgAABcADAAAAAAAAAAAQKSBPAAAAGZvcmVhY2gtdGVzdHMvLkRTX1N0b3JlVVgIAFv3ukJV
97pCUEsBAhUDCgAAAAAA0lbXMgAAAAAAAAAAAAAAAAkADAAAAAAAAAAAQP1BxwEAAF9fTUFDT1NY
L1VYCABb97pCW/e6QlBLAQIVAwoAAAAAANJW1zIAAAAAAAAAAAAAAAAXAAwAAAAAAAAAAED9Qf4B
AABfX01BQ09TWC9mb3JlYWNoLXRlc3RzL1VYCABb97pCW/e6QlBLAQIVAxQACAAIAM9W1zINjiN3
HAAAAFIAAAAiAAwAAAAAAAAAAECkgUMCAABfX01BQ09TWC9mb3JlYWNoLXRlc3RzLy5fLkRTX1N0
b3JlVVgIAFv3ukJV97pCUEsBAhUDFAAIAAgATFXXMitiJMDbAQAAnAQAACgADAAAAAAAAAAAQKSB
vwIAAGZvcmVhY2gtdGVzdHMvYXJyYXktZm9yZWFjaC1leHBlY3RlZC50eHRVWAgAW/e6Qn/0ukJQ
SwECFQMUAAgACABAVdcyXx178E4DAABFCgAAIAAMAAAAAAAAAABApIEABQAAZm9yZWFjaC10ZXN0
cy9hcnJheS1mb3JlYWNoLmh0bWxVWAgAW/e6Qmj0ukJQSwECFQMUAAgACABAVdcyKGv4hyEAAABS
AAAAKwAMAAAAAAAAAABApIGsCAAAX19NQUNPU1gvZm9yZWFjaC10ZXN0cy8uX2FycmF5LWZvcmVh
Y2guaHRtbFVYCABb97pCaPS6QlBLBQYAAAAACAAIAKoCAAA2CQAAAAA=
</data>
<flag name="review"
          id="88"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2602</attachid>
            <date>2005-06-23 11:50:41 -0700</date>
            <delta_ts>2005-06-23 22:59:27 -0700</delta_ts>
            <desc>Revised patch that adds forEach Javascript 1.5 functionality to JavascriptCore</desc>
            <filename>ForEachPatch.txt</filename>
            <type>text/plain</type>
            <size>2951</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQxCmRpZmYgLXAgLXUgLXIxLjQxIC4vSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAKLS0tIC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29i
amVjdC5jcHAJMjAwNS8wNi8yMiAwMDo0ODo0NwkxLjQxCisrKyAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuY3BwCTIwMDUvMDYvMjMgMTg6NDk6MjUKQEAgLTM5MCw3ICszOTAsNyBA
QCB1bnNpZ25lZCBBcnJheUluc3RhbmNlSW1wOjpwdXNoVW5kZWZpbmVkCiBjb25zdCBDbGFzc0lu
Zm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2VJbXA6
OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0
LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAxNAogICB0b1N0cmlu
ZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9Mb2NhbGVTdHJpbmcg
RG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6
Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYgKzQwMyw3IEBAIGNv
bnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZUltcDo6aW5mbyAKICAgc29ydCAgICAgICAgICAg
QXJyYXlQcm90b0Z1bmNJbXA6OlNvcnQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
c3BsaWNlICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgdW5zaGlmdCAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlVuU2hpZnQg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZm9yRWFjaCAgICAgICAgQXJyYXlQcm90b0Z1
bmNJbXA6OkZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUKIEBlbmQKICovCiAKQEAg
LTQ0Myw2ICs0NDQsNyBAQCBWYWx1ZSBBcnJheVByb3RvRnVuY0ltcDo6Y2FsbChFeGVjU3RhdGUg
CiAgIHVuc2lnbmVkIGludCBsZW5ndGggPSB0aGlzT2JqLmdldChleGVjLGxlbmd0aFByb3BlcnR5
TmFtZSkudG9VSW50MzIoZXhlYyk7CiAKICAgVmFsdWUgcmVzdWx0OworICAKICAgc3dpdGNoIChp
ZCkgewogICBjYXNlIFRvTG9jYWxlU3RyaW5nOgogICAgIC8vIFRPRE8gIC0gc2VlIDE1LjQuNC4z
CkBAIC03NjcsNiArNzY5LDI1IEBAIFZhbHVlIEFycmF5UHJvdG9GdW5jSW1wOjpjYWxsKEV4ZWNT
dGF0ZSAKICAgICB0aGlzT2JqLnB1dChleGVjLCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIEZvckVhY2g6
IHsKKyAgLy9odHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKKyAgIE9iamVjdCBl
YWNoRnVuY3Rpb24gPSBhcmdzWzBdLnRvT2JqZWN0KGV4ZWMpOworICAgT2JqZWN0IGFwcGx5VGhp
cyA9IGFyZ3NbMV0uaW1wKCktPmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBleGVjLT5keW5hbWljSW50
ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCkgOiAgYXJnc1sxXS50b09iamVjdChleGVjKTsKKyAg
IAorICAgZm9yICggdW5zaWduZWQgayA9IDA7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpOyArK2spIHsKKyAgICAgIAorCSAgTGlzdCBlYWNoQXJndW1lbnRzOworCSAgCisJICBl
YWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqLmdldChleGVjLCBrKSk7CisJICBlYWNoQXJndW1l
bnRzLmFwcGVuZChOdW1iZXIoaykpOworCSAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7
CisJICAKKwkgIGVhY2hGdW5jdGlvbi5jYWxsKGV4ZWMsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50
cyk7CisgICB9CisgICByZXN1bHQgPSB0aGlzT2JqOworICAgYnJlYWs7CisgIH0KKyAgCiAgIGRl
ZmF1bHQ6CiAgICAgYXNzZXJ0KDApOwogICAgIGJyZWFrOwpJbmRleDogLi9KYXZhU2NyaXB0Q29y
ZS9ranMvYXJyYXlfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFT
Y3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMQpk
aWZmIC1wIC11IC1yMS4xMSAuL0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaAotLS0g
Li9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgJMjAwMi8xMi8xMiAwOToyMDowMgkx
LjExCisrKyAuL0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaAkyMDA1LzA2LzIzIDE4
OjQ5OjI1CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgVmFs
dWUgY2FsbChFeGVjU3RhdGUgKmV4ZWMsIE9iamVjdCAmdGhpc09iaiwgY29uc3QgTGlzdCAmYXJn
cyk7CiAKICAgICBlbnVtIHsgVG9TdHJpbmcsIFRvTG9jYWxlU3RyaW5nLCBDb25jYXQsIEpvaW4s
IFBvcCwgUHVzaCwKLQkgICBSZXZlcnNlLCBTaGlmdCwgU2xpY2UsIFNvcnQsIFNwbGljZSwgVW5T
aGlmdCB9OworCSAgIFJldmVyc2UsIFNoaWZ0LCBTbGljZSwgU29ydCwgU3BsaWNlLCBVblNoaWZ0
LCBGb3JFYWNoIH07CiAgIHByaXZhdGU6CiAgICAgaW50IGlkOwogICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2611</attachid>
            <date>2005-06-23 17:39:28 -0700</date>
            <delta_ts>2005-06-24 11:21:11 -0700</delta_ts>
            <desc>Patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore</desc>
            <filename>Javascript_1_5_Patch.txt</filename>
            <type>text/plain</type>
            <size>3643</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQxCmRpZmYgLXAgLXUgLXIxLjQxIC4vSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAKLS0tIC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29i
amVjdC5jcHAJMjAwNS8wNi8yMiAwMDo0ODo0NwkxLjQxCisrKyAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuY3BwCTIwMDUvMDYvMjQgMDA6MzY6MDgKQEAgLTM5MCw3ICszOTAsNyBA
QCB1bnNpZ25lZCBBcnJheUluc3RhbmNlSW1wOjpwdXNoVW5kZWZpbmVkCiBjb25zdCBDbGFzc0lu
Zm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2VJbXA6
OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0
LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAxNgogICB0b1N0cmlu
ZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9Mb2NhbGVTdHJpbmcg
RG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6
Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYgKzQwMyw5IEBAIGNv
bnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZUltcDo6aW5mbyAKICAgc29ydCAgICAgICAgICAg
QXJyYXlQcm90b0Z1bmNJbXA6OlNvcnQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
c3BsaWNlICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgdW5zaGlmdCAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlVuU2hpZnQg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXZlcnkgICAgICAgICAgQXJyYXlQcm90b0Z1
bmNJbXA6OkV2ZXJ5ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUKKyAgZm9yRWFjaCAgICAg
ICAgQXJyYXlQcm90b0Z1bmNJbXA6OkZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUK
KyAgc29tZSAgICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNvbWUgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDUKIEBlbmQKICovCiAKQEAgLTQ0Myw2ICs0NDYsNyBAQCBWYWx1ZSBBcnJh
eVByb3RvRnVuY0ltcDo6Y2FsbChFeGVjU3RhdGUgCiAgIHVuc2lnbmVkIGludCBsZW5ndGggPSB0
aGlzT2JqLmdldChleGVjLGxlbmd0aFByb3BlcnR5TmFtZSkudG9VSW50MzIoZXhlYyk7CiAKICAg
VmFsdWUgcmVzdWx0OworICAKICAgc3dpdGNoIChpZCkgewogICBjYXNlIFRvTG9jYWxlU3RyaW5n
OgogICAgIC8vIFRPRE8gIC0gc2VlIDE1LjQuNC4zCkBAIC03NjcsNiArNzcxLDQ2IEBAIFZhbHVl
IEFycmF5UHJvdG9GdW5jSW1wOjpjYWxsKEV4ZWNTdGF0ZSAKICAgICB0aGlzT2JqLnB1dChleGVj
LCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKICAg
ICBicmVhazsKICAgfQorICBjYXNlIEV2ZXJ5OgorICBjYXNlIEZvckVhY2g6CisgIGNhc2UgU29t
ZTogeworICAvL2h0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVf
SmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAorICAgT2JqZWN0
IGVhY2hGdW5jdGlvbiA9IGFyZ3NbMF0udG9PYmplY3QoZXhlYyk7CisgICAKKyAgIGlmICghZWFj
aEZ1bmN0aW9uLmltcGxlbWVudHNDYWxsKCkpIHsKKyAgICAgIE9iamVjdCBlcnIgPSBFcnJvcjo6
Y3JlYXRlKGV4ZWMsVHlwZUVycm9yKTsKKyAgICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnIpOwor
ICAgICAgcmV0dXJuIGVycjsKKyAgIH0KKyAgIAorICAgT2JqZWN0IGFwcGx5VGhpcyA9IGFyZ3Nb
MV0uaW1wKCktPmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIo
KS0+Z2xvYmFsT2JqZWN0KCkgOiAgYXJnc1sxXS50b09iamVjdChleGVjKTsKKyAgIAorICAgYm9v
bCBwcmVkaWNhdGVSZXN1bHQ7CisgICAKKyAgIGlmKGlkID09IFNvbWUgfHwgaWQgPT0gRXZlcnkp
IHJlc3VsdCA9IEJvb2xlYW4oaWQgPT0gRXZlcnkpOworICAgZWxzZSByZXN1bHQgPSB0aGlzT2Jq
OworICAgCisgICBmb3IgKCB1bnNpZ25lZCBrID0gMDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFk
RXhjZXB0aW9uKCk7ICsraykgeworICAgICAgCisJICBMaXN0IGVhY2hBcmd1bWVudHM7CisJICAK
KwkgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmouZ2V0KGV4ZWMsIGspKTsKKwkgIGVhY2hB
cmd1bWVudHMuYXBwZW5kKE51bWJlcihrKSk7CisJICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlz
T2JqKTsKKwkgIAorCSAgcHJlZGljYXRlUmVzdWx0ID0gZWFjaEZ1bmN0aW9uLmNhbGwoZXhlYywg
YXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7CisgICAgICBpZiAoaWQg
PT0gRXZlcnkgJiYgIXByZWRpY2F0ZVJlc3VsdCkgeworCSAgICByZXN1bHQgPSBCb29sZWFuKGZh
bHNlKTsgLy8gRmFsc2UKKyAgICAgICAgYnJlYWs7CisJICB9CisJICBlbHNlIGlmIChpZCA9PSBT
b21lICYmIHByZWRpY2F0ZVJlc3VsdCkgeworCSAgICByZXN1bHQgPSBCb29sZWFuKHRydWUpOwor
CQlicmVhazsKKwkgIH0KKyAgIH0KKyAgIGJyZWFrOworICB9CisgIAogICBkZWZhdWx0OgogICAg
IGFzc2VydCgwKTsKICAgICBicmVhazsKSW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5
X29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9r
anMvYXJyYXlfb2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtcCAtdSAt
cjEuMTEgLi9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgKLS0tIC4vSmF2YVNjcmlw
dENvcmUva2pzL2FycmF5X29iamVjdC5oCTIwMDIvMTIvMTIgMDk6MjA6MDIJMS4xMQorKysgLi9K
YXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgJMjAwNS8wNi8yNCAwMDozNjowOApAQCAt
NDQsNyArNDQsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIFZhbHVlIGNhbGwoRXhl
Y1N0YXRlICpleGVjLCBPYmplY3QgJnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpOwogCiAgICAg
ZW51bSB7IFRvU3RyaW5nLCBUb0xvY2FsZVN0cmluZywgQ29uY2F0LCBKb2luLCBQb3AsIFB1c2gs
Ci0JICAgUmV2ZXJzZSwgU2hpZnQsIFNsaWNlLCBTb3J0LCBTcGxpY2UsIFVuU2hpZnQgfTsKKwkg
ICBSZXZlcnNlLCBTaGlmdCwgU2xpY2UsIFNvcnQsIFNwbGljZSwgVW5TaGlmdCwgCisJICAgRXZl
cnksIEZvckVhY2gsIFNvbWUgfTsKICAgcHJpdmF0ZToKICAgICBpbnQgaWQ7CiAgIH07Cg==
</data>
<flag name="review"
          id="96"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2612</attachid>
            <date>2005-06-23 17:43:01 -0700</date>
            <delta_ts>2005-06-24 08:37:00 -0700</delta_ts>
            <desc>Layout tests to test forEach(), some(), and every() functionality.</desc>
            <filename>1_5_Tests.zip</filename>
            <type>application/zip</type>
            <size>9141</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAADuN1zIAAAAAAAAAAAAAAAAKABAAMV81X1Rlc3RzL1VYDAC+VrtC0Va7QvUB9QFQ
SwMEFAAIAAgAO43XMgAAAAAAAAAAAAAAABMAEAAxXzVfVGVzdHMvLkRTX1N0b3JlVVgMANZWu0LR
VrtC9QH1Ae2Zz0rDQBDGZ9ogAQVDQQ2ecvPUojf1FEo9iEdfQPsPhdZIrVJvfTKfRcEX8ObJOklG
2TZp6npQaL8fzH4p7c58WdpsJiUirt+3D4h8InIpVW+dcnE1MpRUNyRY5hM9UpU69CAxyM8FAAAA
gH+GU3Hn7PsAgBUmvj4EqqHqOFXW90uqjjHHUw1UQ9VxqqyfK6k6qq6qpxqohqrjVPWixdp8sFZm
7VDYUw1UQ6tTBmCliHt3ny6lXx/IaPbv6fGIbmVs0VDGNtVERzQ87UWtZi9qUvJj56ro2yQhyWmd
7/qmG2m+faKnF2c7ybMm4UwWkHjIr1ejK8nfp17WL5cNvwvnz/orv1v5253K36VIjjvyqiX5LdaY
twzPv8qZWedDq/OoFNQsWus9w/ePcsz4fH79sPK5M1XjTmr0pYbNSh8Zji2zZb4rFSvvm7nVilb3
zPC6YHbG27GVN+z/ACwP5VT8uP8/mf/8HwCwxLDTOG/U6fuBYIZ4rw0kLr4mUPGNABt/GOJGAAAA
AAAAAAAAAACAv+cTUEsHCLknQeGUAQAABDAAAFBLAwQKAAAAAAA9jdcyAAAAAAAAAAAAAAAACQAQ
AF9fTUFDT1NYL1VYDADWVrtC1la7QvUB9QFQSwMECgAAAAAAPY3XMgAAAAAAAAAAAAAAABMAEABf
X01BQ09TWC8xXzVfVGVzdHMvVVgMANZWu0LWVrtC9QH1AVBLAwQUAAgACAA7jdcyAAAAAAAAAAAA
AAAAHgAQAF9fTUFDT1NYLzFfNV9UZXN0cy8uXy5EU19TdG9yZVVYDADWVrtC0Va7QvUB9QFjYBVj
Z2BiwAQgMU4gNgJiBSg/CFmBAxZNIAAAUEsHCA2OI3ccAAAAUgAAAFBLAwQUAAgACACDi9cyAAAA
AAAAAAAAAAAAIgAQADFfNV9UZXN0cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHRVWAwA1la7QpZT
u0L1AfUBxVVNb+M2EL3rV0x9SgDViGJnsVi0Bdw0QHvopRtgD0UPtDSy2Mqklh/x+t/3DSnLcpIC
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
VrtC1la7QlBLAQIVAxQACAAIADuN1zINjiN3HAAAAFIAAAAeAAwAAAAAAAAAAECkgZUCAABfX01B
Q09TWC8xXzVfVGVzdHMvLl8uRFNfU3RvcmVVWAgA1la7QtFWu0JQSwECFQMUAAgACACDi9cyiSuv
BpUDAABKCQAAIgAMAAAAAAAAAABApIENAwAAMV81X1Rlc3RzL2FycmF5LWV2ZXJ5LWV4cGVjdGVk
LnR4dFVYCADWVrtCllO7QlBLAQIVAxQACAAIAHKL1zJN0mmEYQUAALIRAAAaAAwAAAAAAAAAAECk
gQIHAAAxXzVfVGVzdHMvYXJyYXktZXZlcnkuaHRtbFVYCADWVrtCeFO7QlBLAQIVAxQACAAIAHKL
1zIoa/iHIQAAAFIAAAAlAAwAAAAAAAAAAECkgbsMAABfX01BQ09TWC8xXzVfVGVzdHMvLl9hcnJh
eS1ldmVyeS5odG1sVVgIANZWu0J4U7tCUEsBAhUDFAAIAAgAlIvXMlCBItNGAgAA8QUAACQADAAA
AAAAAAAAQKSBPw0AADFfNV9UZXN0cy9hcnJheS1mb3JlYWNoLWV4cGVjdGVkLnR4dFVYCADWVrtC
uFO7QlBLAQIVAxQACAAIAO151zJPARZl8gMAAJkMAAAcAAwAAAAAAAAAAECkgecPAAAxXzVfVGVz
dHMvYXJyYXktZm9yZWFjaC5odG1sVVgIANZWu0J+NLtCUEsBAhUDFAAIAAgA7XnXMihr+IchAAAA
UgAAACcADAAAAAAAAAAAQKSBMxQAAF9fTUFDT1NYLzFfNV9UZXN0cy8uX2FycmF5LWZvcmVhY2gu
aHRtbFVYCADWVrtCfjS7QlBLAQIVAxQACAAIAPeK1zKsQR6QlgMAACkJAAAhAAwAAAAAAAAAAECk
gbkUAAAxXzVfVGVzdHMvYXJyYXktc29tZS1leHBlY3RlZC50eHRVWAgA1la7QpJSu0JQSwECFQMU
AAgACAANi9cy9SAoJG4FAABmEQAAGQAMAAAAAAAAAABApIGuGAAAMV81X1Rlc3RzL2FycmF5LXNv
bWUuaHRtbFVYCADWVrtCulK7QlBLAQIVAxQACAAIAA2L1zIoa/iHIQAAAFIAAAAkAAwAAAAAAAAA
AECkgXMeAABfX01BQ09TWC8xXzVfVGVzdHMvLl9hcnJheS1zb21lLmh0bWxVWAgA1la7QrpSu0JQ
SwUGAAAAAA4ADgCpBAAA9h4AAAAA
</data>
<flag name="review"
          id="97"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2630</attachid>
            <date>2005-06-24 11:21:11 -0700</date>
            <delta_ts>2005-06-29 18:25:55 -0700</delta_ts>
            <desc>Revised patch that adds forEach(), some(), and every() Javascript 1.5 functionality to JavascriptCore</desc>
            <filename>Javascript_1_5_Patch.txt</filename>
            <type>text/plain</type>
            <size>3888</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQxCmRpZmYgLXAgLXUgLXIxLjQxIC4vSmF2YVNjcmlwdENv
cmUva2pzL2FycmF5X29iamVjdC5jcHAKLS0tIC4vSmF2YVNjcmlwdENvcmUva2pzL2FycmF5X29i
amVjdC5jcHAJMjAwNS8wNi8yMiAwMDo0ODo0NwkxLjQxCisrKyAuL0phdmFTY3JpcHRDb3JlL2tq
cy9hcnJheV9vYmplY3QuY3BwCTIwMDUvMDYvMjQgMTg6MTk6MTgKQEAgLTM5MCw3ICszOTAsNyBA
QCB1bnNpZ25lZCBBcnJheUluc3RhbmNlSW1wOjpwdXNoVW5kZWZpbmVkCiBjb25zdCBDbGFzc0lu
Zm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5SW5zdGFuY2VJbXA6
OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJheV9vYmplY3QubHV0
LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAxNgogICB0b1N0cmlu
ZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9Mb2NhbGVTdHJpbmcg
RG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6
Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYgKzQwMyw5IEBAIGNv
bnN0IENsYXNzSW5mbyBBcnJheVByb3RvdHlwZUltcDo6aW5mbyAKICAgc29ydCAgICAgICAgICAg
QXJyYXlQcm90b0Z1bmNJbXA6OlNvcnQgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAg
c3BsaWNlICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNwbGljZSAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgdW5zaGlmdCAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlVuU2hpZnQg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXZlcnkgICAgICAgICAgQXJyYXlQcm90b0Z1
bmNJbXA6OkV2ZXJ5ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUKKyAgZm9yRWFjaCAgICAg
ICAgQXJyYXlQcm90b0Z1bmNJbXA6OkZvckVhY2ggICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDUK
KyAgc29tZSAgICAgICAgICAgQXJyYXlQcm90b0Z1bmNJbXA6OlNvbWUgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDUKIEBlbmQKICovCiAKQEAgLTQ0Myw2ICs0NDYsNyBAQCBWYWx1ZSBBcnJh
eVByb3RvRnVuY0ltcDo6Y2FsbChFeGVjU3RhdGUgCiAgIHVuc2lnbmVkIGludCBsZW5ndGggPSB0
aGlzT2JqLmdldChleGVjLGxlbmd0aFByb3BlcnR5TmFtZSkudG9VSW50MzIoZXhlYyk7CiAKICAg
VmFsdWUgcmVzdWx0OworICAKICAgc3dpdGNoIChpZCkgewogICBjYXNlIFRvTG9jYWxlU3RyaW5n
OgogICAgIC8vIFRPRE8gIC0gc2VlIDE1LjQuNC4zCkBAIC03NjcsNiArNzcxLDUxIEBAIFZhbHVl
IEFycmF5UHJvdG9GdW5jSW1wOjpjYWxsKEV4ZWNTdGF0ZSAKICAgICB0aGlzT2JqLnB1dChleGVj
LCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKICAg
ICBicmVhazsKICAgfQorICBjYXNlIEV2ZXJ5OgorICBjYXNlIEZvckVhY2g6CisgIGNhc2UgU29t
ZTogeworICAgLy9Eb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6
CisgICAvL2h0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2
YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKKyAgIC8vaHR0cDovL2Rl
dmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZl
cmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCisgICAvL2h0dHA6Ly9kZXZlbG9wZXItdGVzdC5t
b3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6
QXJyYXk6c29tZQorICAgCisgICBPYmplY3QgZWFjaEZ1bmN0aW9uID0gYXJnc1swXS50b09iamVj
dChleGVjKTsKKyAgIAorICAgaWYgKCFlYWNoRnVuY3Rpb24uaW1wbGVtZW50c0NhbGwoKSkgewor
ICAgICAgT2JqZWN0IGVyciA9IEVycm9yOjpjcmVhdGUoZXhlYyxUeXBlRXJyb3IpOworICAgICAg
ZXhlYy0+c2V0RXhjZXB0aW9uKGVycik7CisgICAgICByZXR1cm4gZXJyOworICAgfQorICAgCisg
ICBPYmplY3QgYXBwbHlUaGlzID0gYXJnc1sxXS5pbXAoKS0+aXNVbmRlZmluZWRPck51bGwoKSA/
IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5nbG9iYWxPYmplY3QoKSA6ICBhcmdzWzFdLnRv
T2JqZWN0KGV4ZWMpOworICAgCisgICBpZiAoaWQgPT0gU29tZSB8fCBpZCA9PSBFdmVyeSkKKyAg
ICAgIHJlc3VsdCA9IEJvb2xlYW4oaWQgPT0gRXZlcnkpOworICAgZWxzZQorICAgICAgcmVzdWx0
ID0gdGhpc09iajsKKyAgIAorICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGxlbmd0aCAmJiAh
ZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgeworICAgICAgCisJICBMaXN0IGVhY2hBcmd1bWVu
dHM7CisJICAKKwkgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmouZ2V0KGV4ZWMsIGspKTsK
KwkgIGVhY2hBcmd1bWVudHMuYXBwZW5kKE51bWJlcihrKSk7CisJICBlYWNoQXJndW1lbnRzLmFw
cGVuZCh0aGlzT2JqKTsKKwkgIAorCSAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBlYWNoRnVuY3Rp
b24uY2FsbChleGVjLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsK
KworICAgICAgaWYgKGlkID09IEV2ZXJ5ICYmICFwcmVkaWNhdGVSZXN1bHQpIHsKKyAgICAgICAg
cmVzdWx0ID0gQm9vbGVhbihmYWxzZSk7CisgICAgICAgIGJyZWFrOworCSAgfQorICAgICAgaWYg
KGlkID09IFNvbWUgJiYgcHJlZGljYXRlUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IEJvb2xl
YW4odHJ1ZSk7CisgICAgICAgIGJyZWFrOworCSAgfQorICAgfQorICAgYnJlYWs7CisgIH0KKyAg
CiAgIGRlZmF1bHQ6CiAgICAgYXNzZXJ0KDApOwogICAgIGJyZWFrOwpJbmRleDogLi9KYXZhU2Ny
aXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xMQpkaWZmIC1wIC11IC1yMS4xMSAuL0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
aAotLS0gLi9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgJMjAwMi8xMi8xMiAwOToy
MDowMgkxLjExCisrKyAuL0phdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaAkyMDA1LzA2
LzI0IDE4OjE5OjE4CkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1
YWwgVmFsdWUgY2FsbChFeGVjU3RhdGUgKmV4ZWMsIE9iamVjdCAmdGhpc09iaiwgY29uc3QgTGlz
dCAmYXJncyk7CiAKICAgICBlbnVtIHsgVG9TdHJpbmcsIFRvTG9jYWxlU3RyaW5nLCBDb25jYXQs
IEpvaW4sIFBvcCwgUHVzaCwKLQkgICBSZXZlcnNlLCBTaGlmdCwgU2xpY2UsIFNvcnQsIFNwbGlj
ZSwgVW5TaGlmdCB9OworCSAgIFJldmVyc2UsIFNoaWZ0LCBTbGljZSwgU29ydCwgU3BsaWNlLCBV
blNoaWZ0LCAKKwkgICBFdmVyeSwgRm9yRWFjaCwgU29tZSB9OwogICBwcml2YXRlOgogICAgIGlu
dCBpZDsKICAgfTsK
</data>
<flag name="review"
          id="105"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2708</attachid>
            <date>2005-06-29 18:25:55 -0700</date>
            <delta_ts>2005-06-29 18:25:55 -0700</delta_ts>
            <desc>patch revised for indentation</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4152</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">PyBKYXZhU2NyaXB0Q29yZV9jdnMKPyBKYXZhU2NyaXB0Q29yZV9kZWJ1Zwo/IHBhdGNoLnR4dAo/
IFdlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvanMvLkRTX1N0b3JlCj8gV2ViQ29yZS9sYXlvdXQt
dGVzdHMvZmFzdC9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKPyBXZWJDb3JlL2xheW91dC10
ZXN0cy9mYXN0L2pzL2FycmF5LWV2ZXJ5Lmh0bWwKPyBXZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L2pzL2FycmF5LWZvcmVhY2gtZXhwZWN0ZWQudHh0Cj8gV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9qcy9hcnJheS1mb3JlYWNoLmh0bWwKPyBXZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L2pzL2Fy
cmF5LXNvbWUtZXhwZWN0ZWQudHh0Cj8gV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9qcy9hcnJh
eS1zb21lLmh0bWwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2Jq
ZWN0LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MQpkaWZmIC11IC1yMS40MSBhcnJheV9v
YmplY3QuY3BwCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAkyMiBKdW4g
MjAwNSAwMDo0ODo0NyAtMDAwMAkxLjQxCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2Jq
ZWN0LmNwcAkzMCBKdW4gMjAwNSAwMTowODowNyAtMDAwMApAQCAtMzkwLDcgKzM5MCw3IEBACiBj
b25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGVJbXA6OmluZm8gPSB7IkFycmF5IiwgJkFycmF5
SW5zdGFuY2VJbXA6OmluZm8sICZhcnJheVRhYmxlLCAwfTsKIAogLyogU291cmNlIGZvciBhcnJh
eV9vYmplY3QubHV0LmgKLUBiZWdpbiBhcnJheVRhYmxlIDEzCitAYmVnaW4gYXJyYXlUYWJsZSAx
NgogICB0b1N0cmluZyAgICAgICBBcnJheVByb3RvRnVuY0ltcDo6VG9TdHJpbmcgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAogICB0b0xvY2FsZVN0cmluZyBBcnJheVByb3RvRnVuY0ltcDo6VG9M
b2NhbGVTdHJpbmcgRG9udEVudW18RnVuY3Rpb24gMAogICBjb25jYXQgICAgICAgICBBcnJheVBy
b3RvRnVuY0ltcDo6Q29uY2F0ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQpAQCAtNDAzLDYg
KzQwMyw5IEBACiAgIHNvcnQgICAgICAgICAgIEFycmF5UHJvdG9GdW5jSW1wOjpTb3J0ICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIHNwbGljZSAgICAgICAgIEFycmF5UHJvdG9GdW5j
SW1wOjpTcGxpY2UgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgIHVuc2hpZnQgICAgICAg
IEFycmF5UHJvdG9GdW5jSW1wOjpVblNoaWZ0ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IGV2ZXJ5ICAgICAgICAgIEFycmF5UHJvdG9GdW5jSW1wOjpFdmVyeSAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiA1CisgIGZvckVhY2ggICAgICAgIEFycmF5UHJvdG9GdW5jSW1wOjpGb3JFYWNo
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiA1CisgIHNvbWUgICAgICAgICAgIEFycmF5UHJvdG9G
dW5jSW1wOjpTb21lICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiA1CiBAZW5kCiAqLwogCkBA
IC00NDMsNiArNDQ2LDcgQEAKICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IHRoaXNPYmouZ2V0KGV4
ZWMsbGVuZ3RoUHJvcGVydHlOYW1lKS50b1VJbnQzMihleGVjKTsKIAogICBWYWx1ZSByZXN1bHQ7
CisgIAogICBzd2l0Y2ggKGlkKSB7CiAgIGNhc2UgVG9Mb2NhbGVTdHJpbmc6CiAgICAgLy8gVE9E
TyAgLSBzZWUgMTUuNC40LjMKQEAgLTc2Nyw2ICs3NzEsNTEgQEAKICAgICB0aGlzT2JqLnB1dChl
eGVjLCBsZW5ndGhQcm9wZXJ0eU5hbWUsIHJlc3VsdCwgRG9udEVudW0gfCBEb250RGVsZXRlKTsK
ICAgICBicmVhazsKICAgfQorICBjYXNlIEV2ZXJ5OgorICBjYXNlIEZvckVhY2g6CisgIGNhc2Ug
U29tZTogeworICAgIC8vRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxl
IGF0OgorICAgIC8vaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29y
ZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQorICAgIC8vaHR0
cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEu
NV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCisgICAgLy9odHRwOi8vZGV2ZWxvcGVy
LXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpP
YmplY3RzOkFycmF5OnNvbWUKKyAgICAKKyAgICBPYmplY3QgZWFjaEZ1bmN0aW9uID0gYXJnc1sw
XS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBpZiAoIWVhY2hGdW5jdGlvbi5pbXBsZW1lbnRz
Q2FsbCgpKSB7CisgICAgICBPYmplY3QgZXJyID0gRXJyb3I6OmNyZWF0ZShleGVjLFR5cGVFcnJv
cik7CisgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXJyKTsKKyAgICAgIHJldHVybiBlcnI7Cisg
ICAgfQorICAgIAorICAgIE9iamVjdCBhcHBseVRoaXMgPSBhcmdzWzFdLmltcCgpLT5pc1VuZGVm
aW5lZE9yTnVsbCgpID8gZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgp
IDogIGFyZ3NbMV0udG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgaWYgKGlkID09IFNvbWUgfHwg
aWQgPT0gRXZlcnkpCisgICAgICByZXN1bHQgPSBCb29sZWFuKGlkID09IEV2ZXJ5KTsKKyAgICBl
bHNlCisgICAgICByZXN1bHQgPSB0aGlzT2JqOworICAgIAorICAgIGZvciAodW5zaWduZWQgayA9
IDA7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKKyAgICAgIAor
ICAgICAgTGlzdCBlYWNoQXJndW1lbnRzOworICAgICAgCisgICAgICBlYWNoQXJndW1lbnRzLmFw
cGVuZCh0aGlzT2JqLmdldChleGVjLCBrKSk7CisgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChO
dW1iZXIoaykpOworICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7CisgICAgICAK
KyAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gZWFjaEZ1bmN0aW9uLmNhbGwoZXhlYywgYXBw
bHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7CisgICAgICAKKyAgICAgIGlm
IChpZCA9PSBFdmVyeSAmJiAhcHJlZGljYXRlUmVzdWx0KSB7CisgICAgICAgIHJlc3VsdCA9IEJv
b2xlYW4oZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChpZCA9PSBT
b21lICYmIHByZWRpY2F0ZVJlc3VsdCkgeworICAgICAgICByZXN1bHQgPSBCb29sZWFuKHRydWUp
OworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgYnJlYWs7CisgIH0KKyAgICAK
ICAgZGVmYXVsdDoKICAgICBhc3NlcnQoMCk7CiAgICAgYnJlYWs7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvYXJyYXlfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0ph
dmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
MQpkaWZmIC11IC1yMS4xMSBhcnJheV9vYmplY3QuaAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Fy
cmF5X29iamVjdC5oCTEyIERlYyAyMDAyIDA5OjIwOjAyIC0wMDAwCTEuMTEKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9hcnJheV9vYmplY3QuaAkzMCBKdW4gMjAwNSAwMTowODowNyAtMDAwMApAQCAt
NDQsNyArNDQsOCBAQAogICAgIHZpcnR1YWwgVmFsdWUgY2FsbChFeGVjU3RhdGUgKmV4ZWMsIE9i
amVjdCAmdGhpc09iaiwgY29uc3QgTGlzdCAmYXJncyk7CiAKICAgICBlbnVtIHsgVG9TdHJpbmcs
IFRvTG9jYWxlU3RyaW5nLCBDb25jYXQsIEpvaW4sIFBvcCwgUHVzaCwKLQkgICBSZXZlcnNlLCBT
aGlmdCwgU2xpY2UsIFNvcnQsIFNwbGljZSwgVW5TaGlmdCB9OworICAgICAgICAgIFJldmVyc2Us
IFNoaWZ0LCBTbGljZSwgU29ydCwgU3BsaWNlLCBVblNoaWZ0LCAKKyAgICAgICAgICBFdmVyeSwg
Rm9yRWFjaCwgU29tZSB9OwogICBwcml2YXRlOgogICAgIGludCBpZDsKICAgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>