<?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>39701</bug_id>
          
          <creation_ts>2010-05-25 17:16:38 -0700</creation_ts>
          <short_desc>UTF-16 code points compare() for String objects</short_desc>
          <delta_ts>2010-07-01 01:06:37 -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>WebCore Misc.</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>
          
          <blocked>39220</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230530</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 17:16:38 -0700</bug_when>
    <thetext>There is no good option for ascii String comparison that can be used for lexicographical sort in webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230533</commentid>
    <comment_count>1</comment_count>
      <attachid>57056</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 17:26:52 -0700</bug_when>
    <thetext>Created attachment 57056
patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230534</commentid>
    <comment_count>2</comment_count>
      <attachid>57056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-25 17:28:37 -0700</bug_when>
    <thetext>Comment on attachment 57056
patch 1

This is not an ASCII-only comparison. It&apos;s comparing UTF-16 code points, so asciiOnlyCompare is not the right name for it. ASCII doesn&apos;t enter into it. Could you explain your goals here? Where do you want to use this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230535</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-25 17:29:05 -0700</bug_when>
    <thetext>Attachment 57056 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/text/StringImpl.cpp:486:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230537</commentid>
    <comment_count>4</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 17:39:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 57056 [details])
&gt; This is not an ASCII-only comparison. It&apos;s comparing UTF-16 code points, so asciiOnlyCompare is not the right name for it. ASCII doesn&apos;t enter into it. Could you explain your goals here? Where do you want to use this function?

I need to sort a vector of String objects in lexicographical order. For that I plan to use std::sort. The problem is that I did not find a way to do it easily.

Looking for sorts in webkit I found this

    return strcmp(parentDirectory().utf8().data(), compareTo.parentDirectory().utf8().data());

in PluginPackage::compare. This seems to be very expensive because it does a lot of copy/conversion to do the comparison.

Is there any good option for that?

The name is not good. I chose it just because the method do not consider localizations and is ok for ascii.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230546</commentid>
    <comment_count>5</comment_count>
      <attachid>57059</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 18:15:04 -0700</bug_when>
    <thetext>Created attachment 57059
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230549</commentid>
    <comment_count>6</comment_count>
      <attachid>57059</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-25 18:34:29 -0700</bug_when>
    <thetext>Comment on attachment 57059
patch 2

Seems fine to move this code where it can be used on a WTF string.

&gt;  int compare(const UString&amp; s1, const UString&amp; s2)

The old version of this considers a null string equal to an empty string. The new version considers a null string to be less than an empty string. Are you sure it&apos;s OK to change behavior in that way?

Do we really need a UString::compare member function? Why is that better than what we already had?

&gt; +    static int compare(const StringImpl*, const StringImpl*);

Is there some reason this is better as a String and StringImpl static member instead of being a free function? I think a free function would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230559</commentid>
    <comment_count>7</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 19:39:21 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 57059 [details])
&gt; Seems fine to move this code where it can be used on a WTF string.
&gt; 
&gt; &gt;  int compare(const UString&amp; s1, const UString&amp; s2)
&gt; 
&gt; The old version of this considers a null string equal to an empty string. The new version considers a null string to be less than an empty string. Are you sure it&apos;s OK to change behavior in that way?

no. do not want to change any behavior.

&gt; 
&gt; Do we really need a UString::compare member function? Why is that better than what we already had?
&gt; 
&gt; &gt; +    static int compare(const StringImpl*, const StringImpl*);
&gt; 
&gt; Is there some reason this is better as a String and StringImpl static member instead of being a free function? I think a free function would be better.

I am concerned about overloads because of all these string types and all those not explicit constructors.
I think that some scope delimiters would help. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230561</commentid>
    <comment_count>8</comment_count>
      <attachid>57065</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 19:50:18 -0700</bug_when>
    <thetext>Created attachment 57065
patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230565</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-25 19:57:56 -0700</bug_when>
    <thetext>I still don&apos;t understand what this function is for. You said that you needed lexicographical order, but that&apos;s not what it implements. Could you perhaps want Collator.h?

If it&apos;s to be exposed, it needs a name that makes it clear that the function does something that&apos;s almost never appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230568</commentid>
    <comment_count>10</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 20:33:28 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I still don&apos;t understand what this function is for. You said that you needed lexicographical order, but that&apos;s not what it implements. Could you perhaps want Collator.h?
&gt; 
&gt; If it&apos;s to be exposed, it needs a name that makes it clear that the function does something that&apos;s almost never appropriate.

I want to compare lists of strings. I will sort then and then compare each string. Just to identify lists that contain exactly the same strings any comparison is ok.

It happens that the strings I will manipulate are compose by ascii characters only. I am considering that this proposed code point comparison, for ascii characters only in english, would be lexicographical.

Collator.h may be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230572</commentid>
    <comment_count>11</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-25 21:01:29 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; I still don&apos;t understand what this function is for. You said that you needed lexicographical order, but that&apos;s not what it implements. Could you perhaps want Collator.h?
&gt; &gt; 
&gt; &gt; If it&apos;s to be exposed, it needs a name that makes it clear that the function does something that&apos;s almost never appropriate.
&gt; 
&gt; I want to compare lists of strings. I will sort then and then compare each string. Just to identify lists that contain exactly the same strings any comparison is ok.
&gt; 
&gt; It happens that the strings I will manipulate are compose by ascii characters only. I am considering that this proposed code point comparison, for ascii characters only in english, would be lexicographical.
&gt; 
&gt; Collator.h may be used.

Actual use cases is serialisation of media queries (bug 39220).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230601</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-26 00:13:46 -0700</bug_when>
    <thetext>I see. Comparing code points is generally not sufficient even for equality checking (because the same character can be encoded in composed and decomposed forms). This will of course work for ASCII, but it&apos;s important to not make this function look like general purpose one.

&gt; Actual use cases is serialisation of media queries (bug 39220).

Are these case sensitive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230679</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-26 05:32:49 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I see. Comparing code points is generally not sufficient even for equality checking (because the same character can be encoded in composed and decomposed forms). This will of course work for ASCII, but it&apos;s important to not make this function look like general purpose one.
&gt; 
&gt; &gt; Actual use cases is serialisation of media queries (bug 39220).
&gt; 
&gt; Are these case sensitive?

They are supposed to be written in lowercase, but if you write &quot;NOT&quot; it will be seen as &quot;not&quot;. I am not sure if it is allowed to write (COLOR) instead of (color), but that is at least not handled by the parser right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230865</commentid>
    <comment_count>14</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-26 13:41:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; I see. Comparing code points is generally not sufficient even for equality checking (because the same character can be encoded in composed and decomposed forms). This will of course work for ASCII, but it&apos;s important to not make this function look like general purpose one.
&gt; &gt; 
&gt; &gt; &gt; Actual use cases is serialisation of media queries (bug 39220).
&gt; &gt; 
&gt; &gt; Are these case sensitive?
&gt; 
&gt; They are supposed to be written in lowercase, but if you write &quot;NOT&quot; it will be seen as &quot;not&quot;. I am not sure if it is allowed to write (COLOR) instead of (color), but that is at least not handled by the parser right now.

The comparison if the strings is case sensitive. (http://dev.w3.org/csswg/cssom/#comparing-media-queries)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230896</commentid>
    <comment_count>15</comment_count>
      <attachid>57137</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-26 14:26:35 -0700</bug_when>
    <thetext>Created attachment 57137
patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231008</commentid>
    <comment_count>16</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-26 17:08:21 -0700</bug_when>
    <thetext>Darin, could you take a look if you have time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231013</commentid>
    <comment_count>17</comment_count>
      <attachid>57137</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-26 17:29:36 -0700</bug_when>
    <thetext>Comment on attachment 57137
patch 4

It’s fine to have a comparison function that just compares the UChars in a string and does no case folding or normalization.

A) But I don&apos;t see any reason to make this comparison function be a class member. Neither a static member nor a non-static member. It should just be a free function, the way the function in UString.h already is. We can overload it to take more types. This patch instead adds a member function to StringImpl, but there&apos;s no reason for it to be a member function. It should just be a free function.

I think codePointCompare is an OK name for the function. Better than just &quot;compare&quot; since it might convince people not to use it in cases where they shouldn’t.

B) We should rename the one that works on UString too, to be consistent. I believe it&apos;s only called in exactly one place in JavaScriptCore.

C) The comparison function for UString that just calls through to the codePointCompare that takes StringImpl* should be inlined. It&apos;s in a hot code path and I don&apos;t want an extra level of function call added.

Now that I see the one place where codePointCompare is called inside JavaScriptCore, I realize that it&apos;s a code path where the strings can never be null strings. That has two implications:

    D) We don&apos;t have to treat null strings and empty strings as equal.
    E) If we wanted to we could make things slightly more efficient by making that call site not even check for null.

review-, but I think you&apos;re getting close now to something we should land. You should fix at least (A) and (C) above. And (B) is also a good idea and probably easy to do. No real need to do (D) or (E), though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231326</commentid>
    <comment_count>18</comment_count>
      <attachid>57251</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-27 09:05:42 -0700</bug_when>
    <thetext>Created attachment 57251
patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231330</commentid>
    <comment_count>19</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-27 09:24:04 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 57137 [details])
&gt; It’s fine to have a comparison function that just compares the UChars in a string and does no case folding or normalization.
&gt; 
&gt; A) But I don&apos;t see any reason to make this comparison function be a class member. Neither a static member nor a non-static member. It should just be a free function, the way the function in UString.h already is. We can overload it to take more types. This patch instead adds a member function to StringImpl, but there&apos;s no reason for it to be a member function. It should just be a free function.

done

&gt; 
&gt; I think codePointCompare is an OK name for the function. Better than just &quot;compare&quot; since it might convince people not to use it in cases where they shouldn’t.

done

&gt; 
&gt; B) We should rename the one that works on UString too, to be consistent. I believe it&apos;s only called in exactly one place in JavaScriptCore.

done

&gt; 
&gt; C) The comparison function for UString that just calls through to the codePointCompare that takes StringImpl* should be inlined. It&apos;s in a hot code path and I don&apos;t want an extra level of function call added.

done

&gt; 
&gt; Now that I see the one place where codePointCompare is called inside JavaScriptCore, I realize that it&apos;s a code path where the strings can never be null strings. That has two implications:
&gt; 
&gt;     D) We don&apos;t have to treat null strings and empty strings as equal.
&gt;     E) If we wanted to we could make things slightly more efficient by making that call site not even check for null.

Because of not being a committer, although I am always watching the bots I may not be able to react in time in an eventual problem with any of the platforms. That is why I decided not to make D and E for now.
I am currently waiting for a committer nomination approval. :)

&gt; 
&gt; review-, but I think you&apos;re getting close now to something we should land. You should fix at least (A) and (C) above. And (B) is also a good idea and probably easy to do. No real need to do (D) or (E), though.

thanks for the review so far. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231429</commentid>
    <comment_count>20</comment_count>
      <attachid>57251</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-27 13:11:49 -0700</bug_when>
    <thetext>Comment on attachment 57251
patch 5

&gt; +        friend int codePointCompare(const UString&amp;, const UString&amp;);

There&apos;s no need for this function to be a friend.

&gt; +    inline int codePointCompare(const UString&amp; s1, const UString&amp; s2)
&gt; +    {
&gt; +        return codePointCompare(s1.m_rep.get(), s2.m_rep.get());
&gt; +    }

This can use the rep() function instead of getting at m_rep directly.

r=me if you remove the unnecessary friendship</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231455</commentid>
    <comment_count>21</comment_count>
      <attachid>57274</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-27 14:05:47 -0700</bug_when>
    <thetext>Created attachment 57274
patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231456</commentid>
    <comment_count>22</comment_count>
      <attachid>57274</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-27 14:08:58 -0700</bug_when>
    <thetext>Comment on attachment 57274
patch 6

&gt; +int codePointCompare(const String&amp; a, const String&amp; b);

Damn, forgot to ask you to remove these argument names. We can always do that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231461</commentid>
    <comment_count>23</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-27 14:18:46 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 57274 [details])
&gt; &gt; +int codePointCompare(const String&amp; a, const String&amp; b);
&gt; 
&gt; Damn, forgot to ask you to remove these argument names. We can always do that later.

I can do it now. just one minute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231468</commentid>
    <comment_count>24</comment_count>
      <attachid>57276</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-27 14:24:35 -0700</bug_when>
    <thetext>Created attachment 57276
patch 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231501</commentid>
    <comment_count>25</comment_count>
      <attachid>57276</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-27 16:44:06 -0700</bug_when>
    <thetext>Comment on attachment 57276
patch 7

Clearing flags on attachment: 57276

Committed r60332: &lt;http://trac.webkit.org/changeset/60332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231502</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-27 16:44:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232332</commentid>
    <comment_count>27</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-31 05:44:11 -0700</bug_when>
    <thetext>Luiz, this is currently scheduled for integration into the 2.0 release branch. Is this intentional?

The patch doesn&apos;t apply - due to renamings - so I&apos;d need your help if we really want to integrate it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232346</commentid>
    <comment_count>28</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-31 06:47:48 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Luiz, this is currently scheduled for integration into the 2.0 release branch. Is this intentional?
&gt; 
&gt; The patch doesn&apos;t apply - due to renamings - so I&apos;d need your help if we really want to integrate it :)

Simon,

bugs 39220 and 37205 depend on this one. I expect bug 39220 to get in soon. 37205 depends on how specification evolves.

I think that we could wait until 37205 get in and then integrate them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232368</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-31 07:46:00 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Luiz, this is currently scheduled for integration into the 2.0 release branch. Is this intentional?
&gt; &gt; 
&gt; &gt; The patch doesn&apos;t apply - due to renamings - so I&apos;d need your help if we really want to integrate it :)
&gt; 
&gt; Simon,
&gt; 
&gt; bugs 39220 and 37205 depend on this one. I expect bug 39220 to get in soon. 37205 depends on how specification evolves.
&gt; 
&gt; I think that we could wait until 37205 get in and then integrate them all.

I see, that makes sense.

Could you make a version of the string patch that applies against qtwebkit-2.0? It should be straightforward, most of the string classes simply moved from WebCore/platform/text into JavaScriptCore/wtf/text but the methods and class names remained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245178</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-07-01 01:06:37 -0700</bug_when>
    <thetext>Luiz: ping. I need your help with a patch for the release branch :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57056</attachid>
            <date>2010-05-25 17:26:52 -0700</date>
            <delta_ts>2010-05-25 18:15:04 -0700</delta_ts>
            <desc>patch 1</desc>
            <filename>0001-Ascii-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>5978</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBlMTY0MDlkMDYzZDI3NDU3MDc3MzJlZGUxMWI2NTdiMGM0MGFkYjU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMjUgTWF5IDIwMTAgMjE6MjU6MDUgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBBc2NpaSBjb21wYXJlIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
Ck1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3RyaW5nIHRvIFN0cmluZ0lt
cGwgYW5kIGFkZGluZyBtZXRob2QKYWNzaWlPbmx5Q29tcGFyZSgpIHRvIGNsYXNzIFN0cmluZy4K
CiogcnVudGltZS9VU3RyaW5nLmNwcDoKKEpTQzo6Y29tcGFyZSk6CiogcnVudGltZS9VU3RyaW5n
Lmg6CihKU0M6OlVTdHJpbmc6OmNvbXBhcmUpOgoqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgoo
V2ViQ29yZTo6U3RyaW5nSW1wbDo6Y29tcGFyZSk6Ciogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgoq
IHd0Zi90ZXh0L1dURlN0cmluZy5oOgooV2ViQ29yZTo6U3RyaW5nOjphc2NpaU9ubHlDb21wYXJl
KToKLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAgMjAgKysr
KysrKysrKysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgICAg
IHwgICAyMiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VT
dHJpbmcuaCAgICAgICB8ICAgIDcgKysrKysrKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAgfCAgIDIzICsrKysrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggICB8ICAgIDIgKysKIEphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1dURlN0cmluZy5oICAgIHwgICAgNyArKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDYxIGlu
c2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwZGVlY2MwLi40NTI0
YjJiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDUtMjUgIEx1aXogQWdvc3Rp
bmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXNjaWkgY29tcGFyZSBmb3IgU3RyaW5nIG9iamVj
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAx
CisKKyAgICAgICAgTW92aW5nIGNvbXBhcmUoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIFVTdHJpbmcg
dG8gU3RyaW5nSW1wbCBhbmQgYWRkaW5nIG1ldGhvZAorICAgICAgICBhY3NpaU9ubHlDb21wYXJl
KCkgdG8gY2xhc3MgU3RyaW5nLgorCisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAg
ICAgIChKU0M6OlVTdHJpbmc6OmNvbXBhcmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6Y29tcGFyZSk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjphc2NpaU9ubHlDb21wYXJlKToKKwogMjAxMC0w
NS0yNSAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKaW5kZXgg
YmRjODk2ZC4uYjRiYzk1YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3Ry
aW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCkBAIC01NzUs
MjcgKzU3NSw5IEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3Ry
aW5nJiBzMikKICAgICByZXR1cm4gKGwxID4gbDIpOwogfQogCi1pbnQgY29tcGFyZShjb25zdCBV
U3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCitpbnQgY29tcGFyZShjb25zdCBVU3RyaW5n
JiBhLCBjb25zdCBVU3RyaW5nJiBiKQogewotICAgIGNvbnN0IHVuc2lnbmVkIGwxID0gczEuc2l6
ZSgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIuc2l6ZSgpOwotICAgIGNvbnN0IHVuc2ln
bmVkIGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKLSAgICBjb25zdCBVQ2hhciogYzEgPSBzMS5k
YXRhKCk7Ci0gICAgY29uc3QgVUNoYXIqIGMyID0gczIuZGF0YSgpOwotICAgIHVuc2lnbmVkIGwg
PSAwOwotICAgIHdoaWxlIChsIDwgbG1pbiAmJiAqYzEgPT0gKmMyKSB7Ci0gICAgICAgIGMxKys7
Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGwrKzsKLSAgICB9Ci0KLSAgICBpZiAobCA8IGxtaW4p
Ci0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7Ci0KLSAgICBpZiAobDEg
PT0gbDIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIChsMSA+IGwyKSA/IDEgOiAt
MTsKKyAgICByZXR1cm4gVVN0cmluZzo6Y29tcGFyZShhLCBiKTsKIH0KIAogQ1N0cmluZyBVU3Ry
aW5nOjpVVEY4U3RyaW5nKGJvb2wgc3RyaWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aAppbmRleCBhOTdlMGQ3Li43Zjg5NzE2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaApAQCAt
MTI4LDYgKzEyOCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgcmZpbmQo
Y29uc3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQg
cmZpbmQoVUNoYXIsIHVuc2lnbmVkIHBvcykgY29uc3Q7CiAKKyAgICAgICAgc3RhdGljIGludCBj
b21wYXJlKGNvbnN0IFVTdHJpbmcmIGEsIGNvbnN0IFVTdHJpbmcmIGIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghYS5tX3JlcCB8fCAhYi5tX3JlcCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gYS5tX3JlcCA/IDEgOiBiLm1fcmVwID8gLTEgOiAwOworICAgICAgICAgICAgcmV0dXJuIFJl
cDo6Y29tcGFyZShhLm1fcmVwLmdldCgpLCBiLm1fcmVwLmdldCgpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIFVTdHJpbmcgc3Vic3RyKHVuc2lnbmVkIHBvcyA9IDAsIHVuc2lnbmVkIGxlbiA9IDB4
RkZGRkZGRkYpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBVU3RyaW5nJiBudWxsKCkg
eyByZXR1cm4gKnNfbnVsbFVTdHJpbmc7IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKaW5kZXggMzYwNjU5Ny4uODI1NWJjYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAKQEAgLTQ3Niw2ICs0NzYsMjkgQEAgc3RhdGljIGlubGluZSBib29sIGVxdWFs
SWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0aCkK
ICAgICByZXR1cm4gdW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKSA9PSAwOwogfQogCitpbnQgU3Ry
aW5nSW1wbDo6Y29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzMSwgY29uc3QgU3RyaW5nSW1wbCog
czIpCit7CisgICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMS0+bGVuZ3RoKCk7CisgICAgY29uc3Qg
dW5zaWduZWQgbDIgPSBzMi0+bGVuZ3RoKCk7CisgICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwx
IDwgbDIgPyBsMSA6IGwyOworICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxLT5jaGFyYWN0ZXJzKCk7
CisgICAgY29uc3QgVUNoYXIqIGMyID0gczItPmNoYXJhY3RlcnMoKTsKKyAgICB1bnNpZ25lZCBs
ID0gMDsKKyAgICB3aGlsZSAobCA8IGxtaW4gJiYgKmMxID09ICpjMikgeworICAgICAgICBjMSsr
OworICAgICAgICBjMisrOworICAgICAgICBsKys7CisgICAgfQorCisgICAgaWYgKGwgPCBsbWlu
KQorICAgICAgICByZXR1cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOworCisgICAgaWYgKGwx
ID09IGwyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAobDEgPiBsMikgPyAxIDog
LTE7Cit9CisKIGludCBTdHJpbmdJbXBsOjpmaW5kKGNvbnN0IGNoYXIqIGNocywgaW50IGluZGV4
LCBib29sIGNhc2VTZW5zaXRpdmUpCiB7CiAgICAgaWYgKCFjaHMgfHwgaW5kZXggPCAwKQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGY0YjI5NzAuLmYxOTM5NmEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTMwMSw2ICszMDEsOCBAQCBwdWJsaWM6
CiAgICAgaW50IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgaW50IGluZGV4ID0gMCk7
CiAgICAgaW50IGZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSk7CiAKKyAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNv
bnN0IFN0cmluZ0ltcGwqKTsKKwogICAgIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4
KTsKICAgICBpbnQgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSk7CiAgICAgCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGQ5ODYyMWMuLjc4NGZiMmYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1dURlN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC0yMjIsNiArMjIyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAgICAgdm9pZCBzcGxpdChVQ2hhciBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0OwogCisgICAgc3RhdGljIGludCBhc2NpaU9ubHlDb21wYXJlKGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgU3RyaW5nJiBiKQorICAgIHsKKyAgICAgICAgaWYgKCFhLm1faW1wbCB8fCAhYi5t
X2ltcGwpCisgICAgICAgICAgICByZXR1cm4gYS5tX2ltcGwgPyAxIDogYi5tX2ltcGwgPyAtMSA6
IDA7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wYXJlKGEubV9pbXBsLmdldCgpLCBi
Lm1faW1wbC5nZXQoKSk7CisgICAgfQorCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0g
MCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wq
IG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0
KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="41571"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57059</attachid>
            <date>2010-05-25 18:15:04 -0700</date>
            <delta_ts>2010-05-25 19:50:18 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>5954</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAwYjBlNDE4ZDZkYWI2ZDM2YzA2NTRkNWFmMGFkODk1NjlhNDk5NTlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMjUgTWF5IDIwMTAgMjI6MTM6MzQgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3Ry
aW5nIHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5n
IG1ldGhvZCBjb21wYXJlKCkgdG8gY2xhc3MgU3RyaW5nLgoKKiBydW50aW1lL1VTdHJpbmcuY3Bw
OgooSlNDOjpjb21wYXJlKToKKiBydW50aW1lL1VTdHJpbmcuaDoKKEpTQzo6VVN0cmluZzo6Y29t
cGFyZSk6Ciogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CihXZWJDb3JlOjpTdHJpbmdJbXBsOjpj
b21wYXJlKToKKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmg6
CihXZWJDb3JlOjpTdHJpbmc6OmNvbXBhcmUpOgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgIHwgICAyMCArKysrKysrKysrKysrKysrKysrKwogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmNwcCAgICAgfCAgIDIwICstLS0tLS0tLS0tLS0tLS0tLS0tCiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCAgICAgICB8ICAgIDcgKysrKysrKwogSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgfCAgIDIzICsrKysrKysrKysrKysr
KysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggICB8ICAgIDIg
KysKIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oICAgIHwgICAgNyArKysrKysr
CiA2IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAwZGVlY2MwLi40NTYxZjJmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDUtMjUgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVVRGLTE2
IGNvZGUgcG9pbnRzIGNvbXBhcmUoKSBmb3IgU3RyaW5nIG9iamVjdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCisKKyAgICAgICAgTW92aW5n
IGNvbXBhcmUoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIFVTdHJpbmcgdG8gU3RyaW5nSW1wbCBmb3Ig
aXQgdG8gYmUgc2hhcmVkCisgICAgICAgIHdpdGggU3RyaW5nLiBBZGRpbmcgbWV0aG9kIGNvbXBh
cmUoKSB0byBjbGFzcyBTdHJpbmcuCisKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgor
ICAgICAgICAoSlNDOjpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKyAg
ICAgICAgKEpTQzo6VVN0cmluZzo6Y29tcGFyZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBsOjpjb21wYXJlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmNvbXBhcmUpOgorCiAyMDEwLTA1LTI1ICBL
d2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAppbmRleCBiZGM4OTZk
Li45YmI3MTNiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKQEAgLTU3NywyNSArNTc3
LDcgQEAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KQogCiBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCiB7
Ci0gICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMS5zaXplKCk7Ci0gICAgY29uc3QgdW5zaWduZWQg
bDIgPSBzMi5zaXplKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6
IGwyOwotICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxLmRhdGEoKTsKLSAgICBjb25zdCBVQ2hhciog
YzIgPSBzMi5kYXRhKCk7Ci0gICAgdW5zaWduZWQgbCA9IDA7Ci0gICAgd2hpbGUgKGwgPCBsbWlu
ICYmICpjMSA9PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAg
bCsrOwotICAgIH0KLQotICAgIGlmIChsIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChjMVswXSA+
IGMyWzBdKSA/IDEgOiAtMTsKLQotICAgIGlmIChsMSA9PSBsMikKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gKGwxID4gbDIpID8gMSA6IC0xOworICAgIHJldHVybiBVU3RyaW5nOjpj
b21wYXJlKHMxLCBzMik7CiB9CiAKIENTdHJpbmcgVVN0cmluZzo6VVRGOFN0cmluZyhib29sIHN0
cmljdCkgY29uc3QKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5o
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggYTk3ZTBkNy4uN2Y4OTcx
NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTEyOCw2ICsxMjgsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIHJmaW5kKGNvbnN0IFVTdHJpbmcmIGYsIHVuc2ln
bmVkIHBvcykgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIHJmaW5kKFVDaGFyLCB1bnNpZ25lZCBw
b3MpIGNvbnN0OwogCisgICAgICAgIHN0YXRpYyBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiBh
LCBjb25zdCBVU3RyaW5nJiBiKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWEubV9yZXAg
fHwgIWIubV9yZXApCisgICAgICAgICAgICAgICAgcmV0dXJuIGEubV9yZXAgPyAxIDogYi5tX3Jl
cCA/IC0xIDogMDsKKyAgICAgICAgICAgIHJldHVybiBSZXA6OmNvbXBhcmUoYS5tX3JlcC5nZXQo
KSwgYi5tX3JlcC5nZXQoKSk7CisgICAgICAgIH0KKwogICAgICAgICBVU3RyaW5nIHN1YnN0cih1
bnNpZ25lZCBwb3MgPSAwLCB1bnNpZ25lZCBsZW4gPSAweEZGRkZGRkZGKSBjb25zdDsKIAogICAg
ICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyYgbnVsbCgpIHsgcmV0dXJuICpzX251bGxVU3RyaW5n
OyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBi
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDM2MDY1OTcuLmIx
NjE1NGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC00NzYsNiAr
NDc2LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hh
ciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIHVtZW1jYXNlY21w
KGEsIGIsIGxlbmd0aCkgPT0gMDsKIH0KIAoraW50IFN0cmluZ0ltcGw6OmNvbXBhcmUoY29uc3Qg
U3RyaW5nSW1wbCogczEsIGNvbnN0IFN0cmluZ0ltcGwqIHMyKQoreworICAgIGNvbnN0IHVuc2ln
bmVkIGwxID0gczEtPmxlbmd0aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczItPmxlbmd0
aCgpOworICAgIGNvbnN0IHVuc2lnbmVkIGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKKyAgICBj
b25zdCBVQ2hhciogYzEgPSBzMS0+Y2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBjMiA9
IHMyLT5jaGFyYWN0ZXJzKCk7CisgICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICB3aGlsZSAocG9z
IDwgbG1pbiAmJiAqYzEgPT0gKmMyKSB7CisgICAgICAgIGMxKys7CisgICAgICAgIGMyKys7Cisg
ICAgICAgIHBvcysrOworICAgIH0KKworICAgIGlmIChwb3MgPCBsbWluKQorICAgICAgICByZXR1
cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOworCisgICAgaWYgKGwxID09IGwyKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Cit9CisKIGludCBT
dHJpbmdJbXBsOjpmaW5kKGNvbnN0IGNoYXIqIGNocywgaW50IGluZGV4LCBib29sIGNhc2VTZW5z
aXRpdmUpCiB7CiAgICAgaWYgKCFjaHMgfHwgaW5kZXggPCAwKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCmluZGV4IGY0YjI5NzAuLmYxOTM5NmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKQEAgLTMwMSw2ICszMDEsOCBAQCBwdWJsaWM6CiAgICAgaW50IGZpbmQo
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgaW50IGluZGV4ID0gMCk7CiAgICAgaW50IGZpbmQo
U3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CiAKKyAg
ICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwq
KTsKKwogICAgIGludCByZXZlcnNlRmluZChVQ2hhciwgaW50IGluZGV4KTsKICAgICBpbnQgcmV2
ZXJzZUZpbmQoU3RyaW5nSW1wbCosIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZSk7CiAgICAgCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcu
aCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGQ5ODYyMWMuLjlk
OGExMGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0yMjIsNiArMjIyLDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmlu
Zz4mIHJlc3VsdCkgY29uc3Q7CiAgICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wg
YWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwogCisgICAg
c3RhdGljIGludCBjb21wYXJlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQorICAg
IHsKKyAgICAgICAgaWYgKCFhLm1faW1wbCB8fCAhYi5tX2ltcGwpCisgICAgICAgICAgICByZXR1
cm4gYS5tX2ltcGwgPyAxIDogYi5tX2ltcGwgPyAtMSA6IDA7CisgICAgICAgIHJldHVybiBTdHJp
bmdJbXBsOjpjb21wYXJlKGEubV9pbXBsLmdldCgpLCBiLm1faW1wbC5nZXQoKSk7CisgICAgfQor
CiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCkg
Y29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2Ug
PSAxMCkgY29uc3Q7Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57065</attachid>
            <date>2010-05-25 19:50:18 -0700</date>
            <delta_ts>2010-05-26 14:26:35 -0700</delta_ts>
            <desc>patch 3</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>6653</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBhZTlmZmYyYjc1ZmVkYWRhNjUyOTY3MmI1YzUzYjI1MDgxNGQzZDIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMjUgTWF5IDIwMTAgMjM6NDY6NTcgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3Ry
aW5nIHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5n
IG1ldGhvZCBjb21wYXJlKCkgdG8gY2xhc3MgU3RyaW5nLgoKKiBydW50aW1lL1VTdHJpbmcuY3Bw
OgooSlNDOjpVU3RyaW5nOjpjb21wYXJlKToKKEpTQzo6Y29tcGFyZSk6CiogcnVudGltZS9VU3Ry
aW5nLmg6Ciogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CihXZWJDb3JlOjpTdHJpbmdJbXBsOjpj
b21wYXJlKToKKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmNw
cDoKKFdlYkNvcmU6OlN0cmluZzo6Y29tcGFyZSk6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmg6Ci0t
LQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgIDIxICsrKysrKysr
KysrKysrKysrKysrKwogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCAgICAgfCAg
IDI1ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0
cmluZy5oICAgICAgIHwgICAgMiArKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAgfCAgIDIzICsrKysrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmggICB8ICAgIDMgKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwICB8ICAgIDUgKysrKysKIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5oICAgIHwgICAgMyArKysKIDcgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwg
MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBkZWVjYzAuLmY4MWQ3MDMgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3
MDEKKworICAgICAgICBNb3ZpbmcgY29tcGFyZSgpIGltcGxlbWVudGF0aW9uIGZyb20gVVN0cmlu
ZyB0byBTdHJpbmdJbXBsIGZvciBpdCB0byBiZSBzaGFyZWQKKyAgICAgICAgd2l0aCBTdHJpbmcu
IEFkZGluZyBtZXRob2QgY29tcGFyZSgpIHRvIGNsYXNzIFN0cmluZy4KKworICAgICAgICAqIHJ1
bnRpbWUvVVN0cmluZy5jcHA6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OmNvbXBhcmUpOgorICAg
ICAgICAoSlNDOjpjb21wYXJlKToKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuaDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0lt
cGw6OmNvbXBhcmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpjb21w
YXJlKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAxMC0wNS0yNSAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKaW5kZXggYmRjODk2ZC4u
YjhjZjMxZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCkBAIC01NzUsMjcgKzU3NSwx
NCBAQCBib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIp
CiAgICAgcmV0dXJuIChsMSA+IGwyKTsKIH0KIAotaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYg
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQoraW50IFVTdHJpbmc6OmNvbXBhcmUoY29uc3QgVVN0cmlu
ZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogewotICAgIGNvbnN0IHVuc2lnbmVkIGwxID0gczEu
c2l6ZSgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIuc2l6ZSgpOwotICAgIGNvbnN0IHVu
c2lnbmVkIGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKLSAgICBjb25zdCBVQ2hhciogYzEgPSBz
MS5kYXRhKCk7Ci0gICAgY29uc3QgVUNoYXIqIGMyID0gczIuZGF0YSgpOwotICAgIHVuc2lnbmVk
IGwgPSAwOwotICAgIHdoaWxlIChsIDwgbG1pbiAmJiAqYzEgPT0gKmMyKSB7Ci0gICAgICAgIGMx
Kys7Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGwrKzsKLSAgICB9Ci0KLSAgICBpZiAobCA8IGxt
aW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7Ci0KLSAgICBpZiAo
bDEgPT0gbDIpCi0gICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBSZXA6OmNvbXBhcmUoczEu
bV9yZXAuZ2V0KCksIHMyLm1fcmVwLmdldCgpKTsKK30KIAotICAgIHJldHVybiAobDEgPiBsMikg
PyAxIDogLTE7CitpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYg
czIpCit7CisgICAgcmV0dXJuIFVTdHJpbmc6OmNvbXBhcmUoczEsIHMyKTsKIH0KIAogQ1N0cmlu
ZyBVU3RyaW5nOjpVVEY4U3RyaW5nKGJvb2wgc3RyaWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VT
dHJpbmcuaAppbmRleCBhOTdlMGQ3Li4wY2JkZGU2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
aApAQCAtMTI4LDYgKzEyOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBy
ZmluZChjb25zdCBVU3RyaW5nJiBmLCB1bnNpZ25lZCBwb3MpIGNvbnN0OwogICAgICAgICB1bnNp
Z25lZCByZmluZChVQ2hhciwgdW5zaWduZWQgcG9zKSBjb25zdDsKIAorICAgICAgICBzdGF0aWMg
aW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKKwogICAg
ICAgICBVU3RyaW5nIHN1YnN0cih1bnNpZ25lZCBwb3MgPSAwLCB1bnNpZ25lZCBsZW4gPSAweEZG
RkZGRkZGKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyYgbnVsbCgpIHsg
cmV0dXJuICpzX251bGxVU3RyaW5nOyB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCmluZGV4IDM2MDY1OTcuLjI1ZWMxYjggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCkBAIC00NzYsNiArNDc2LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgpCiAg
ICAgcmV0dXJuIHVtZW1jYXNlY21wKGEsIGIsIGxlbmd0aCkgPT0gMDsKIH0KIAoraW50IFN0cmlu
Z0ltcGw6OmNvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogczEsIGNvbnN0IFN0cmluZ0ltcGwqIHMy
KQoreworICAgIGNvbnN0IHVuc2lnbmVkIGwxID0gczEgPyBzMS0+bGVuZ3RoKCkgOiAwOworICAg
IGNvbnN0IHVuc2lnbmVkIGwyID0gczIgPyBzMi0+bGVuZ3RoKCkgOiAwOworICAgIGNvbnN0IHVu
c2lnbmVkIGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKKyAgICBjb25zdCBVQ2hhciogYzEgPSBz
MSA/IHMxLT5jaGFyYWN0ZXJzKCkgOiAwOworICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMyID8gczIt
PmNoYXJhY3RlcnMoKSA6IDA7CisgICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICB3aGlsZSAocG9z
IDwgbG1pbiAmJiAqYzEgPT0gKmMyKSB7CisgICAgICAgIGMxKys7CisgICAgICAgIGMyKys7Cisg
ICAgICAgIHBvcysrOworICAgIH0KKworICAgIGlmIChwb3MgPCBsbWluKQorICAgICAgICByZXR1
cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOworCisgICAgaWYgKGwxID09IGwyKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Cit9CisKIGludCBT
dHJpbmdJbXBsOjpmaW5kKGNvbnN0IGNoYXIqIGNocywgaW50IGluZGV4LCBib29sIGNhc2VTZW5z
aXRpdmUpCiB7CiAgICAgaWYgKCFjaHMgfHwgaW5kZXggPCAwKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCmluZGV4IGY0YjI5NzAuLjk0MWY0ZmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKQEAgLTI0Niw2ICsyNDYsOSBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIGRlcmVmKCkgeyBtX3JlZkNvdW50QW5kRmxhZ3MgLT0gc19yZWZDb3VudEluY3Jl
bWVudDsgaWYgKCEobV9yZWZDb3VudEFuZEZsYWdzICYgKHNfcmVmQ291bnRNYXNrIHwgc19yZWZD
b3VudEZsYWdTdGF0aWMpKSkgZGVsZXRlIHRoaXM7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aGFzT25lUmVmKCkgY29uc3QgeyByZXR1cm4gKG1fcmVmQ291bnRBbmRGbGFncyAmIChzX3JlZkNv
dW50TWFzayB8IHNfcmVmQ291bnRGbGFnU3RhdGljKSkgPT0gc19yZWZDb3VudEluY3JlbWVudDsg
fQogCisKKyAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0
cmluZ0ltcGwqKTsKKwogICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOwogCiAgICAgc3Rh
dGljIHZvaWQgY29weUNoYXJzKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIqIHNvdXJj
ZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCmluZGV4IDg0MmQ3NTUuLjgzODc2MjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcApAQCAtMTI2LDYgKzEyNiwxMSBAQCBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIq
IGNzLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIFN0cmluZyhjcykgKyBzOwogfQogCitp
bnQgU3RyaW5nOjpjb21wYXJlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQorewor
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wYXJlKGEuaW1wbCgpLCBiLmltcGwoKSk7Cit9CisK
IHZvaWQgU3RyaW5nOjppbnNlcnQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHBvcykKIHsK
ICAgICBpZiAoc3RyLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvV1RGU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaApp
bmRleCBkOTg2MjFjLi4xYmNlOTRhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtMjIyLDYgKzIyMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CiAgICAgdm9pZCBzcGxpdChVQ2hhciBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0OwogCisKKyAgICBzdGF0aWMgaW50IGNvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25z
dCBTdHJpbmcmIGIpOworCiAgICAgaW50IHRvSW50U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gMCwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9r
ID0gMCwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57137</attachid>
            <date>2010-05-26 14:26:35 -0700</date>
            <delta_ts>2010-05-27 09:05:42 -0700</delta_ts>
            <desc>patch 4</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>6292</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2MDYyOTY4MTM5MjUxOWJkODE2YWQ5OWZmMDM3MzcyYjA3NDJkZjY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMjYgTWF5IDIwMTAgMTg6MjI6NDMgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3Ry
aW5nIHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5n
IHN0YXRpYyBmdW5jdGlvbiBjb2RlUG9pbnRDb21wYXJlKCkgdG8gY2xhc3MgU3RyaW5nSW1wbCBh
bmQgYQpmcmVlIGZ1bmN0aW9uIGNvZGVQb2ludENvbXBhcmUoKSBmb3IgU3RyaW5nIG9iamVjdHMu
CgoqIHJ1bnRpbWUvVVN0cmluZy5jcHA6CihKU0M6OmNvbXBhcmUpOgoqIHJ1bnRpbWUvVVN0cmlu
Zy5oOgoqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgooV2ViQ29yZTo6U3RyaW5nSW1wbDo6Y29k
ZVBvaW50Q29tcGFyZSk6Ciogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgoqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CihXZWJDb3JlOjpjb2RlUG9pbnRDb21wYXJlKToKKiB3dGYvdGV4dC9XVEZTdHJp
bmcuaDoKLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAgMjEg
KysrKysrKysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
ICAgICB8ICAgMjAgKy0tLS0tLS0tLS0tLS0tLS0tLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VVN0cmluZy5oICAgICAgIHwgICAgMSArCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcCB8ICAgMjMgKysrKysrKysrKysrKysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCAgIHwgICAgMiArKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcCAgfCAgICA1ICsrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaCAgICB8ICAgIDIgKysKIDcgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwg
MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhYTMxODAuLjYxM2MzZDEgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2Jq
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk3
MDEKKworICAgICAgICBNb3ZpbmcgY29tcGFyZSgpIGltcGxlbWVudGF0aW9uIGZyb20gVVN0cmlu
ZyB0byBTdHJpbmdJbXBsIGZvciBpdCB0byBiZSBzaGFyZWQKKyAgICAgICAgd2l0aCBTdHJpbmcu
IEFkZGluZyBzdGF0aWMgZnVuY3Rpb24gY29kZVBvaW50Q29tcGFyZSgpIHRvIGNsYXNzIFN0cmlu
Z0ltcGwgYW5kIGEKKyAgICAgICAgZnJlZSBmdW5jdGlvbiBjb2RlUG9pbnRDb21wYXJlKCkgZm9y
IFN0cmluZyBvYmplY3RzLgorCisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29tcGFyZSk6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmg6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBs
Ojpjb2RlUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVQ
b2ludENvbXBhcmUpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDEwLTA1
LTI1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQg
YnVpbGQgZmFpbHVyZSBjYXVzZWQgYnkgbWVyZ2UuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1VTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNw
cAppbmRleCBiZGM4OTZkLi5hYzA5N2UxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAK
QEAgLTU3NywyNSArNTc3LDcgQEAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVVN0cmluZyYgczEsIGNv
bnN0IFVTdHJpbmcmIHMyKQogCiBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3Qg
VVN0cmluZyYgczIpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMS5zaXplKCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbDIgPSBzMi5zaXplKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbG1pbiA9
IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxLmRhdGEoKTsKLSAg
ICBjb25zdCBVQ2hhciogYzIgPSBzMi5kYXRhKCk7Ci0gICAgdW5zaWduZWQgbCA9IDA7Ci0gICAg
d2hpbGUgKGwgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAg
YzIrKzsKLSAgICAgICAgbCsrOwotICAgIH0KLQotICAgIGlmIChsIDwgbG1pbikKLSAgICAgICAg
cmV0dXJuIChjMVswXSA+IGMyWzBdKSA/IDEgOiAtMTsKLQotICAgIGlmIChsMSA9PSBsMikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gKGwxID4gbDIpID8gMSA6IC0xOworICAgIHJl
dHVybiBVU3RyaW5nOjpSZXA6OmNvZGVQb2ludENvbXBhcmUoczEubV9yZXAuZ2V0KCksIHMyLm1f
cmVwLmdldCgpKTsKIH0KIAogQ1N0cmluZyBVU3RyaW5nOjpVVEY4U3RyaW5nKGJvb2wgc3RyaWN0
KSBjb25zdApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAppbmRleCBhOTdlMGQ3Li43NGIwNGM3IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaApAQCAtMTU0LDYgKzE1NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGZyaWVuZCB2b2lkIGluaXRpYWxpemVVU3RyaW5nKCk7CiAgICAgICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYsIGNvbnN0IFVTdHJpbmcmKTsK
KyAgICAgICAgZnJpZW5kIGludCBjb21wYXJlKGNvbnN0IFVTdHJpbmcmLCBjb25zdCBVU3RyaW5n
Jik7CiAgICAgfTsKIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVT
dHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKaW5kZXggMzYwNjU5Ny4uODc1Y2NiMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKQEAgLTQ3Niw2ICs0NzYsMjkgQEAgc3RhdGljIGlubGluZSBib29sIGVx
dWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0
aCkKICAgICByZXR1cm4gdW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKSA9PSAwOwogfQogCitpbnQg
U3RyaW5nSW1wbDo6Y29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzMSwgY29uc3Qg
U3RyaW5nSW1wbCogczIpCit7CisgICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMSA/IHMxLT5sZW5n
dGgoKSA6IDA7CisgICAgY29uc3QgdW5zaWduZWQgbDIgPSBzMiA/IHMyLT5sZW5ndGgoKSA6IDA7
CisgICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOworICAgIGNvbnN0
IFVDaGFyKiBjMSA9IHMxID8gczEtPmNoYXJhY3RlcnMoKSA6IDA7CisgICAgY29uc3QgVUNoYXIq
IGMyID0gczIgPyBzMi0+Y2hhcmFjdGVycygpIDogMDsKKyAgICB1bnNpZ25lZCBwb3MgPSAwOwor
ICAgIHdoaWxlIChwb3MgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKKyAgICAgICAgYzErKzsKKyAg
ICAgICAgYzIrKzsKKyAgICAgICAgcG9zKys7CisgICAgfQorCisgICAgaWYgKHBvcyA8IGxtaW4p
CisgICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CisKKyAgICBpZiAobDEg
PT0gbDIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIChsMSA+IGwyKSA/IDEgOiAt
MTsKK30KKwogaW50IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgY2hhciogY2hzLCBpbnQgaW5kZXgs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkKIHsKICAgICBpZiAoIWNocyB8fCBpbmRleCA8IDApCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggZjRiMjk3MC4uMzI2OGYxOSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzAxLDYgKzMwMSw4IEBAIHB1YmxpYzoK
ICAgICBpbnQgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCBpbnQgaW5kZXggPSAwKTsK
ICAgICBpbnQgZmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKTsKIAorICAgIHN0YXRpYyBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJ
bXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworCiAgICAgaW50IHJldmVyc2VGaW5kKFVDaGFyLCBp
bnQgaW5kZXgpOwogICAgIGludCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgaW50IGluZGV4LCBi
b29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKICAgICAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCmluZGV4IDg0MmQ3NTUuLjM4NDRkMmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcApAQCAtMTI2LDYgKzEyNiwxMSBAQCBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0
IGNoYXIqIGNzLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIFN0cmluZyhjcykgKyBzOwog
fQogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikKK3sKKyAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29kZVBvaW50Q29tcGFyZShhLmltcGwoKSwg
Yi5pbXBsKCkpOworfQorCiB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyLCB1
bnNpZ25lZCBwb3MpCiB7CiAgICAgaWYgKHN0ci5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKaW5kZXggZDk4NjIxYy4uMWJhMjYxOSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTM1MSw2ICszNTEsOCBAQCBpbmxpbmUgYm9vbCBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiAgICAg
cmV0dXJuICEob3JlZCAmIDB4RkY4MCk7CiB9CiAKK2ludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKTsKKwogaW5saW5lIGludCBmaW5kKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVQ2hhciBjaGFyYWN0ZXIsIGludCBzdGFy
dFBvc2l0aW9uKQogewogICAgIGlmIChzdGFydFBvc2l0aW9uID49IHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoKSkKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="41668"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57251</attachid>
            <date>2010-05-27 09:05:42 -0700</date>
            <delta_ts>2010-05-27 14:05:47 -0700</delta_ts>
            <desc>patch 5</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>7618</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2YWQxY2Y2ZjhmODc0NDNiM2Q5ZTljMDkxMDhhZTJjZGI4YWQ2Y2Y1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjcgTWF5IDIwMTAgMTM6MDA6MzggLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3Ry
aW5nIHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5n
IG92ZXJsb2FkZWQgZnJlZSBmdW5jdGlvbnMgY29kZVBvaW50Q29tcGFyZSgpIGluIFN0cmluZ0lt
cGwKYW5kIFdURlN0cmluZy4gUmVuYW1pbmcgZnVuY3Rpb24gY29tcGFyZSBpbiBVU3RyaW5nIHRv
IGNvZGVQb2ludENvbXBhcmUgdG8gYmUKY29uc2lzdGVudC4KCiogcnVudGltZS9KU0FycmF5LmNw
cDoKKEpTQzo6Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KToKKiBydW50aW1lL1VTdHJpbmcu
Y3BwOgoqIHJ1bnRpbWUvVVN0cmluZy5oOgooSlNDOjpjb2RlUG9pbnRDb21wYXJlKToKKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgoqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaDoKKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgooV2ViQ29yZTo6Y29k
ZVBvaW50Q29tcGFyZSk6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmg6Ci0tLQogSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKysrKysrKysr
KwogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCAgICAgfCAgICAyICstCiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwICAgICB8ICAgMjMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oICAgICAgIHwgICAgNiAr
KysrKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIHwgICAyMyArKysr
KysrKysrKysrKysrKysrKysrKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5o
ICAgfCAgICAyICsrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwICB8ICAg
IDUgKysrKysKIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oICAgIHwgICAgMiAr
KwogOCBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggMTI0YzM0Yy4uZGJhNjBlNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBA
CisyMDEwLTA1LTI3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVURi0x
NiBjb2RlIHBvaW50cyBjb21wYXJlKCkgZm9yIFN0cmluZyBvYmplY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTcwMQorCisgICAgICAgIE1vdmlu
ZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3RyaW5nIHRvIFN0cmluZ0ltcGwgZm9y
IGl0IHRvIGJlIHNoYXJlZAorICAgICAgICB3aXRoIFN0cmluZy4gQWRkaW5nIG92ZXJsb2FkZWQg
ZnJlZSBmdW5jdGlvbnMgY29kZVBvaW50Q29tcGFyZSgpIGluIFN0cmluZ0ltcGwKKyAgICAgICAg
YW5kIFdURlN0cmluZy4gUmVuYW1pbmcgZnVuY3Rpb24gY29tcGFyZSBpbiBVU3RyaW5nIHRvIGNv
ZGVQb2ludENvbXBhcmUgdG8gYmUKKyAgICAgICAgY29uc2lzdGVudC4KKworICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OmNvbXBhcmVCeVN0cmluZ1BhaXJGb3JR
U29ydCk6CisgICAgICAgICogcnVudGltZS9VU3RyaW5nLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1VTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Y29kZVBvaW50Q29tcGFyZSk6CisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2RlUG9pbnRDb21w
YXJlKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDEwLTA1LTI3ICBLd2FuZyBZdWwg
U2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBkM2VmNDRjLi5jZjMyZTA3
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTY0OSw3ICs2NDksNyBAQCBzdGF0
aWMgaW50IGNvbXBhcmVCeVN0cmluZ1BhaXJGb3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2
b2lkKiBiKQogewogICAgIGNvbnN0IFZhbHVlU3RyaW5nUGFpciogdmEgPSBzdGF0aWNfY2FzdDxj
b25zdCBWYWx1ZVN0cmluZ1BhaXIqPihhKTsKICAgICBjb25zdCBWYWx1ZVN0cmluZ1BhaXIqIHZi
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVmFsdWVTdHJpbmdQYWlyKj4oYik7Ci0gICAgcmV0dXJuIGNv
bXBhcmUodmEtPnNlY29uZCwgdmItPnNlY29uZCk7CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUodmEtPnNlY29uZCwgdmItPnNlY29uZCk7CiB9CiAKIHZvaWQgSlNBcnJheTo6c29ydE51bWVy
aWMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2Fs
bFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcu
Y3BwCmluZGV4IGJkYzg5NmQuLjQ3ZGFiM2MgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVVN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNw
cApAQCAtNTc1LDI5ICs1NzUsNiBAQCBib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwg
Y29uc3QgVVN0cmluZyYgczIpCiAgICAgcmV0dXJuIChsMSA+IGwyKTsKIH0KIAotaW50IGNvbXBh
cmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIGNvbnN0IHVu
c2lnbmVkIGwxID0gczEuc2l6ZSgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIuc2l6ZSgp
OwotICAgIGNvbnN0IHVuc2lnbmVkIGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKLSAgICBjb25z
dCBVQ2hhciogYzEgPSBzMS5kYXRhKCk7Ci0gICAgY29uc3QgVUNoYXIqIGMyID0gczIuZGF0YSgp
OwotICAgIHVuc2lnbmVkIGwgPSAwOwotICAgIHdoaWxlIChsIDwgbG1pbiAmJiAqYzEgPT0gKmMy
KSB7Ci0gICAgICAgIGMxKys7Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGwrKzsKLSAgICB9Ci0K
LSAgICBpZiAobCA8IGxtaW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDog
LTE7Ci0KLSAgICBpZiAobDEgPT0gbDIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IChsMSA+IGwyKSA/IDEgOiAtMTsKLX0KLQogQ1N0cmluZyBVU3RyaW5nOjpVVEY4U3RyaW5nKGJv
b2wgc3RyaWN0KSBjb25zdAogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2gg
dG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1VTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCmluZGV4
IGE5N2UwZDcuLjE3YTFlZWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0
cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCkBAIC0xNTQsNiAr
MTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6
ZVVTdHJpbmcoKTsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5n
JiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBmcmllbmQgaW50IGNvZGVQb2ludENvbXBhcmUo
Y29uc3QgVVN0cmluZyYsIGNvbnN0IFVTdHJpbmcmKTsKICAgICB9OwogCiAgICAgQUxXQVlTX0lO
TElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KQpAQCAtMjAyLDcgKzIwMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuICFK
U0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKICAgICB9CiAKLSAgICBpbnQgY29tcGFyZShjb25zdCBV
U3RyaW5nJiwgY29uc3QgVVN0cmluZyYpOworICAgIGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFy
ZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCisgICAgeworICAgICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZShzMS5tX3JlcC5nZXQoKSwgczIubV9yZXAuZ2V0KCkpOwor
ICAgIH0KIAogICAgIC8vIFJ1bGUgZnJvbSBFQ01BIDE1LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBp
bmRleCBpcy4KICAgICAvLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5z
aWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0gMS4KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggMzYwNjU5Ny4uNjk4Y2FiOSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTQ3Niw2ICs0NzYsMjkgQEAgc3RhdGljIGlu
bGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciog
YiwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gdW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKSA9PSAw
OwogfQogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzMSwgY29uc3Qg
U3RyaW5nSW1wbCogczIpCit7CisgICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMSA/IHMxLT5sZW5n
dGgoKSA6IDA7CisgICAgY29uc3QgdW5zaWduZWQgbDIgPSBzMiA/IHMyLT5sZW5ndGgoKSA6IDA7
CisgICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOworICAgIGNvbnN0
IFVDaGFyKiBjMSA9IHMxID8gczEtPmNoYXJhY3RlcnMoKSA6IDA7CisgICAgY29uc3QgVUNoYXIq
IGMyID0gczIgPyBzMi0+Y2hhcmFjdGVycygpIDogMDsKKyAgICB1bnNpZ25lZCBwb3MgPSAwOwor
ICAgIHdoaWxlIChwb3MgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKKyAgICAgICAgYzErKzsKKyAg
ICAgICAgYzIrKzsKKyAgICAgICAgcG9zKys7CisgICAgfQorCisgICAgaWYgKHBvcyA8IGxtaW4p
CisgICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CisKKyAgICBpZiAobDEg
PT0gbDIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIChsMSA+IGwyKSA/IDEgOiAt
MTsKK30KKwogaW50IFN0cmluZ0ltcGw6OmZpbmQoY29uc3QgY2hhciogY2hzLCBpbnQgaW5kZXgs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkKIHsKICAgICBpZiAoIWNocyB8fCBpbmRleCA8IDApCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggZjRiMjk3MC4uMjQ0MDA5ZiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzUyLDYgKzM1Miw4IEBAIGlubGluZSBi
b29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1bnNp
Z25lZCBsZW5ndGgpIHsKIAogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwg
U3RyaW5nSW1wbCopOwogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgU3RyaW5nSW1wbCopOworCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGlu
ZShVQ2hhciBjKQogewogICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYmFzaWMgTGF0aW4t
MS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDg0MmQ3NTUuLmQ3NDRi
MTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMTI2LDYgKzEyNiwx
MSBAQCBTdHJpbmcgb3BlcmF0b3IrKGNvbnN0IGNoYXIqIGNzLCBjb25zdCBTdHJpbmcmIHMpCiAg
ICAgcmV0dXJuIFN0cmluZyhjcykgKyBzOwogfQogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gY29kZVBvaW50Q29t
cGFyZShhLmltcGwoKSwgYi5pbXBsKCkpOworfQorCiB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0
IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBwb3MpCiB7CiAgICAgaWYgKHN0ci5pc0VtcHR5KCkpIHsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggZDk4NjIxYy4uMWJhMjYxOSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM1MSw2ICszNTEsOCBAQCBpbmxpbmUg
Ym9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCiAgICAgcmV0dXJuICEob3JlZCAmIDB4RkY4MCk7CiB9CiAKK2ludCBjb2RlUG9p
bnRDb21wYXJlKGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKTsKKwogaW5saW5lIGlu
dCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVQ2hhciBjaGFy
YWN0ZXIsIGludCBzdGFydFBvc2l0aW9uKQogewogICAgIGlmIChzdGFydFBvc2l0aW9uID49IHN0
YXRpY19jYXN0PGludD4obGVuZ3RoKSkKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="41804"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="41805"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57274</attachid>
            <date>2010-05-27 14:05:47 -0700</date>
            <delta_ts>2010-05-27 14:24:35 -0700</delta_ts>
            <desc>patch 6</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>7301</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxYTYyMzEyNGIyNDFhODU2YWI3MDk5MTI4MDJkMjdjZjQ2YWVjNzc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjcgTWF5IDIwMTAgMTg6MDQ6MDUgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3RyaW5n
IHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5nIG92
ZXJsb2FkZWQgZnJlZSBmdW5jdGlvbnMgY29kZVBvaW50Q29tcGFyZSgpIGluIFN0cmluZ0ltcGwK
YW5kIFdURlN0cmluZy4gUmVuYW1pbmcgZnVuY3Rpb24gY29tcGFyZSBpbiBVU3RyaW5nIHRvIGNv
ZGVQb2ludENvbXBhcmUgdG8gYmUKY29uc2lzdGVudC4KCiogcnVudGltZS9KU0FycmF5LmNwcDoK
KEpTQzo6Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KToKKiBydW50aW1lL1VTdHJpbmcuY3Bw
OgoqIHJ1bnRpbWUvVVN0cmluZy5oOgooSlNDOjpjb2RlUG9pbnRDb21wYXJlKToKKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcDoKKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgoqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgooV2ViQ29yZTo6Y29kZVBv
aW50Q29tcGFyZSk6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmg6Ci0tLQogSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwICAgICB8ICAgMjMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oICAgICAgIHwgICAgNSArKysr
LQogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgfCAgIDIzICsrKysrKysr
KysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggICB8
ICAgIDIgKysKIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgIHwgICAgNSAr
KysrKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmggICAgfCAgICAyICsrCiA4
IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCAxMjRjMzRjLi4zYzQ5ODFmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTAtMDUtMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVVRGLTE2IGNvZGUg
cG9pbnRzIGNvbXBhcmUoKSBmb3IgU3RyaW5nIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCisKKyAgICAgICAgTW92aW5nIGNvbXBh
cmUoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIFVTdHJpbmcgdG8gU3RyaW5nSW1wbCBmb3IgaXQgdG8g
YmUgc2hhcmVkCisgICAgICAgIHdpdGggU3RyaW5nLiBBZGRpbmcgb3ZlcmxvYWRlZCBmcmVlIGZ1
bmN0aW9ucyBjb2RlUG9pbnRDb21wYXJlKCkgaW4gU3RyaW5nSW1wbAorICAgICAgICBhbmQgV1RG
U3RyaW5nLiBSZW5hbWluZyBmdW5jdGlvbiBjb21wYXJlIGluIFVTdHJpbmcgdG8gY29kZVBvaW50
Q29tcGFyZSB0byBiZQorICAgICAgICBjb25zaXN0ZW50LgorCisgICAgICAgICogcnVudGltZS9K
U0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KToK
KyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmlu
Zy5oOgorICAgICAgICAoSlNDOjpjb2RlUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29kZVBvaW50Q29tcGFyZSk6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTAtMDUtMjcgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGQzZWY0NGMuLmNmMzJlMDcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtNjQ5LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQg
Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIp
CiB7CiAgICAgY29uc3QgVmFsdWVTdHJpbmdQYWlyKiB2YSA9IHN0YXRpY19jYXN0PGNvbnN0IFZh
bHVlU3RyaW5nUGFpcio+KGEpOwogICAgIGNvbnN0IFZhbHVlU3RyaW5nUGFpciogdmIgPSBzdGF0
aWNfY2FzdDxjb25zdCBWYWx1ZVN0cmluZ1BhaXIqPihiKTsKLSAgICByZXR1cm4gY29tcGFyZSh2
YS0+c2Vjb25kLCB2Yi0+c2Vjb25kKTsKKyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+
c2Vjb25kLCB2Yi0+c2Vjb25kKTsKIH0KIAogdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwg
Y29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKaW5k
ZXggYmRjODk2ZC4uNDdkYWIzYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCkBAIC01
NzUsMjkgKzU3NSw2IEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBV
U3RyaW5nJiBzMikKICAgICByZXR1cm4gKGwxID4gbDIpOwogfQogCi1pbnQgY29tcGFyZShjb25z
dCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQg
bDEgPSBzMS5zaXplKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbDIgPSBzMi5zaXplKCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFy
KiBjMSA9IHMxLmRhdGEoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5kYXRhKCk7Ci0gICAg
dW5zaWduZWQgbCA9IDA7Ci0gICAgd2hpbGUgKGwgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKLSAg
ICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAgbCsrOwotICAgIH0KLQotICAgIGlm
IChsIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChjMVswXSA+IGMyWzBdKSA/IDEgOiAtMTsKLQot
ICAgIGlmIChsMSA9PSBsMikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gKGwxID4g
bDIpID8gMSA6IC0xOwotfQotCiBDU3RyaW5nIFVTdHJpbmc6OlVURjhTdHJpbmcoYm9vbCBzdHJp
Y3QpIGNvbnN0CiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xk
IGFsbCB0aGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VVN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggYTk3ZTBk
Ny4uNDM2NDAyMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTIwMiw3ICsyMDIsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMxLCBz
Mik7CiAgICAgfQogCi0gICAgaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYsIGNvbnN0IFVTdHJp
bmcmKTsKKyAgICBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgVVN0cmluZyYgczEs
IGNvbnN0IFVTdHJpbmcmIHMyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUoczEucmVwKCksIHMyLnJlcCgpKTsKKyAgICB9CiAKICAgICAvLyBSdWxlIGZyb20gRUNNQSAx
NS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCiAgICAgLy8gTXVzdCBleGFjdGx5IG1h
dGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4g
Ml4zMiAtIDEuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDM2MDY1
OTcuLjY5OGNhYjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC00
NzYsNiArNDc2LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIHVtZW1j
YXNlY21wKGEsIGIsIGxlbmd0aCkgPT0gMDsKIH0KIAoraW50IGNvZGVQb2ludENvbXBhcmUoY29u
c3QgU3RyaW5nSW1wbCogczEsIGNvbnN0IFN0cmluZ0ltcGwqIHMyKQoreworICAgIGNvbnN0IHVu
c2lnbmVkIGwxID0gczEgPyBzMS0+bGVuZ3RoKCkgOiAwOworICAgIGNvbnN0IHVuc2lnbmVkIGwy
ID0gczIgPyBzMi0+bGVuZ3RoKCkgOiAwOworICAgIGNvbnN0IHVuc2lnbmVkIGxtaW4gPSBsMSA8
IGwyID8gbDEgOiBsMjsKKyAgICBjb25zdCBVQ2hhciogYzEgPSBzMSA/IHMxLT5jaGFyYWN0ZXJz
KCkgOiAwOworICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMyID8gczItPmNoYXJhY3RlcnMoKSA6IDA7
CisgICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICB3aGlsZSAocG9zIDwgbG1pbiAmJiAqYzEgPT0g
KmMyKSB7CisgICAgICAgIGMxKys7CisgICAgICAgIGMyKys7CisgICAgICAgIHBvcysrOworICAg
IH0KKworICAgIGlmIChwb3MgPCBsbWluKQorICAgICAgICByZXR1cm4gKGMxWzBdID4gYzJbMF0p
ID8gMSA6IC0xOworCisgICAgaWYgKGwxID09IGwyKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Cit9CisKIGludCBTdHJpbmdJbXBsOjpmaW5kKGNv
bnN0IGNoYXIqIGNocywgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUpCiB7CiAgICAgaWYg
KCFjaHMgfHwgaW5kZXggPCAwKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IGY0YjI5NzAuLjI0NDAwOWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAg
LTM1Miw2ICszNTIsOCBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFy
KiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7CiAKIGJvb2wgZXF1YWxJZ25v
cmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIAoraW50IGNvZGVQb2ludENv
bXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKKwogc3RhdGljIGlu
bGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKIHsKICAgICAvLyBVc2UgaXNBU0NJ
SVNwYWNlKCkgZm9yIGJhc2ljIExhdGluLTEuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAppbmRleCA4NDJkNzU1Li5kNzQ0YjE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFy
KiBjcywgY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiBTdHJpbmcoY3MpICsgczsKIH0KIAor
aW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCit7
CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKK30KKwog
dm9pZCBTdHJpbmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgcG9zKQogewog
ICAgIGlmIChzdHIuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGQ5ODYyMWMuLjFiYTI2MTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1dURlN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC0zNTEsNiArMzUxLDggQEAgaW5saW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQogICAgIHJldHVybiAhKG9yZWQgJiAw
eEZGODApOwogfQogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYik7CisKIGlubGluZSBpbnQgZmluZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgVUNoYXIgY2hhcmFjdGVyLCBpbnQgc3RhcnRQb3NpdGlvbikKIHsKICAg
ICBpZiAoc3RhcnRQb3NpdGlvbiA+PSBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCkpCi0tIAoxLjYu
My4zCgo=
</data>
<flag name="review"
          id="41827"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57276</attachid>
            <date>2010-05-27 14:24:35 -0700</date>
            <delta_ts>2010-05-27 16:44:05 -0700</delta_ts>
            <desc>patch 7</desc>
            <filename>0001-UTF-16-code-points-compare-for-String-objects.patch</filename>
            <type>text/plain</type>
            <size>7297</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2YjY0MGU1NGFkYjE3OWM4NTBhNWE2ODhjMmE3ZGE3NjMzMDU0OTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjcgTWF5IDIwMTAgMTg6MjI6MzEgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBVVEYtMTYgY29kZSBwb2ludHMgY29tcGFyZSgpIGZvciBTdHJpbmcgb2JqZWN0cwogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCgpSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KCk1vdmluZyBjb21wYXJlKCkgaW1wbGVtZW50YXRpb24gZnJvbSBVU3RyaW5n
IHRvIFN0cmluZ0ltcGwgZm9yIGl0IHRvIGJlIHNoYXJlZAp3aXRoIFN0cmluZy4gQWRkaW5nIG92
ZXJsb2FkZWQgZnJlZSBmdW5jdGlvbnMgY29kZVBvaW50Q29tcGFyZSgpIGluIFN0cmluZ0ltcGwK
YW5kIFdURlN0cmluZy4gUmVuYW1pbmcgZnVuY3Rpb24gY29tcGFyZSBpbiBVU3RyaW5nIHRvIGNv
ZGVQb2ludENvbXBhcmUgdG8gYmUKY29uc2lzdGVudC4KCiogcnVudGltZS9KU0FycmF5LmNwcDoK
KEpTQzo6Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KToKKiBydW50aW1lL1VTdHJpbmcuY3Bw
OgoqIHJ1bnRpbWUvVVN0cmluZy5oOgooSlNDOjpjb2RlUG9pbnRDb21wYXJlKToKKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcDoKKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgoqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgooV2ViQ29yZTo6Y29kZVBv
aW50Q29tcGFyZSk6Ciogd3RmL3RleHQvV1RGU3RyaW5nLmg6Ci0tLQogSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCAgICAgfCAgICAyICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwICAgICB8ICAgMjMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oICAgICAgIHwgICAgNSArKysr
LQogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgfCAgIDIzICsrKysrKysr
KysrKysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggICB8
ICAgIDIgKysKIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgIHwgICAgNSAr
KysrKwogSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmggICAgfCAgICAyICsrCiA4
IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCAxMjRjMzRjLi4zYzQ5ODFmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTAtMDUtMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVVRGLTE2IGNvZGUg
cG9pbnRzIGNvbXBhcmUoKSBmb3IgU3RyaW5nIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NzAxCisKKyAgICAgICAgTW92aW5nIGNvbXBh
cmUoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIFVTdHJpbmcgdG8gU3RyaW5nSW1wbCBmb3IgaXQgdG8g
YmUgc2hhcmVkCisgICAgICAgIHdpdGggU3RyaW5nLiBBZGRpbmcgb3ZlcmxvYWRlZCBmcmVlIGZ1
bmN0aW9ucyBjb2RlUG9pbnRDb21wYXJlKCkgaW4gU3RyaW5nSW1wbAorICAgICAgICBhbmQgV1RG
U3RyaW5nLiBSZW5hbWluZyBmdW5jdGlvbiBjb21wYXJlIGluIFVTdHJpbmcgdG8gY29kZVBvaW50
Q29tcGFyZSB0byBiZQorICAgICAgICBjb25zaXN0ZW50LgorCisgICAgICAgICogcnVudGltZS9K
U0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KToK
KyAgICAgICAgKiBydW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmlu
Zy5oOgorICAgICAgICAoSlNDOjpjb2RlUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVQb2ludENvbXBhcmUpOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29kZVBvaW50Q29tcGFyZSk6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTAtMDUtMjcgIEt3YW5nIFl1bCBTZW8gIDxz
a3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGQzZWY0NGMuLmNmMzJlMDcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtNjQ5LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQg
Y29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIp
CiB7CiAgICAgY29uc3QgVmFsdWVTdHJpbmdQYWlyKiB2YSA9IHN0YXRpY19jYXN0PGNvbnN0IFZh
bHVlU3RyaW5nUGFpcio+KGEpOwogICAgIGNvbnN0IFZhbHVlU3RyaW5nUGFpciogdmIgPSBzdGF0
aWNfY2FzdDxjb25zdCBWYWx1ZVN0cmluZ1BhaXIqPihiKTsKLSAgICByZXR1cm4gY29tcGFyZSh2
YS0+c2Vjb25kLCB2Yi0+c2Vjb25kKTsKKyAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+
c2Vjb25kLCB2Yi0+c2Vjb25kKTsKIH0KIAogdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwg
Y29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKaW5k
ZXggYmRjODk2ZC4uNDdkYWIzYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCkBAIC01
NzUsMjkgKzU3NSw2IEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBV
U3RyaW5nJiBzMikKICAgICByZXR1cm4gKGwxID4gbDIpOwogfQogCi1pbnQgY29tcGFyZShjb25z
dCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQg
bDEgPSBzMS5zaXplKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbDIgPSBzMi5zaXplKCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFy
KiBjMSA9IHMxLmRhdGEoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5kYXRhKCk7Ci0gICAg
dW5zaWduZWQgbCA9IDA7Ci0gICAgd2hpbGUgKGwgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKLSAg
ICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAgbCsrOwotICAgIH0KLQotICAgIGlm
IChsIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChjMVswXSA+IGMyWzBdKSA/IDEgOiAtMTsKLQot
ICAgIGlmIChsMSA9PSBsMikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gKGwxID4g
bDIpID8gMSA6IC0xOwotfQotCiBDU3RyaW5nIFVTdHJpbmc6OlVURjhTdHJpbmcoYm9vbCBzdHJp
Y3QpIGNvbnN0CiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xk
IGFsbCB0aGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VVN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggYTk3ZTBk
Ny4uNDM2NDAyMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTIwMiw3ICsyMDIsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMxLCBz
Mik7CiAgICAgfQogCi0gICAgaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYsIGNvbnN0IFVTdHJp
bmcmKTsKKyAgICBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgVVN0cmluZyYgczEs
IGNvbnN0IFVTdHJpbmcmIHMyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUoczEucmVwKCksIHMyLnJlcCgpKTsKKyAgICB9CiAKICAgICAvLyBSdWxlIGZyb20gRUNNQSAx
NS4yIGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCiAgICAgLy8gTXVzdCBleGFjdGx5IG1h
dGNoIHN0cmluZyBmb3JtIG9mIGFuIHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4g
Ml4zMiAtIDEuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDM2MDY1
OTcuLjY5OGNhYjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC00
NzYsNiArNDc2LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25z
dCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIHVtZW1j
YXNlY21wKGEsIGIsIGxlbmd0aCkgPT0gMDsKIH0KIAoraW50IGNvZGVQb2ludENvbXBhcmUoY29u
c3QgU3RyaW5nSW1wbCogczEsIGNvbnN0IFN0cmluZ0ltcGwqIHMyKQoreworICAgIGNvbnN0IHVu
c2lnbmVkIGwxID0gczEgPyBzMS0+bGVuZ3RoKCkgOiAwOworICAgIGNvbnN0IHVuc2lnbmVkIGwy
ID0gczIgPyBzMi0+bGVuZ3RoKCkgOiAwOworICAgIGNvbnN0IHVuc2lnbmVkIGxtaW4gPSBsMSA8
IGwyID8gbDEgOiBsMjsKKyAgICBjb25zdCBVQ2hhciogYzEgPSBzMSA/IHMxLT5jaGFyYWN0ZXJz
KCkgOiAwOworICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMyID8gczItPmNoYXJhY3RlcnMoKSA6IDA7
CisgICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICB3aGlsZSAocG9zIDwgbG1pbiAmJiAqYzEgPT0g
KmMyKSB7CisgICAgICAgIGMxKys7CisgICAgICAgIGMyKys7CisgICAgICAgIHBvcysrOworICAg
IH0KKworICAgIGlmIChwb3MgPCBsbWluKQorICAgICAgICByZXR1cm4gKGMxWzBdID4gYzJbMF0p
ID8gMSA6IC0xOworCisgICAgaWYgKGwxID09IGwyKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiAobDEgPiBsMikgPyAxIDogLTE7Cit9CisKIGludCBTdHJpbmdJbXBsOjpmaW5kKGNv
bnN0IGNoYXIqIGNocywgaW50IGluZGV4LCBib29sIGNhc2VTZW5zaXRpdmUpCiB7CiAgICAgaWYg
KCFjaHMgfHwgaW5kZXggPCAwKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IGY0YjI5NzAuLjI0NDAwOWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAg
LTM1Miw2ICszNTIsOCBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFy
KiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7CiAKIGJvb2wgZXF1YWxJZ25v
cmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIAoraW50IGNvZGVQb2ludENv
bXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKKwogc3RhdGljIGlu
bGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKIHsKICAgICAvLyBVc2UgaXNBU0NJ
SVNwYWNlKCkgZm9yIGJhc2ljIExhdGluLTEuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAppbmRleCA4NDJkNzU1Li5kNzQ0YjE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKQEAgLTEyNiw2ICsxMjYsMTEgQEAgU3RyaW5nIG9wZXJhdG9yKyhjb25zdCBjaGFy
KiBjcywgY29uc3QgU3RyaW5nJiBzKQogICAgIHJldHVybiBTdHJpbmcoY3MpICsgczsKIH0KIAor
aW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCit7
CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS5pbXBsKCksIGIuaW1wbCgpKTsKK30KKwog
dm9pZCBTdHJpbmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgcG9zKQogewog
ICAgIGlmIChzdHIuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGQ5ODYyMWMuLjkwZDlhNzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1dURlN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC0zNTEsNiArMzUxLDggQEAgaW5saW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQogICAgIHJldHVybiAhKG9yZWQgJiAw
eEZGODApOwogfQogCitpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKwogaW5saW5lIGludCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbGVuZ3RoLCBVQ2hhciBjaGFyYWN0ZXIsIGludCBzdGFydFBvc2l0aW9uKQogewogICAgIGlm
IChzdGFydFBvc2l0aW9uID49IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSkKLS0gCjEuNi4zLjMK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>