<?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>4921</bug_id>
          
          <creation_ts>2005-09-10 13:09:45 -0700</creation_ts>
          <short_desc>\u escape sequences in JavaScript identifiers</short_desc>
          <delta_ts>2006-03-11 07:38:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>4885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>darin</cc>
    
    <cc>maksim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>19298</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-10 13:09:45 -0700</bug_when>
    <thetext>WebKit doesn&apos;t permit escaped sequences in JavaScript identifiers. As I understand ECMA-262, these are 
supposed to be handled exactly like the corresponding characters.

Firefox passes this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19299</commentid>
    <comment_count>1</comment_count>
      <attachid>3849</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-10 13:09:59 -0700</bug_when>
    <thetext>Created attachment 3849
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21801</commentid>
    <comment_count>2</comment_count>
      <attachid>4309</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 07:44:43 -0700</bug_when>
    <thetext>Created attachment 4309
Darin&apos;s patch extracted from 4885. Fixes unicode escapes

Darin&apos;s patch extracted from bug 4885. Fixes unicode escapes.

Note: in 4885, there&apos;s no handling of the case where there is an unicode escape
in an identifier which maps to a token after the escape is augmented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21803</commentid>
    <comment_count>3</comment_count>
      <attachid>4309</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-11 08:40:01 -0700</bug_when>
    <thetext>Comment on attachment 4309
Darin&apos;s patch extracted from 4885. Fixes unicode escapes

Looks great (not sure if I can review my own patch).

Where does the specification say that if you use \u sequences, then an
identifier is not a keyword? I re-read it and that was not clear to me. Did you
test other implementations to see if that was so? (Part of the reason I ask is
that I know in C++ it does not work this way; you can use the sequences in
keywords.)

The boolean identifierIsNotToken is a great way to implement that rule, but I
recommend naming it identifierIsNotKeyword instead. Another way to implement it
would be to create a separate state. The old one could be renamed
IdentifierOrKeyword and the new state would be just Identifier. The
IdentifierOrKeyword case could fall into the Identifier case after checking for
and handling keywords.

Besides allowing \u sequences in identifiers, this patch also implements the
full rule for what characters are allowed in identifiers. So the attached test
case is insufficient. We need test cases that cover a variety of valid and
invalid identifiers, as well as covering the case of an identifer that uses a
\u sequence to avoid collision with a keyword.

The minimum that would be needed on this patch would be renaming
identifierIsNotToken to identifierIsNotKeyword and adding more test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21810</commentid>
    <comment_count>4</comment_count>
      <attachid>4313</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 09:58:57 -0700</bug_when>
    <thetext>Created attachment 4313
New version of the unicode escape fix patch

Unicode escape fix. 

Changes the bool variable identifierIsNotToken to few extra states.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21811</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 10:06:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Where does the specification say that if you use \u sequences, then an
&gt; identifier is not a keyword? I re-read it and that was not clear to me. Did you
&gt; test other implementations to see if that was so? (Part of the reason I ask is
&gt; that I know in C++ it does not work this way; you can use the sequences in
&gt; keywords.)

The grammar says that &apos;Keyword&apos; can be one of the set of keywords and that &apos;IdentifierStart&apos; can have 
&apos;UnicodeEscape&apos;, so I assumed that that means that &apos;Keyword&apos; can not have &apos;UnicodeEscape&apos;. As far as I 
can see, the spec says that you shouldn&apos;t have unicode escapes in keywords. It&apos;s not explicitly written 
out, so I could be missing something..

Yes, Firefox behaves in same way. There&apos;s also mozilla test to test this - ecma_3/Unicode/uc-003.js is 
fixed with the patch..

&gt; The boolean identifierIsNotToken is a great way to implement that rule, but I
&gt; recommend naming it identifierIsNotKeyword instead. Another way to implement it
&gt; would be to create a separate state. The old one could be renamed
&gt; IdentifierOrKeyword and the new state would be just Identifier. The
&gt; IdentifierOrKeyword case could fall into the Identifier case after checking for
&gt; and handling keywords.

This is certainly more explicit and clearer. I added this to the new patch. 

&gt; Besides allowing \u sequences in identifiers, this patch also implements the
&gt; full rule for what characters are allowed in identifiers. So the attached test
&gt; case is insufficient. We need test cases that cover a variety of valid and
&gt; invalid identifiers, as well as covering the case of an identifer that uses a
&gt; \u sequence to avoid collision with a keyword.

There&apos;s atleast that  ecma_3/Unicode/uc-003.js which is fixed. It tests the collision with the keyword.
 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21812</commentid>
    <comment_count>6</comment_count>
      <attachid>4314</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 10:09:56 -0700</bug_when>
    <thetext>Created attachment 4314
Testcase to demonstrate keyword clash with unicode escape sequences

Testcase to demonstrate keyword clash with unicode escape sequences. Duplicates
the test of ecma_3/Unicode/uc-003.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21816</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 10:20:56 -0700</bug_when>
    <thetext>BTW: here&apos;s the list of tests this fixes. Unfortunately there are one unrelated test case which is fixed..

ecma_3/Function/regress-193555.js
I don&apos;t know why this is fixed. I thought it has something to do with additional checks for whitespace 
characters (ie. the test may have unicode whitespace chars which were previously not accepted as 
whitespace). With fast inspection, I couldn&apos;t find such a characters, though.

ecma_3/Function/regress-58274.js
Unicode escape test for escaped chars.

ecma_3/Unicode/uc-003.js

Tests identifiers which have escaped unicode chars. Also tests the keyword clash

ecma_3/Unicode/uc-005.js
Unicode escape test for escaped chars.


BTW. There might be problems with following constructs:
function id\1234() { };
if (id\1234.toString() == somestringvar)

because &apos;id\1234.toString()&apos; doesn&apos;t return string with escaped text, but string &apos;id?&apos; where ? is the 
augmented unicode character. So some information of the source is lost.

In Firefox situation is similar but slightly better: for &apos;id\1234&apos; FF returns &apos;id\1234&apos;, but for &apos;id\abcd&apos; FF 
returns &apos;id\ABCD&apos;.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21817</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-10-11 10:24:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; function id\1234() { };
&gt; if (id\1234.toString() == somestringvar)

And of course there were tons of typos in the comment #7.
The \1234 should&apos;ve been \u1234. For example the above snippet should have been something like

function id\u1234() { };
if (id\u1234.toString() == somestringvar)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27259</commentid>
    <comment_count>9</comment_count>
    <who name="Maks Orlovich">maksim</who>
    <bug_when>2005-12-30 12:32:39 -0800</bug_when>
    <thetext>This also fixes kjs/parse.js, via permitting unicode identifiers. I can spot a 
bug though --- it needs to check that decoded chars are valid identifier 
start/continuation. From 7.6: 
&quot;A UnicodeEscapeSequence 
cannot be used to put a character into an identifier that would otherwise be 
illegal. In other words, if a \ 
UnicodeEscapeSequence sequence were replaced by its UnicodeEscapeSequence&apos;s 
CV, the result must still 
be a valid Identifier that has the exact same sequence of characters as the 
original Identifier.&quot; 
 
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27263</commentid>
    <comment_count>10</comment_count>
      <attachid>4313</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2005-12-30 13:20:37 -0800</bug_when>
    <thetext>Comment on attachment 4313
New version of the unicode escape fix patch

The bug Maks mentions is probably worthy of a separate bug report. This patch,
however, seems to have addressed Darin&apos;s previous comments. Darin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27265</commentid>
    <comment_count>11</comment_count>
      <attachid>4313</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-30 13:29:18 -0800</bug_when>
    <thetext>Comment on attachment 4313
New version of the unicode escape fix patch

Yes, seems fine to land this as the next step in improving things. I&apos;d like to
see the problem Maks reports fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27266</commentid>
    <comment_count>12</comment_count>
      <attachid>4313</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-30 13:29:38 -0800</bug_when>
    <thetext>Comment on attachment 4313
New version of the unicode escape fix patch

The patch contains some tab characters. It would be best to land it without
those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27749</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-01-04 13:43:27 -0800</bug_when>
    <thetext>Landed. Didn&apos;t land layout test because comments indicate it&apos;s a duplicate of the mozilla test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35893</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-11 07:38:13 -0800</bug_when>
    <thetext>*** Bug 4918 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3849</attachid>
            <date>2005-09-10 13:09:59 -0700</date>
            <delta_ts>2005-09-10 13:09:59 -0700</delta_ts>
            <desc>test case</desc>
            <filename>js-escaped-sequences.html</filename>
            <type>text/html</type>
            <size>669</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cjx0aXRsZT5cdSBzZXF1ZW5jZXMgaW4gaWRlbnRp
ZmllcnM8L3RpdGxlPgoKPHNjcmlwdD4KZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkKewoJdmFyIFx1
MDA2MSA9IDE7CgkKCS8vIE9LLCBwYXJzZWQgdG8gaGVyZSBzdWNjZXNzZnVsbHkuLi4KCWRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKVswXS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9
ICIiOwoKCWlmICh0eXBlb2YgXHUwMDYxID09ICdudW1iZXInKQoJCWRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdkaXYnKVswXS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJTdWNjZXNzIjsK
CWVsc2UKCQlkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0uZmlyc3RDaGls
ZC5ub2RlVmFsdWUgPSAiRmFpbHVyZSI7Cn0KPC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxib2R5IG9ubG9h
ZD0ibG9hZENvbXBsZXRlKCkiPgo8ZGl2PlBhcnNlIEZhaWx1cmU8L2Rpdj4KPHNjcmlwdD4KCWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKCQlsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Cgl9Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4309</attachid>
            <date>2005-10-11 07:44:43 -0700</date>
            <delta_ts>2005-10-11 09:58:57 -0700</delta_ts>
            <desc>Darin&apos;s patch extracted from 4885. Fixes unicode escapes</desc>
            <filename>jscore-4921-unicode-escape-fix.diff</filename>
            <type>text/plain</type>
            <size>9780</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMwpkaWZmIC1wIC11IC1yMS4zMyBKYXZhU2NyaXB0
Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0
aW9uX29iamVjdC5jcHAJMyBPY3QgMjAwNSAyMToxMTo0OCAtMDAwMAkxLjMzCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkxMSBPY3QgMjAwNSAxNDo0Mjo0NyAtMDAw
MApAQCAtMjMyLDExICsyMzIsMTAgQEAgT2JqZWN0SW1wICpGdW5jdGlvbk9iamVjdEltcDo6Y29u
c3RydWN0KAogICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgd2hpbGUgKCpjID09ICcgJyAmJiBp
IDwgbGVuKQogCSAgYysrLCBpKys7Ci0gICAgICBpZiAoTGV4ZXI6OmlzSWRlbnRMZXR0ZXIoYy0+
dWMpKSB7ICAvLyBlbHNlIGVycm9yCisgICAgICBpZiAoTGV4ZXI6OmlzSWRlbnRTdGFydChjLT51
YykpIHsgIC8vIGVsc2UgZXJyb3IKIAkgIHBhcmFtID0gVVN0cmluZyhjLCAxKTsKIAkgIGMrKywg
aSsrOwotCSAgd2hpbGUgKGkgPCBsZW4gJiYgKExleGVyOjppc0lkZW50TGV0dGVyKGMtPnVjKSB8
fAotCQkJICAgICBMZXhlcjo6aXNEZWNpbWFsRGlnaXQoYy0+dWMpKSkgeworCSAgd2hpbGUgKGkg
PCBsZW4gJiYgKExleGVyOjppc0lkZW50UGFydChjLT51YykpKSB7CiAJICAgICAgcGFyYW0gKz0g
VVN0cmluZyhjLCAxKTsKIAkgICAgICBjKyssIGkrKzsKIAkgIH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9sZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjEKZGlmZiAtcCAt
dSAtcjEuMjEgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL2xleGVyLmNwcAkzIE9jdCAyMDA1IDIxOjExOjQ5IC0wMDAwCTEuMjEKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5jcHAJMTEgT2N0IDIwMDUgMTQ6NDI6NDcgLTAwMDAKQEAgLTM5LDYg
KzM5LDkgQEAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAibG9va3VwLmgiCiAj
aW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CisKK3N0YXRp
YyBib29sIGlzRGVjaW1hbERpZ2l0KHVuc2lnbmVkIHNob3J0IGMpOwogCiAvLyB3ZSBjYW4ndCBz
cGVjaWZ5IHRoZSBuYW1lc3BhY2UgaW4geWFjYydzIEMgb3V0cHV0LCBzbyBkbyBpdCBoZXJlCiB1
c2luZyBuYW1lc3BhY2UgS0pTOwpAQCAtNzMsNyArNzYsNyBAQCBMZXhlcjo6TGV4ZXIoKQogewog
ICAvLyBhbGxvY2F0ZSBzcGFjZSBmb3IgcmVhZCBidWZmZXJzCiAgIGJ1ZmZlcjggPSBuZXcgY2hh
cltzaXplOF07Ci0gIGJ1ZmZlcjE2ID0gbmV3IFVDaGFyW3NpemUxNl07CisgIGJ1ZmZlcjE2ID0g
bmV3IEtKUzo6VUNoYXJbc2l6ZTE2XTsKICAgY3VyckxleGVyID0gdGhpczsKIH0KIApAQCAtMTAx
LDcgKzEwNCw3IEBAIHZvaWQgTGV4ZXI6Omdsb2JhbENsZWFyKCkKIH0KICNlbmRpZgogCi12b2lk
IExleGVyOjpzZXRDb2RlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGlu
ZU51bWJlciwgY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVkIGludCBsZW4pCit2b2lkIExleGVyOjpz
ZXRDb2RlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwg
Y29uc3QgS0pTOjpVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgeXlsaW5lbm8gPSAx
ICsgc3RhcnRpbmdMaW5lTnVtYmVyOwogICBtX3NvdXJjZVVSTCA9IHNvdXJjZVVSTDsKQEAgLTE1
Niw2ICsxNTksNyBAQCB2b2lkIExleGVyOjpzZXREb25lKFN0YXRlIHMpCiBpbnQgTGV4ZXI6Omxl
eCgpCiB7CiAgIGludCB0b2tlbiA9IDA7CisgIGJvb2wgaWRlbnRpZmllcklzTm90VG9rZW4gPSBm
YWxzZTsKICAgc3RhdGUgPSBTdGFydDsKICAgdW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSA9IDA7
IC8vIGVpdGhlciBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcwogICBwb3M4ID0gcG9zMTYgPSAwOwpA
QCAtMTk2LDcgKzIwMCw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgIH0gZWxzZSBpZiAoY3Vy
cmVudCA9PSAwKSB7CiAgICAgICAgIGlmICghdGVybWluYXRvciAmJiAhZGVsaW1pdGVkKSB7CiAg
ICAgICAgICAgLy8gYXV0b21hdGljIHNlbWljb2xvbiBpbnNlcnRpb24gaWYgcHJvZ3JhbSBpbmNv
bXBsZXRlCi0gICAgICAgICAgdG9rZW4gPSAnOyc7CisgICAgICAgICAgdG9rZW4gPSAnOyc7CQog
ICAgICAgICAgIHN0YWNrVG9rZW4gPSAwOwogICAgICAgICAgIHNldERvbmUoT3RoZXIpOwogICAg
ICAgICB9IGVsc2UKQEAgLTIxMSw5ICsyMTUsMTIgQEAgaW50IExleGVyOjpsZXgoKQogICAgICAg
fSBlbHNlIGlmIChjdXJyZW50ID09ICciJyB8fCBjdXJyZW50ID09ICdcJycpIHsKICAgICAgICAg
c3RhdGUgPSBJblN0cmluZzsKICAgICAgICAgc3RyaW5nVHlwZSA9IGN1cnJlbnQ7Ci0gICAgICB9
IGVsc2UgaWYgKGlzSWRlbnRMZXR0ZXIoY3VycmVudCkpIHsKKyAgICAgIH0gZWxzZSBpZiAoaXNJ
ZGVudFN0YXJ0KGN1cnJlbnQpKSB7CiAgICAgICAgIHJlY29yZDE2KGN1cnJlbnQpOwogICAgICAg
ICBzdGF0ZSA9IEluSWRlbnRpZmllcjsKKyAgICAgICAgaWRlbnRpZmllcklzTm90VG9rZW4gPSBm
YWxzZTsKKyAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PSAnXFwnKSB7CisJc3RhdGUgPSBJbklk
ZW50aWZpZXJVbmljb2RlRXNjYXBlU3RhcnQ7CiAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQgPT0g
JzAnKSB7CiAgICAgICAgIHJlY29yZDgoY3VycmVudCk7CiAgICAgICAgIHN0YXRlID0gSW5OdW0w
OwpAQCAtMzAyLDExICszMDksMTAgQEAgaW50IExleGVyOjpsZXgoKQogICAgICAgfQogICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJblVuaWNvZGVFc2NhcGU6Ci0gICAgICBpZiAoaXNIZXhEaWdpdChj
dXJyZW50KSAmJiBpc0hleERpZ2l0KG5leHQxKSAmJgotICAgICAgICAgIGlzSGV4RGlnaXQobmV4
dDIpICYmIGlzSGV4RGlnaXQobmV4dDMpKSB7CisgICAgICBpZiAoaXNIZXhEaWdpdChjdXJyZW50
KSAmJiBpc0hleERpZ2l0KG5leHQxKSAmJiBpc0hleERpZ2l0KG5leHQyKSAmJiBpc0hleERpZ2l0
KG5leHQzKSkgewogICAgICAgICByZWNvcmQxNihjb252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0
MSwgbmV4dDIsIG5leHQzKSk7CiAgICAgICAgIHNoaWZ0KDMpOwotICAgICAgICBzdGF0ZSA9IElu
U3RyaW5nOworCXN0YXRlID0gSW5TdHJpbmc7CiAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQgPT0g
c3RyaW5nVHlwZSkgewogICAgICAgICByZWNvcmQxNigndScpOwogICAgICAgICBzaGlmdCgxKTsK
QEAgLTMzOSwxMSArMzQ1LDEyIEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgIH0KICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSW5JZGVudGlmaWVyOgotICAgICAgaWYgKGlzSWRlbnRMZXR0ZXIoY3Vy
cmVudCkgfHwgaXNEZWNpbWFsRGlnaXQoY3VycmVudCkpIHsKKyAgICAgIGlmIChpc0lkZW50UGFy
dChjdXJyZW50KSkKICAgICAgICAgcmVjb3JkMTYoY3VycmVudCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotICAgICAgc2V0RG9uZShJZGVudGlmaWVyKTsKKyAgICAgIGVsc2UgaWYgKGN1cnJl
bnQgPT0gJ1xcJykKKyAgICAgICAgc3RhdGUgPSBJbklkZW50aWZpZXJVbmljb2RlRXNjYXBlU3Rh
cnQ7CisgICAgICBlbHNlCisgICAgICAgIHNldERvbmUoSWRlbnRpZmllcik7CiAgICAgICBicmVh
azsKICAgICBjYXNlIEluTnVtMDoKICAgICAgIGlmIChjdXJyZW50ID09ICd4JyB8fCBjdXJyZW50
ID09ICdYJykgewpAQCAtNDE4LDYgKzQyNSwyMiBAQCBpbnQgTGV4ZXI6OmxleCgpCiAgICAgICB9
IGVsc2UKICAgICAgICAgc2V0RG9uZShOdW1iZXIpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bklkZW50aWZpZXJVbmljb2RlRXNjYXBlU3RhcnQ6CisgICAgICBpZiAoY3VycmVudCA9PSAndScp
CisJc3RhdGUgPSBJbklkZW50aWZpZXJVbmljb2RlRXNjYXBlOworICAgICAgZWxzZQorCXNldERv
bmUoQmFkKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgSW5JZGVudGlmaWVyVW5pY29kZUVzY2Fw
ZToKKyAgICAgIGlmIChpc0hleERpZ2l0KGN1cnJlbnQpICYmIGlzSGV4RGlnaXQobmV4dDEpICYm
IGlzSGV4RGlnaXQobmV4dDIpICYmIGlzSGV4RGlnaXQobmV4dDMpKSB7CisJaWRlbnRpZmllcklz
Tm90VG9rZW4gPSB0cnVlOworCXJlY29yZDE2KGNvbnZlcnRVbmljb2RlKGN1cnJlbnQsIG5leHQx
LCBuZXh0MiwgbmV4dDMpKTsKKwlzaGlmdCgzKTsKKwlzdGF0ZSA9IEluSWRlbnRpZmllcjsKKyAg
ICAgIH0gZWxzZSB7CisJc2V0RG9uZShCYWQpOworICAgICAgfQorICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgIGFzc2VydCghIlVuaGFuZGxlZCBzdGF0ZSBpbiBzd2l0Y2ggc3RhdGVt
ZW50Iik7CiAgICAgfQpAQCAtNDMyLDggKzQ1NSw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgfQog
CiAgIC8vIG5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRl
cmFsLCBlLmcuICIzaW4iIGlzIGJhZAotICBpZiAoKHN0YXRlID09IE51bWJlciB8fCBzdGF0ZSA9
PSBPY3RhbCB8fCBzdGF0ZSA9PSBIZXgpCi0gICAgICAmJiBpc0lkZW50TGV0dGVyKGN1cnJlbnQp
KQorICBpZiAoKHN0YXRlID09IE51bWJlciB8fCBzdGF0ZSA9PSBPY3RhbCB8fCBzdGF0ZSA9PSBI
ZXgpICYmIGlzSWRlbnRTdGFydChjdXJyZW50KSkKICAgICBzdGF0ZSA9IEJhZDsKIAogICAvLyB0
ZXJtaW5hdGUgc3RyaW5nCkBAIC01MDQsNyArNTI2LDcgQEAgaW50IExleGVyOjpsZXgoKQogICAg
IH0KICAgICBicmVhazsKICAgY2FzZSBJZGVudGlmaWVyOgotICAgIGlmICgodG9rZW4gPSBMb29r
dXA6OmZpbmQoJm1haW5UYWJsZSwgYnVmZmVyMTYsIHBvczE2KSkgPCAwKSB7CisgICAgaWYgKGlk
ZW50aWZpZXJJc05vdFRva2VuIHx8ICgodG9rZW4gPSBMb29rdXA6OmZpbmQoJm1haW5UYWJsZSwg
YnVmZmVyMTYsIHBvczE2KSkgPCAwKSkgewogICAgICAgLy8gTG9va3VwIGZvciBrZXl3b3JkIGZh
aWxlZCwgbWVhbnMgdGhpcyBpcyBhbiBpZGVudGlmaWVyCiAgICAgICAvLyBBcHBseSBhbm9ueW1v
dXMtZnVuY3Rpb24gaGFjayBiZWxvdyAoZWF0IHRoZSBpZGVudGlmaWVyKQogICAgICAgaWYgKGVh
dE5leHRJZGVudGlmaWVyKSB7CkBAIC01NDksOCArNTcxLDcgQEAgaW50IExleGVyOjpsZXgoKQog
CiBib29sIExleGVyOjppc1doaXRlU3BhY2UoKSBjb25zdAogewotICByZXR1cm4gKGN1cnJlbnQg
PT0gJyAnIHx8IGN1cnJlbnQgPT0gJ1x0JyB8fAotICAgICAgICAgIGN1cnJlbnQgPT0gMHgwYiB8
fCBjdXJyZW50ID09IDB4MGMgfHwgY3VycmVudCA9PSAweGEwKTsKKyAgcmV0dXJuIChjdXJyZW50
ID09ICdcdCcgfHwgY3VycmVudCA9PSAweDBiIHx8IGN1cnJlbnQgPT0gMHgwYyB8fCB1X2NoYXJU
eXBlKGN1cnJlbnQpID09IFVfU1BBQ0VfU0VQQVJBVE9SKTsKIH0KIAogYm9vbCBMZXhlcjo6aXNM
aW5lVGVybWluYXRvcigpCkBAIC01NjEsMTggKzU4MiwyMCBAQCBib29sIExleGVyOjppc0xpbmVU
ZXJtaW5hdG9yKCkKICAgICAgIHNraXBMRiA9IHRydWU7CiAgIGVsc2UgaWYgKGxmKQogICAgICAg
c2tpcENSID0gdHJ1ZTsKLSAgcmV0dXJuIGNyIHx8IGxmOworICByZXR1cm4gY3IgfHwgbGYgfHwg
Y3VycmVudCA9PSAweDIwMjggfHwgY3VycmVudCA9PSAweDIwMjk7Cit9CisKK2Jvb2wgTGV4ZXI6
OmlzSWRlbnRTdGFydCh1bnNpZ25lZCBzaG9ydCBjKQoreworICByZXR1cm4gKFVfR0VUX0dDX01B
U0soYykgJiAoVV9HQ19MX01BU0sgfCBVX0dDX05MX01BU0spKSB8fCBjID09ICckJyB8fCBjID09
ICdfJzsKIH0KIAotYm9vbCBMZXhlcjo6aXNJZGVudExldHRlcih1bnNpZ25lZCBzaG9ydCBjKQor
Ym9vbCBMZXhlcjo6aXNJZGVudFBhcnQodW5zaWduZWQgc2hvcnQgYykKIHsKLSAgLyogVE9ETzog
YWxsb3cgb3RoZXIgbGVnaXRpbWF0ZSB1bmljb2RlIGNoYXJzICovCi0gIHJldHVybiAoYyA+PSAn
YScgJiYgYyA8PSAneicgfHwKLSAgICAgICAgICBjID49ICdBJyAmJiBjIDw9ICdaJyB8fAotICAg
ICAgICAgIGMgPT0gJyQnIHx8IGMgPT0gJ18nKTsKKyAgcmV0dXJuIChVX0dFVF9HQ19NQVNLKGMp
ICYgKFVfR0NfTF9NQVNLIHwgVV9HQ19OTF9NQVNLIHwgVV9HQ19NTl9NQVNLIHwgVV9HQ19NQ19N
QVNLIHwgVV9HQ19ORF9NQVNLIHwgVV9HQ19QQ19NQVNLKSkgfHwgYyA9PSAnJCcgfHwgYyA9PSAn
Xyc7CiB9CiAKLWJvb2wgTGV4ZXI6OmlzRGVjaW1hbERpZ2l0KHVuc2lnbmVkIHNob3J0IGMpCitz
dGF0aWMgYm9vbCBpc0RlY2ltYWxEaWdpdCh1bnNpZ25lZCBzaG9ydCBjKQogewogICByZXR1cm4g
KGMgPj0gJzAnICYmIGMgPD0gJzknKTsKIH0KQEAgLTc1MSwxMCArNzc0LDEwIEBAIHVuc2lnbmVk
IGNoYXIgTGV4ZXI6OmNvbnZlcnRIZXgodW5zaWduZWQKICAgcmV0dXJuICgoY29udmVydEhleChj
MSkgPDwgNCkgKyBjb252ZXJ0SGV4KGMyKSk7CiB9CiAKLVVDaGFyIExleGVyOjpjb252ZXJ0VW5p
Y29kZSh1bnNpZ25lZCBzaG9ydCBjMSwgdW5zaWduZWQgc2hvcnQgYzIsCitLSlM6OlVDaGFyIExl
eGVyOjpjb252ZXJ0VW5pY29kZSh1bnNpZ25lZCBzaG9ydCBjMSwgdW5zaWduZWQgc2hvcnQgYzIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgYzMs
IHVuc2lnbmVkIHNob3J0IGM0KQogewotICByZXR1cm4gVUNoYXIoKGNvbnZlcnRIZXgoYzEpIDw8
IDQpICsgY29udmVydEhleChjMiksCisgIHJldHVybiBLSlM6OlVDaGFyKChjb252ZXJ0SGV4KGMx
KSA8PCA0KSArIGNvbnZlcnRIZXgoYzIpLAogICAgICAgICAgICAgICAgKGNvbnZlcnRIZXgoYzMp
IDw8IDQpICsgY29udmVydEhleChjNCkpOwogfQogCkBAIC03NzQsMTIgKzc5NywxMiBAQCB2b2lk
IExleGVyOjpyZWNvcmQ4KHVuc2lnbmVkIHNob3J0IGMpCiAgIGJ1ZmZlcjhbcG9zOCsrXSA9IChj
aGFyKSBjOwogfQogCi12b2lkIExleGVyOjpyZWNvcmQxNihVQ2hhciBjKQordm9pZCBMZXhlcjo6
cmVjb3JkMTYoS0pTOjpVQ2hhciBjKQogewogICAvLyBlbmxhcmdlIGJ1ZmZlciBpZiBmdWxsCiAg
IGlmIChwb3MxNiA+PSBzaXplMTYgLSAxKSB7Ci0gICAgVUNoYXIgKnRtcCA9IG5ldyBVQ2hhclsy
ICogc2l6ZTE2XTsKLSAgICBtZW1jcHkodG1wLCBidWZmZXIxNiwgc2l6ZTE2ICogc2l6ZW9mKFVD
aGFyKSk7CisgICAgS0pTOjpVQ2hhciAqdG1wID0gbmV3IEtKUzo6VUNoYXJbMiAqIHNpemUxNl07
CisgICAgbWVtY3B5KHRtcCwgYnVmZmVyMTYsIHNpemUxNiAqIHNpemVvZihLSlM6OlVDaGFyKSk7
CiAgICAgZGVsZXRlIFtdIGJ1ZmZlcjE2OwogICAgIGJ1ZmZlcjE2ID0gdG1wOwogICAgIHNpemUx
NiAqPSAyOwpAQCAtODE5LDcgKzg0Miw3IEBAIGJvb2wgTGV4ZXI6OnNjYW5SZWdFeHAoKQogICAg
IHNoaWZ0KDEpOwogICB9CiAKLSAgd2hpbGUgKGlzSWRlbnRMZXR0ZXIoY3VycmVudCkpIHsKKyAg
d2hpbGUgKGlzSWRlbnRQYXJ0KGN1cnJlbnQpKSB7CiAgICAgcmVjb3JkMTYoY3VycmVudCk7CiAg
ICAgc2hpZnQoMSk7CiAgIH0KQEAgLTg1MSw3ICs4NzQsNyBAQCB2b2lkIExleGVyOjpkb25lUGFy
c2luZygpCiBjb25zdCBpbnQgaW5pdGlhbENhcGFjaXR5ID0gNjQ7CiBjb25zdCBpbnQgZ3Jvd3Ro
RmFjdG9yID0gMjsKIAotSWRlbnRpZmllciAqTGV4ZXI6Om1ha2VJZGVudGlmaWVyKFVDaGFyICpi
dWZmZXIsIHVuc2lnbmVkIGludCBwb3MpCitJZGVudGlmaWVyICpMZXhlcjo6bWFrZUlkZW50aWZp
ZXIoS0pTOjpVQ2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgcG9zKQogewogICBpZiAobnVtSWRl
bnRpZmllcnMgPT0gaWRlbnRpZmllcnNDYXBhY2l0eSkgewogICAgIGlkZW50aWZpZXJzQ2FwYWNp
dHkgPSAoaWRlbnRpZmllcnNDYXBhY2l0eSA9PSAwKSA/IGluaXRpYWxDYXBhY2l0eSA6IGlkZW50
aWZpZXJzQ2FwYWNpdHkgKmdyb3d0aEZhY3RvcjsKQEAgLTg2Myw3ICs4ODYsNyBAQCBJZGVudGlm
aWVyICpMZXhlcjo6bWFrZUlkZW50aWZpZXIoVUNoYXIgCiAgIHJldHVybiBpZGVudGlmaWVyOwog
fQogIAotVVN0cmluZyAqTGV4ZXI6Om1ha2VVU3RyaW5nKFVDaGFyICpidWZmZXIsIHVuc2lnbmVk
IGludCBwb3MpCitVU3RyaW5nICpMZXhlcjo6bWFrZVVTdHJpbmcoS0pTOjpVQ2hhciAqYnVmZmVy
LCB1bnNpZ25lZCBpbnQgcG9zKQogewogICBpZiAobnVtU3RyaW5ncyA9PSBzdHJpbmdzQ2FwYWNp
dHkpIHsKICAgICBzdHJpbmdzQ2FwYWNpdHkgPSAoc3RyaW5nc0NhcGFjaXR5ID09IDApID8gaW5p
dGlhbENhcGFjaXR5IDogc3RyaW5nc0NhcGFjaXR5ICpncm93dGhGYWN0b3I7CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvbGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2
YVNjcmlwdENvcmUva2pzL2xleGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAt
cCAtdSAtcjEuMTAgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmgKLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5oCTE0IEp1bCAyMDA1IDE4OjI3OjAyIC0wMDAwCTEuMTAKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5oCTExIE9jdCAyMDA1IDE0OjQyOjQ3IC0wMDAwCkBAIC00OSw2ICs0
OSw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGVudW0gU3RhdGUgeyBTdGFydCwKICAgICAgICAg
ICAgICAgICAgSWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgSW5JZGVudGlmaWVyLAorICAg
ICAgICAgICAgICAgICBJbklkZW50aWZpZXJVbmljb2RlRXNjYXBlU3RhcnQsCisgICAgICAgICAg
ICAgICAgIEluSWRlbnRpZmllclVuaWNvZGVFc2NhcGUsCiAgICAgICAgICAgICAgICAgIEluU2lu
Z2xlTGluZUNvbW1lbnQsCiAgICAgICAgICAgICAgICAgIEluTXVsdGlMaW5lQ29tbWVudCwKICAg
ICAgICAgICAgICAgICAgSW5OdW0sCkBAIC0xMTIsOCArMTE0LDggQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgY29udmVydEhleCh1bnNpZ25lZCBzaG9ydCBjMSwg
dW5zaWduZWQgc2hvcnQgYzIpOwogICAgIHN0YXRpYyBVQ2hhciBjb252ZXJ0VW5pY29kZSh1bnNp
Z25lZCBzaG9ydCBjMSwgdW5zaWduZWQgc2hvcnQgYzIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGMzLCB1bnNpZ25lZCBzaG9ydCBjNCk7Ci0gICAgc3Rh
dGljIGJvb2wgaXNJZGVudExldHRlcih1bnNpZ25lZCBzaG9ydCBjKTsKLSAgICBzdGF0aWMgYm9v
bCBpc0RlY2ltYWxEaWdpdCh1bnNpZ25lZCBzaG9ydCBjKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lk
ZW50U3RhcnQodW5zaWduZWQgc2hvcnQgYyk7CisgICAgc3RhdGljIGJvb2wgaXNJZGVudFBhcnQo
dW5zaWduZWQgc2hvcnQgYyk7CiAgICAgc3RhdGljIGJvb2wgaXNIZXhEaWdpdCh1bnNpZ25lZCBz
aG9ydCBjKTsKIAogI2lmZGVmIEtKU19ERUJVR19NRU0K
</data>
<flag name="review"
          id="730"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4313</attachid>
            <date>2005-10-11 09:58:57 -0700</date>
            <delta_ts>2005-12-30 13:29:18 -0800</delta_ts>
            <desc>New version of the unicode escape fix patch</desc>
            <filename>jscore-4921-unicode-escape-fix-2.diff</filename>
            <type>text/plain</type>
            <size>9823</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMwpkaWZmIC1wIC11IC1yMS4zMyBKYXZhU2NyaXB0
Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0
aW9uX29iamVjdC5jcHAJMyBPY3QgMjAwNSAyMToxMTo0OCAtMDAwMAkxLjMzCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAkxMSBPY3QgMjAwNSAxNjo1NzoxMSAtMDAw
MApAQCAtMjMyLDExICsyMzIsMTAgQEAgT2JqZWN0SW1wICpGdW5jdGlvbk9iamVjdEltcDo6Y29u
c3RydWN0KAogICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgd2hpbGUgKCpjID09ICcgJyAmJiBp
IDwgbGVuKQogCSAgYysrLCBpKys7Ci0gICAgICBpZiAoTGV4ZXI6OmlzSWRlbnRMZXR0ZXIoYy0+
dWMpKSB7ICAvLyBlbHNlIGVycm9yCisgICAgICBpZiAoTGV4ZXI6OmlzSWRlbnRTdGFydChjLT51
YykpIHsgIC8vIGVsc2UgZXJyb3IKIAkgIHBhcmFtID0gVVN0cmluZyhjLCAxKTsKIAkgIGMrKywg
aSsrOwotCSAgd2hpbGUgKGkgPCBsZW4gJiYgKExleGVyOjppc0lkZW50TGV0dGVyKGMtPnVjKSB8
fAotCQkJICAgICBMZXhlcjo6aXNEZWNpbWFsRGlnaXQoYy0+dWMpKSkgeworCSAgd2hpbGUgKGkg
PCBsZW4gJiYgKExleGVyOjppc0lkZW50UGFydChjLT51YykpKSB7CiAJICAgICAgcGFyYW0gKz0g
VVN0cmluZyhjLCAxKTsKIAkgICAgICBjKyssIGkrKzsKIAkgIH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9sZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjEKZGlmZiAtcCAt
dSAtcjEuMjEgSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL2xleGVyLmNwcAkzIE9jdCAyMDA1IDIxOjExOjQ5IC0wMDAwCTEuMjEKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9sZXhlci5jcHAJMTEgT2N0IDIwMDUgMTY6NTc6MTIgLTAwMDAKQEAgLTM5LDYg
KzM5LDkgQEAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAibG9va3VwLmgiCiAj
aW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CisKK3N0YXRp
YyBib29sIGlzRGVjaW1hbERpZ2l0KHVuc2lnbmVkIHNob3J0IGMpOwogCiAvLyB3ZSBjYW4ndCBz
cGVjaWZ5IHRoZSBuYW1lc3BhY2UgaW4geWFjYydzIEMgb3V0cHV0LCBzbyBkbyBpdCBoZXJlCiB1
c2luZyBuYW1lc3BhY2UgS0pTOwpAQCAtNzMsNyArNzYsNyBAQCBMZXhlcjo6TGV4ZXIoKQogewog
ICAvLyBhbGxvY2F0ZSBzcGFjZSBmb3IgcmVhZCBidWZmZXJzCiAgIGJ1ZmZlcjggPSBuZXcgY2hh
cltzaXplOF07Ci0gIGJ1ZmZlcjE2ID0gbmV3IFVDaGFyW3NpemUxNl07CisgIGJ1ZmZlcjE2ID0g
bmV3IEtKUzo6VUNoYXJbc2l6ZTE2XTsKICAgY3VyckxleGVyID0gdGhpczsKIH0KIApAQCAtMTAx
LDcgKzEwNCw3IEBAIHZvaWQgTGV4ZXI6Omdsb2JhbENsZWFyKCkKIH0KICNlbmRpZgogCi12b2lk
IExleGVyOjpzZXRDb2RlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGlu
ZU51bWJlciwgY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVkIGludCBsZW4pCit2b2lkIExleGVyOjpz
ZXRDb2RlKGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlciwg
Y29uc3QgS0pTOjpVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgeXlsaW5lbm8gPSAx
ICsgc3RhcnRpbmdMaW5lTnVtYmVyOwogICBtX3NvdXJjZVVSTCA9IHNvdXJjZVVSTDsKQEAgLTE5
Niw3ICsxOTksNyBAQCBpbnQgTGV4ZXI6OmxleCgpCiAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQg
PT0gMCkgewogICAgICAgICBpZiAoIXRlcm1pbmF0b3IgJiYgIWRlbGltaXRlZCkgewogICAgICAg
ICAgIC8vIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uIGlmIHByb2dyYW0gaW5jb21wbGV0
ZQotICAgICAgICAgIHRva2VuID0gJzsnOworICAgICAgICAgIHRva2VuID0gJzsnOwkKICAgICAg
ICAgICBzdGFja1Rva2VuID0gMDsKICAgICAgICAgICBzZXREb25lKE90aGVyKTsKICAgICAgICAg
fSBlbHNlCkBAIC0yMTEsOSArMjE0LDExIEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgIH0gZWxz
ZSBpZiAoY3VycmVudCA9PSAnIicgfHwgY3VycmVudCA9PSAnXCcnKSB7CiAgICAgICAgIHN0YXRl
ID0gSW5TdHJpbmc7CiAgICAgICAgIHN0cmluZ1R5cGUgPSBjdXJyZW50OwotICAgICAgfSBlbHNl
IGlmIChpc0lkZW50TGV0dGVyKGN1cnJlbnQpKSB7CisgICAgICB9IGVsc2UgaWYgKGlzSWRlbnRT
dGFydChjdXJyZW50KSkgewogICAgICAgICByZWNvcmQxNihjdXJyZW50KTsKLSAgICAgICAgc3Rh
dGUgPSBJbklkZW50aWZpZXI7CisgICAgICAgIHN0YXRlID0gSW5JZGVudGlmaWVyT3JLZXl3b3Jk
OworICAgICAgfSBlbHNlIGlmIChjdXJyZW50ID09ICdcXCcpIHsKKwlzdGF0ZSA9IEluSWRlbnRp
ZmllclVuaWNvZGVFc2NhcGVTdGFydDsKICAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PSAnMCcp
IHsKICAgICAgICAgcmVjb3JkOChjdXJyZW50KTsKICAgICAgICAgc3RhdGUgPSBJbk51bTA7CkBA
IC0yOTgsMTUgKzMwMywxNCBAQCBpbnQgTGV4ZXI6OmxleCgpCiAgICAgICB9IGVsc2UgewogICAg
ICAgICByZWNvcmQxNigneCcpOwogICAgICAgICByZWNvcmQxNihjdXJyZW50KTsKLSAgICAgICAg
c3RhdGUgPSBJblN0cmluZzsKKwlzdGF0ZSA9IEluU3RyaW5nOwogICAgICAgfQogICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJblVuaWNvZGVFc2NhcGU6Ci0gICAgICBpZiAoaXNIZXhEaWdpdChjdXJy
ZW50KSAmJiBpc0hleERpZ2l0KG5leHQxKSAmJgotICAgICAgICAgIGlzSGV4RGlnaXQobmV4dDIp
ICYmIGlzSGV4RGlnaXQobmV4dDMpKSB7CisgICAgICBpZiAoaXNIZXhEaWdpdChjdXJyZW50KSAm
JiBpc0hleERpZ2l0KG5leHQxKSAmJiBpc0hleERpZ2l0KG5leHQyKSAmJiBpc0hleERpZ2l0KG5l
eHQzKSkgewogICAgICAgICByZWNvcmQxNihjb252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0MSwg
bmV4dDIsIG5leHQzKSk7CiAgICAgICAgIHNoaWZ0KDMpOwotICAgICAgICBzdGF0ZSA9IEluU3Ry
aW5nOworCXN0YXRlID0gSW5TdHJpbmc7CiAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQgPT0gc3Ry
aW5nVHlwZSkgewogICAgICAgICByZWNvcmQxNigndScpOwogICAgICAgICBzaGlmdCgxKTsKQEAg
LTMzOCwxMiArMzQyLDE0IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgICAgc2hpZnQoMSk7CiAg
ICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlIEluSWRlbnRpZmllck9yS2V5d29yZDoKICAg
ICBjYXNlIEluSWRlbnRpZmllcjoKLSAgICAgIGlmIChpc0lkZW50TGV0dGVyKGN1cnJlbnQpIHx8
IGlzRGVjaW1hbERpZ2l0KGN1cnJlbnQpKSB7CisgICAgICBpZiAoaXNJZGVudFBhcnQoY3VycmVu
dCkpCiAgICAgICAgIHJlY29yZDE2KGN1cnJlbnQpOwotICAgICAgICBicmVhazsKLSAgICAgIH0K
LSAgICAgIHNldERvbmUoSWRlbnRpZmllcik7CisgICAgICBlbHNlIGlmIChjdXJyZW50ID09ICdc
XCcpCisgICAgICAgIHN0YXRlID0gSW5JZGVudGlmaWVyVW5pY29kZUVzY2FwZVN0YXJ0OworICAg
ICAgZWxzZQorCXNldERvbmUoc3RhdGUgPT0gSW5JZGVudGlmaWVyT3JLZXl3b3JkID8gSWRlbnRp
Zmllck9yS2V5d29yZCA6IElkZW50aWZpZXIpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbk51
bTA6CiAgICAgICBpZiAoY3VycmVudCA9PSAneCcgfHwgY3VycmVudCA9PSAnWCcpIHsKQEAgLTQx
OCw2ICs0MjQsMjEgQEAgaW50IExleGVyOjpsZXgoKQogICAgICAgfSBlbHNlCiAgICAgICAgIHNl
dERvbmUoTnVtYmVyKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5JZGVudGlmaWVyVW5pY29k
ZUVzY2FwZVN0YXJ0OgorICAgICAgaWYgKGN1cnJlbnQgPT0gJ3UnKQorCXN0YXRlID0gSW5JZGVu
dGlmaWVyVW5pY29kZUVzY2FwZTsKKyAgICAgIGVsc2UKKwlzZXREb25lKEJhZCk7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIEluSWRlbnRpZmllclVuaWNvZGVFc2NhcGU6CisgICAgICBpZiAoaXNI
ZXhEaWdpdChjdXJyZW50KSAmJiBpc0hleERpZ2l0KG5leHQxKSAmJiBpc0hleERpZ2l0KG5leHQy
KSAmJiBpc0hleERpZ2l0KG5leHQzKSkgeworCXJlY29yZDE2KGNvbnZlcnRVbmljb2RlKGN1cnJl
bnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpKTsKKwlzaGlmdCgzKTsKKwlzdGF0ZSA9IEluSWRlbnRp
ZmllcjsKKyAgICAgIH0gZWxzZSB7CisJc2V0RG9uZShCYWQpOworICAgICAgfQorICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGFzc2VydCghIlVuaGFuZGxlZCBzdGF0ZSBpbiBzd2l0
Y2ggc3RhdGVtZW50Iik7CiAgICAgfQpAQCAtNDMyLDggKzQ1Myw3IEBAIGludCBMZXhlcjo6bGV4
KCkKICAgfQogCiAgIC8vIG5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVt
ZXJpYyBsaXRlcmFsLCBlLmcuICIzaW4iIGlzIGJhZAotICBpZiAoKHN0YXRlID09IE51bWJlciB8
fCBzdGF0ZSA9PSBPY3RhbCB8fCBzdGF0ZSA9PSBIZXgpCi0gICAgICAmJiBpc0lkZW50TGV0dGVy
KGN1cnJlbnQpKQorICBpZiAoKHN0YXRlID09IE51bWJlciB8fCBzdGF0ZSA9PSBPY3RhbCB8fCBz
dGF0ZSA9PSBIZXgpICYmIGlzSWRlbnRTdGFydChjdXJyZW50KSkKICAgICBzdGF0ZSA9IEJhZDsK
IAogICAvLyB0ZXJtaW5hdGUgc3RyaW5nCkBAIC01MDMsOCArNTIzLDkgQEAgaW50IExleGVyOjps
ZXgoKQogICAgICAgZGVsaW1pdGVkID0gdHJ1ZTsKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2Ug
SWRlbnRpZmllcjoKKyAgY2FzZSBJZGVudGlmaWVyT3JLZXl3b3JkOgogICAgIGlmICgodG9rZW4g
PSBMb29rdXA6OmZpbmQoJm1haW5UYWJsZSwgYnVmZmVyMTYsIHBvczE2KSkgPCAwKSB7CisgIGNh
c2UgSWRlbnRpZmllcjoKICAgICAgIC8vIExvb2t1cCBmb3Iga2V5d29yZCBmYWlsZWQsIG1lYW5z
IHRoaXMgaXMgYW4gaWRlbnRpZmllcgogICAgICAgLy8gQXBwbHkgYW5vbnltb3VzLWZ1bmN0aW9u
IGhhY2sgYmVsb3cgKGVhdCB0aGUgaWRlbnRpZmllcikKICAgICAgIGlmIChlYXROZXh0SWRlbnRp
ZmllcikgewpAQCAtNTQ5LDggKzU3MCw3IEBAIGludCBMZXhlcjo6bGV4KCkKIAogYm9vbCBMZXhl
cjo6aXNXaGl0ZVNwYWNlKCkgY29uc3QKIHsKLSAgcmV0dXJuIChjdXJyZW50ID09ICcgJyB8fCBj
dXJyZW50ID09ICdcdCcgfHwKLSAgICAgICAgICBjdXJyZW50ID09IDB4MGIgfHwgY3VycmVudCA9
PSAweDBjIHx8IGN1cnJlbnQgPT0gMHhhMCk7CisgIHJldHVybiAoY3VycmVudCA9PSAnXHQnIHx8
IGN1cnJlbnQgPT0gMHgwYiB8fCBjdXJyZW50ID09IDB4MGMgfHwgdV9jaGFyVHlwZShjdXJyZW50
KSA9PSBVX1NQQUNFX1NFUEFSQVRPUik7CiB9CiAKIGJvb2wgTGV4ZXI6OmlzTGluZVRlcm1pbmF0
b3IoKQpAQCAtNTYxLDE4ICs1ODEsMjAgQEAgYm9vbCBMZXhlcjo6aXNMaW5lVGVybWluYXRvcigp
CiAgICAgICBza2lwTEYgPSB0cnVlOwogICBlbHNlIGlmIChsZikKICAgICAgIHNraXBDUiA9IHRy
dWU7Ci0gIHJldHVybiBjciB8fCBsZjsKKyAgcmV0dXJuIGNyIHx8IGxmIHx8IGN1cnJlbnQgPT0g
MHgyMDI4IHx8IGN1cnJlbnQgPT0gMHgyMDI5OworfQorCitib29sIExleGVyOjppc0lkZW50U3Rh
cnQodW5zaWduZWQgc2hvcnQgYykKK3sKKyAgcmV0dXJuIChVX0dFVF9HQ19NQVNLKGMpICYgKFVf
R0NfTF9NQVNLIHwgVV9HQ19OTF9NQVNLKSkgfHwgYyA9PSAnJCcgfHwgYyA9PSAnXyc7CiB9CiAK
LWJvb2wgTGV4ZXI6OmlzSWRlbnRMZXR0ZXIodW5zaWduZWQgc2hvcnQgYykKK2Jvb2wgTGV4ZXI6
OmlzSWRlbnRQYXJ0KHVuc2lnbmVkIHNob3J0IGMpCiB7Ci0gIC8qIFRPRE86IGFsbG93IG90aGVy
IGxlZ2l0aW1hdGUgdW5pY29kZSBjaGFycyAqLwotICByZXR1cm4gKGMgPj0gJ2EnICYmIGMgPD0g
J3onIHx8Ci0gICAgICAgICAgYyA+PSAnQScgJiYgYyA8PSAnWicgfHwKLSAgICAgICAgICBjID09
ICckJyB8fCBjID09ICdfJyk7CisgIHJldHVybiAoVV9HRVRfR0NfTUFTSyhjKSAmIChVX0dDX0xf
TUFTSyB8IFVfR0NfTkxfTUFTSyB8IFVfR0NfTU5fTUFTSyB8IFVfR0NfTUNfTUFTSyB8IFVfR0Nf
TkRfTUFTSyB8IFVfR0NfUENfTUFTSykpIHx8IGMgPT0gJyQnIHx8IGMgPT0gJ18nOwogfQogCi1i
b29sIExleGVyOjppc0RlY2ltYWxEaWdpdCh1bnNpZ25lZCBzaG9ydCBjKQorc3RhdGljIGJvb2wg
aXNEZWNpbWFsRGlnaXQodW5zaWduZWQgc2hvcnQgYykKIHsKICAgcmV0dXJuIChjID49ICcwJyAm
JiBjIDw9ICc5Jyk7CiB9CkBAIC03NTEsMTAgKzc3MywxMCBAQCB1bnNpZ25lZCBjaGFyIExleGVy
Ojpjb252ZXJ0SGV4KHVuc2lnbmVkCiAgIHJldHVybiAoKGNvbnZlcnRIZXgoYzEpIDw8IDQpICsg
Y29udmVydEhleChjMikpOwogfQogCi1VQ2hhciBMZXhlcjo6Y29udmVydFVuaWNvZGUodW5zaWdu
ZWQgc2hvcnQgYzEsIHVuc2lnbmVkIHNob3J0IGMyLAorS0pTOjpVQ2hhciBMZXhlcjo6Y29udmVy
dFVuaWNvZGUodW5zaWduZWQgc2hvcnQgYzEsIHVuc2lnbmVkIHNob3J0IGMyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGMzLCB1bnNpZ25lZCBz
aG9ydCBjNCkKIHsKLSAgcmV0dXJuIFVDaGFyKChjb252ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZl
cnRIZXgoYzIpLAorICByZXR1cm4gS0pTOjpVQ2hhcigoY29udmVydEhleChjMSkgPDwgNCkgKyBj
b252ZXJ0SGV4KGMyKSwKICAgICAgICAgICAgICAgIChjb252ZXJ0SGV4KGMzKSA8PCA0KSArIGNv
bnZlcnRIZXgoYzQpKTsKIH0KIApAQCAtNzc0LDEyICs3OTYsMTIgQEAgdm9pZCBMZXhlcjo6cmVj
b3JkOCh1bnNpZ25lZCBzaG9ydCBjKQogICBidWZmZXI4W3BvczgrK10gPSAoY2hhcikgYzsKIH0K
IAotdm9pZCBMZXhlcjo6cmVjb3JkMTYoVUNoYXIgYykKK3ZvaWQgTGV4ZXI6OnJlY29yZDE2KEtK
Uzo6VUNoYXIgYykKIHsKICAgLy8gZW5sYXJnZSBidWZmZXIgaWYgZnVsbAogICBpZiAocG9zMTYg
Pj0gc2l6ZTE2IC0gMSkgewotICAgIFVDaGFyICp0bXAgPSBuZXcgVUNoYXJbMiAqIHNpemUxNl07
Ci0gICAgbWVtY3B5KHRtcCwgYnVmZmVyMTYsIHNpemUxNiAqIHNpemVvZihVQ2hhcikpOworICAg
IEtKUzo6VUNoYXIgKnRtcCA9IG5ldyBLSlM6OlVDaGFyWzIgKiBzaXplMTZdOworICAgIG1lbWNw
eSh0bXAsIGJ1ZmZlcjE2LCBzaXplMTYgKiBzaXplb2YoS0pTOjpVQ2hhcikpOwogICAgIGRlbGV0
ZSBbXSBidWZmZXIxNjsKICAgICBidWZmZXIxNiA9IHRtcDsKICAgICBzaXplMTYgKj0gMjsKQEAg
LTgxOSw3ICs4NDEsNyBAQCBib29sIExleGVyOjpzY2FuUmVnRXhwKCkKICAgICBzaGlmdCgxKTsK
ICAgfQogCi0gIHdoaWxlIChpc0lkZW50TGV0dGVyKGN1cnJlbnQpKSB7CisgIHdoaWxlIChpc0lk
ZW50UGFydChjdXJyZW50KSkgewogICAgIHJlY29yZDE2KGN1cnJlbnQpOwogICAgIHNoaWZ0KDEp
OwogICB9CkBAIC04NTEsNyArODczLDcgQEAgdm9pZCBMZXhlcjo6ZG9uZVBhcnNpbmcoKQogY29u
c3QgaW50IGluaXRpYWxDYXBhY2l0eSA9IDY0OwogY29uc3QgaW50IGdyb3d0aEZhY3RvciA9IDI7
CiAKLUlkZW50aWZpZXIgKkxleGVyOjptYWtlSWRlbnRpZmllcihVQ2hhciAqYnVmZmVyLCB1bnNp
Z25lZCBpbnQgcG9zKQorSWRlbnRpZmllciAqTGV4ZXI6Om1ha2VJZGVudGlmaWVyKEtKUzo6VUNo
YXIgKmJ1ZmZlciwgdW5zaWduZWQgaW50IHBvcykKIHsKICAgaWYgKG51bUlkZW50aWZpZXJzID09
IGlkZW50aWZpZXJzQ2FwYWNpdHkpIHsKICAgICBpZGVudGlmaWVyc0NhcGFjaXR5ID0gKGlkZW50
aWZpZXJzQ2FwYWNpdHkgPT0gMCkgPyBpbml0aWFsQ2FwYWNpdHkgOiBpZGVudGlmaWVyc0NhcGFj
aXR5ICpncm93dGhGYWN0b3I7CkBAIC04NjMsNyArODg1LDcgQEAgSWRlbnRpZmllciAqTGV4ZXI6
Om1ha2VJZGVudGlmaWVyKFVDaGFyIAogICByZXR1cm4gaWRlbnRpZmllcjsKIH0KICAKLVVTdHJp
bmcgKkxleGVyOjptYWtlVVN0cmluZyhVQ2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgcG9zKQor
VVN0cmluZyAqTGV4ZXI6Om1ha2VVU3RyaW5nKEtKUzo6VUNoYXIgKmJ1ZmZlciwgdW5zaWduZWQg
aW50IHBvcykKIHsKICAgaWYgKG51bVN0cmluZ3MgPT0gc3RyaW5nc0NhcGFjaXR5KSB7CiAgICAg
c3RyaW5nc0NhcGFjaXR5ID0gKHN0cmluZ3NDYXBhY2l0eSA9PSAwKSA/IGluaXRpYWxDYXBhY2l0
eSA6IHN0cmluZ3NDYXBhY2l0eSAqZ3Jvd3RoRmFjdG9yOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3Jl
L2tqcy9sZXhlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXAgLXUgLXIxLjEw
IEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCi0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIu
aAkxNCBKdWwgMjAwNSAxODoyNzowMiAtMDAwMAkxLjEwCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
bGV4ZXIuaAkxMSBPY3QgMjAwNSAxNjo1NzoxMiAtMDAwMApAQCAtNDcsOCArNDcsMTIgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgYm9vbCBwcmV2VGVybWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRl
cm1pbmF0b3I7IH0KIAogICAgIGVudW0gU3RhdGUgeyBTdGFydCwKKwkJIElkZW50aWZpZXJPcktl
eXdvcmQsCiAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIsCisJCSBJbklkZW50aWZpZXJPcktl
eXdvcmQsCiAgICAgICAgICAgICAgICAgIEluSWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAg
SW5JZGVudGlmaWVyVW5pY29kZUVzY2FwZVN0YXJ0LAorICAgICAgICAgICAgICAgICBJbklkZW50
aWZpZXJVbmljb2RlRXNjYXBlLAogICAgICAgICAgICAgICAgICBJblNpbmdsZUxpbmVDb21tZW50
LAogICAgICAgICAgICAgICAgICBJbk11bHRpTGluZUNvbW1lbnQsCiAgICAgICAgICAgICAgICAg
IEluTnVtLApAQCAtMTEyLDggKzExNiw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyB1
bnNpZ25lZCBjaGFyIGNvbnZlcnRIZXgodW5zaWduZWQgc2hvcnQgYzEsIHVuc2lnbmVkIHNob3J0
IGMyKTsKICAgICBzdGF0aWMgVUNoYXIgY29udmVydFVuaWNvZGUodW5zaWduZWQgc2hvcnQgYzEs
IHVuc2lnbmVkIHNob3J0IGMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCBjMywgdW5zaWduZWQgc2hvcnQgYzQpOwotICAgIHN0YXRpYyBib29sIGlzSWRl
bnRMZXR0ZXIodW5zaWduZWQgc2hvcnQgYyk7Ci0gICAgc3RhdGljIGJvb2wgaXNEZWNpbWFsRGln
aXQodW5zaWduZWQgc2hvcnQgYyk7CisgICAgc3RhdGljIGJvb2wgaXNJZGVudFN0YXJ0KHVuc2ln
bmVkIHNob3J0IGMpOworICAgIHN0YXRpYyBib29sIGlzSWRlbnRQYXJ0KHVuc2lnbmVkIHNob3J0
IGMpOwogICAgIHN0YXRpYyBib29sIGlzSGV4RGlnaXQodW5zaWduZWQgc2hvcnQgYyk7CiAKICNp
ZmRlZiBLSlNfREVCVUdfTUVNCg==
</data>
<flag name="review"
          id="1148"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4314</attachid>
            <date>2005-10-11 10:09:56 -0700</date>
            <delta_ts>2005-10-11 10:09:56 -0700</delta_ts>
            <desc>Testcase to demonstrate keyword clash with unicode escape sequences</desc>
            <filename>jscore-4921-testcase-2.html</filename>
            <type>text/html</type>
            <size>701</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+Cjx0aXRsZT5cdSBzZXF1ZW5jZXMgaW4gaWRlbnRp
ZmllcnMsIGVzY2FwZWQgdG8gYXZvaWQga2V5d29yZCBjbGFzaGVzPC90aXRsZT4KCjxzY3JpcHQ+
CmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpCnsKdmFyIGRlXHUwMDY2YXVsdCA9IDI1OwoKLy8gT0ss
IHBhcnNlZCB0byBoZXJlIHN1Y2Nlc3NmdWxseS4uLgpkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnZGl2JylbMF0uZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSAiIjsKaWYgKHR5cGVvZiBkZVx1
MDA2NmF1bHQgPT0gJ251bWJlcicpCmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYn
KVswXS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9ICJTdWNjZXNzIjsKZWxzZQpkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0uZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSAiRmFpbHVy
ZSI7Cn0KPC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgo8
ZGl2PlBhcnNlIEZhaWx1cmU8L2Rpdj4KPHNjcmlwdD4KaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewpsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cn0KPC9zY3JpcHQ+
CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>