<?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>32012</bug_id>
          
          <creation_ts>2009-12-01 00:52:59 -0800</creation_ts>
          <short_desc>JavaScript delete operator returns true for string properties</short_desc>
          <delta_ts>2009-12-04 17:21:58 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Hansen">kent.hansen</reporter>
          <assigned_to name="Kent Hansen">kent.hansen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>hausmann</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>167542</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-01 00:52:59 -0800</bug_when>
    <thetext>According to the ECMAScript 5 specification section 15.5.5.2, string properties whose names are valid string indices are not configurable, hence the delete operator should return false when applied to such a property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167550</commentid>
    <comment_count>1</comment_count>
      <attachid>44062</attachid>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-01 02:57:46 -0800</bug_when>
    <thetext>Created attachment 44062
Proposed patch and test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167551</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-01 03:00:07 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44062 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167683</commentid>
    <comment_count>3</comment_count>
      <attachid>44062</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-01 11:26:49 -0800</bug_when>
    <thetext>Comment on attachment 44062
Proposed patch and test

Thanks for tackling this! This is almost right, but not quite.

&gt; +    bool isStrictUInt32;
&gt; +    unsigned i = propertyName.toStrictUInt32(&amp;isStrictUInt32);
&gt; +    if (isStrictUInt32 &amp;&amp; internalValue()-&gt;canGetIndex(i))
&gt; +        return false;

This code needs to use toArrayIndex rather than toStrictUInt32. These functions differ in how they handle the value 4294967295. And you should make sure there is a test case for that particular number and other numbers just higher and lower than that.

review-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168033</commentid>
    <comment_count>4</comment_count>
      <attachid>44159</attachid>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-02 09:43:38 -0800</bug_when>
    <thetext>Created attachment 44159
Revised patch with more test cases and using toArrayIndex() when converting identifier to string index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168036</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-02 09:48:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 44062 [details])
&gt; Thanks for tackling this! This is almost right, but not quite.
&gt; 
&gt; &gt; +    bool isStrictUInt32;
&gt; &gt; +    unsigned i = propertyName.toStrictUInt32(&amp;isStrictUInt32);
&gt; &gt; +    if (isStrictUInt32 &amp;&amp; internalValue()-&gt;canGetIndex(i))
&gt; &gt; +        return false;
&gt; 
&gt; This code needs to use toArrayIndex rather than toStrictUInt32. These functions
&gt; differ in how they handle the value 4294967295. And you should make sure there
&gt; is a test case for that particular number and other numbers just higher and
&gt; lower than that.
&gt; 
&gt; review-

Hi Darin, thanks!
I was using the same approach as used elsewhere in JSString to calculate the index. I&apos;ve revised the patch and refactored the code to always use the same conversion method (in getOwnPropertyDescriptor() and getOwnPropertySlot()) too).
Let me know if you think it&apos;s worth it to do the refactoring in a separate commit and then add the deleteProperty()-specific stuff after that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168037</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 09:48:55 -0800</bug_when>
    <thetext>Attachment 44159 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/runtime/JSString.h:173:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168040</commentid>
    <comment_count>7</comment_count>
      <attachid>44159</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-02 09:59:17 -0800</bug_when>
    <thetext>Comment on attachment 44159
Revised patch with more test cases and using toArrayIndex() when converting identifier to string index

&gt; +        unsigned toIndex(const Identifier&amp; propertyName, bool *ok);

WebKit coding style requires putting the &quot;*&quot; next to the &quot;bool&quot;, not the &quot;ok&quot;.

&gt; +    inline unsigned JSString::toIndex(const Identifier&amp; propertyName, bool *ok)
&gt; +    {
&gt; +        unsigned i = propertyName.toArrayIndex(ok);
&gt; +        *ok = *ok &amp;&amp; canGetIndex(i);
&gt; +        return i;
&gt; +    }

I think it&apos;s slightly strange to include the canGetIndex call inside a function named toIndex. That&apos;s inconsistent with other functions named toIndex, and so perhaps the function should have a different name. But since I don&apos;t have another to suggest, we can probably live with this. I would probably call the output variable something more like isIndex rather than ok given the slightly broader purpose of the function.

&gt; +    (void)internalValue()-&gt;toIndex(propertyName, &amp;isIndex);

WebKit code does not use this style, with explicit casts to (void) when ignoring function results.

&gt; +description(&quot;This page tests deletion of properties on a string object.&quot;);
&gt; +
&gt; +var str = &quot;abc&quot;;
&gt; +shouldBe(&apos;str.length&apos;, &apos;3&apos;);
&gt; +shouldBe(&apos;delete str.length&apos;, &apos;false&apos;);
&gt; +shouldBe(&apos;delete str[0]&apos;, &apos;false&apos;);
&gt; +shouldBe(&apos;delete str[1]&apos;, &apos;false&apos;);
&gt; +shouldBe(&apos;delete str[2]&apos;, &apos;false&apos;);
&gt; +shouldBe(&apos;delete str[3]&apos;, &apos;true&apos;);
&gt; +shouldBe(&apos;delete str[-1]&apos;, &apos;true&apos;);
&gt; +shouldBe(&apos;delete str[4294967294]&apos;, &apos;true&apos;);
&gt; +shouldBe(&apos;delete str[4294967295]&apos;, &apos;true&apos;);
&gt; +shouldBe(&apos;delete str.foo&apos;, &apos;true&apos;);

Looking at the test and test results I now realize that there is no detectable behavior change from what I asked you to do in the last patch, since indices that are beyond of the length of the string are treated no differently from identifiers that are not valid indices. Thus the special value that is a UInt32 but not a valid index doesn&apos;t actually need special handling. That means that using toStrictUInt32 was already acceptable and even slightly more efficient. Using toIndex, while more logical, adds an unnecessary additional check for that special value.

Ideally I would like to see a test that includes 4294967296 as well, and also test cases for floating pointer numbers such as &quot;0.0&quot; and &quot;0.1&quot; to make sure that &quot;0.0&quot; correctly deletes the zero element and &quot;0.1&quot; correctly does not.

I think the patch is fine as is, but I&apos;m going to say review- because of the two minor style issues that check-webkit-style will no doubt catch as well. You could also consider my comments. Sorry for giving you conflicting advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168331</commentid>
    <comment_count>8</comment_count>
      <attachid>44220</attachid>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-03 02:22:49 -0800</bug_when>
    <thetext>Created attachment 44220
Revised patch (back to basics) and more test cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168333</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 02:25:48 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44220 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168337</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-03 02:34:54 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Looking at the test and test results I now realize that there is no detectable
&gt; behavior change from what I asked you to do in the last patch, since indices
&gt; that are beyond of the length of the string are treated no differently from
&gt; identifiers that are not valid indices. Thus the special value that is a UInt32
&gt; but not a valid index doesn&apos;t actually need special handling. That means that
&gt; using toStrictUInt32 was already acceptable and even slightly more efficient.
&gt; Using toIndex, while more logical, adds an unnecessary additional check for
&gt; that special value.

Right. Looking at the ECMA algorithm, using toStrictUInt32 should be sufficient; there isn&apos;t any side-effects even if we incorrectly fall through the initial &quot;is array index&quot; test when the input is 4294967295 since, as you noted, the subsequent bounds check will catch it.

I&apos;ve reverted back to the initial patch. It irks me a bit that the &quot;isStrictUInt32 and index is in range&quot; check is done in three places now, but I&apos;ll leave any attempts at refactoring out of this patch. (By the way, the style checker only reported &quot;code inside namespace should not be indented&quot;, which I disregarded since the rest of the functions in JSString.h are indented.)

&gt; 
&gt; Ideally I would like to see a test that includes 4294967296 as well, and also
&gt; test cases for floating pointer numbers such as &quot;0.0&quot; and &quot;0.1&quot; to make sure
&gt; that &quot;0.0&quot; correctly deletes the zero element and &quot;0.1&quot; correctly does not.

I&apos;ve added these, and also a test for &apos;0.0&apos; (to make sure it&apos;s not treated as an array index).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168338</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2009-12-03 02:42:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;ve reverted back to the initial patch. It irks me a bit that the
&gt; &quot;isStrictUInt32 and index is in range&quot; check is done in three places now, but
&gt; I&apos;ll leave any attempts at refactoring out of this patch. (By the way, the
&gt; style checker only reported &quot;code inside namespace should not be indented&quot;,
&gt; which I disregarded since the rest of the functions in JSString.h are
&gt; indented.)

Actually, I created a patch where deleteProperty() calls getOwnPropertyDescriptor(), and checks the configurable() attribute of that one. That&apos;s how the ECMA spec says the delete operator should behave, so e.g. if I implemented my own custom JSobject type I would expect that virtual method to be called. It also gets rid of code duplication. But then I realised there&apos;s a bit more overhead in calling that function (JSString::getStringPropertyDescriptor() creates a jsSingleCharacterSubstring), so I decided against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168954</commentid>
    <comment_count>12</comment_count>
      <attachid>44220</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-04 15:25:11 -0800</bug_when>
    <thetext>Comment on attachment 44220
Revised patch (back to basics) and more test cases

Kent is not a committer yet. I&apos;m pretty sure he meant to set cq :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168993</commentid>
    <comment_count>13</comment_count>
      <attachid>44220</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 17:21:53 -0800</bug_when>
    <thetext>Comment on attachment 44220
Revised patch (back to basics) and more test cases

Clearing flags on attachment: 44220

Committed r51724: &lt;http://trac.webkit.org/changeset/51724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168994</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 17:21:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44062</attachid>
            <date>2009-12-01 02:57:46 -0800</date>
            <delta_ts>2009-12-02 09:43:38 -0800</delta_ts>
            <desc>Proposed patch and test</desc>
            <filename>stringPropertyDeletion.diff</filename>
            <type>text/plain</type>
            <size>3823</size>
            <attacher name="Kent Hansen">kent.hansen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiYWYyNWVkLi5mYzAzZGY3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMDktMTItMDEgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEphdmFTY3JpcHQg
ZGVsZXRlIG9wZXJhdG9yIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIHN0cmluZyBwcm9wZXJ0aWVz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMTIK
KworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisKIDIwMDktMTEtMzAgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgQnVpbGQgZml4
LiAgUmV2aWV3ZWQgYnkgTk9CT0RZLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCmluZGV4IDcyMTZkM2EuLjdkYzRlMjUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKQEAgLTc5LDYgKzc5LDEwIEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtCiB7
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKKyAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLnRvU3RyaWN0VUludDMyKCZpc1N0cmljdFVJbnQzMik7Cisg
ICAgaWYgKGlzU3RyaWN0VUludDMyICYmIGludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNzg0ODY4Li5mZWYxN2RlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTItMDEgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0IGZvciBKYXZhU2NyaXB0IHN0cmluZyBwcm9wZXJ0eSBkZWxldGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDEyCisK
KyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvcGVydHktZGVsZXRpb24u
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVs
ZXRpb24uaHRtbDogQWRkZWQuCisKIDIwMDktMTEtMzAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0eS1kZWxl
dGlvbi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0
eS1kZWxldGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTQ2NjUz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3Ry
aW5nLXByb3BlcnR5LWRlbGV0aW9uLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Rlc2NyaXB0aW9uKCJU
aGlzIHBhZ2UgdGVzdHMgZGVsZXRpb24gb2YgcHJvcGVydGllcyBvbiBhIHN0cmluZyBvYmplY3Qu
Iik7CisKK3ZhciBzdHIgPSAiYWJjIjsKK3Nob3VsZEJlKCdzdHIubGVuZ3RoJywgJzMnKTsKK3No
b3VsZEJlKCdkZWxldGUgc3RyWzBdJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0clsx
XScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJbMl0nLCAnZmFsc2UnKTsKK3Nob3Vs
ZEJlKCdkZWxldGUgc3RyWzNdJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdkZWxldGUgc3RyWy0xXScs
ICd0cnVlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0ci5mb28nLCAndHJ1ZScpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMv
c3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
anMvc3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xY2I2MGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTYgQEAKK1RoaXMgcGFnZSB0ZXN0cyBkZWxldGlvbiBvZiBwcm9wZXJ0aWVzIG9uIGEgc3Ry
aW5nIG9iamVjdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3RyLmxl
bmd0aCBpcyAzCitQQVNTIGRlbGV0ZSBzdHJbMF0gaXMgZmFsc2UKK1BBU1MgZGVsZXRlIHN0clsx
XSBpcyBmYWxzZQorUEFTUyBkZWxldGUgc3RyWzJdIGlzIGZhbHNlCitQQVNTIGRlbGV0ZSBzdHJb
M10gaXMgdHJ1ZQorUEFTUyBkZWxldGUgc3RyWy0xXSBpcyB0cnVlCitQQVNTIGRlbGV0ZSBzdHIu
Zm9vIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1k
ZWxldGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTdkMzVjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRp
b24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="25838"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44159</attachid>
            <date>2009-12-02 09:43:38 -0800</date>
            <delta_ts>2009-12-03 02:22:49 -0800</delta_ts>
            <desc>Revised patch with more test cases and using toArrayIndex() when converting identifier to string index</desc>
            <filename>stringPropertyDeletion2.diff</filename>
            <type>text/plain</type>
            <size>6531</size>
            <attacher name="Kent Hansen">kent.hansen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNmE4NmYxLi5hN2E1NTk0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMDktMTItMDIgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEphdmFTY3JpcHQg
ZGVsZXRlIG9wZXJhdG9yIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIHN0cmluZyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjAxMgor
CisgICAgICAgIFJlZmFjdG9yZWQgaWRlbnRpZmllci10by1zdHJpbmctaW5kZXggY29udmVyc2lv
biBzbyB0b0FycmF5SW5kZXgoKSBpcyBhbHdheXMgdXNlZC4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6
OkpTU3RyaW5nOjp0b0luZGV4KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmdldFN0cmluZ1By
b3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKwogMjAwOS0xMi0wMSAgSmVu
cyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAyMGJhODY4Li4zN2Ux
YWIxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtMTEwLDkgKzExMCw5IEBA
IGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICAKLSAgICBib29sIGlzU3RyaWN0VUludDMyOwotICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9TdHJpY3RVSW50MzIoJmlzU3RyaWN0VUludDMyKTsKLSAgICBpZiAoaXNTdHJpY3RVSW50
MzIgJiYgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLnNpemUoKSkpIHsKKyAgICBi
b29sIGlzSW5kZXg7CisgICAgdW5zaWduZWQgaSA9IHRvSW5kZXgocHJvcGVydHlOYW1lLCAmaXNJ
bmRleCk7CisgICAgaWYgKGlzSW5kZXgpIHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlw
dG9yKGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIG1fdmFsdWUsIGkpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggMzlkZmU3NS4uODE3MjgzNyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaApAQCAtOTEsNiArOTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBi
b29sIGNhbkdldEluZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV92YWx1ZS5zaXplKCkpOyB9CiAgICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleChKU0ds
b2JhbERhdGEqLCB1bnNpZ25lZCk7CisgICAgICAgIHVuc2lnbmVkIHRvSW5kZXgoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sICpvayk7CiAKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90bykgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE5lZWRzVGhpc0NvbnZlcnNpb24pKTsgfQogCkBAIC0xNjksNiAr
MTcwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0
ZXJTdWJzdHJpbmcoZ2xvYmFsRGF0YSwgbV92YWx1ZSwgaSk7CiAgICAgfQogCisgICAgaW5saW5l
IHVuc2lnbmVkIEpTU3RyaW5nOjp0b0luZGV4KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgYm9vbCAqb2spCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRv
QXJyYXlJbmRleChvayk7CisgICAgICAgICpvayA9ICpvayAmJiBjYW5HZXRJbmRleChpKTsKKyAg
ICAgICAgcmV0dXJuIGk7CisgICAgfQorCiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCiAgICAgewogICAgICAg
ICBpbnQgc2l6ZSA9IHMuc2l6ZSgpOwpAQCAtMjI2LDkgKzIzNCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlz
U3RyaWN0VUludDMyOwotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvU3RyaWN0
VUludDMyKCZpc1N0cmljdFVJbnQzMik7Ci0gICAgICAgIGlmIChpc1N0cmljdFVJbnQzMiAmJiBp
IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fdmFsdWUuc2l6ZSgpKSkgeworICAgICAgICBib29s
IGlzSW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGkgPSB0b0luZGV4KHByb3BlcnR5TmFtZSwgJmlz
SW5kZXgpOworICAgICAgICBpZiAoaXNJbmRleCkgewogICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZShqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCmluZGV4IDcyMTZkM2EuLjQyMGM1MDkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKQEAgLTc5LDYgKzc5LDEwIEBAIGJvb2wgU3RyaW5nT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBpc0luZGV4OworICAgICh2b2lk
KWludGVybmFsVmFsdWUoKS0+dG9JbmRleChwcm9wZXJ0eU5hbWUsICZpc0luZGV4KTsKKyAgICBp
ZiAoaXNJbmRleCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU4YmY5MGYu
LjA2OGM2ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMi0wMiAgS2VudCBIYW5zZW4g
IDxrZW50LmhhbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIEphdmFTY3JpcHQgc3RyaW5nIHByb3BlcnR5
IGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjAxMgorCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3BlcnR5
LWRlbGV0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1k
ZWxldGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5nLXBy
b3BlcnR5LWRlbGV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEyLTAyICBGdW1pdG9zaGkgVWth
aSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9z
dHJpbmctcHJvcGVydHktZGVsZXRpb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvcGVydHktZGVsZXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNjIzNzAwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5qcwpAQCAtMCwwICsxLDE1
IEBACitkZXNjcmlwdGlvbigiVGhpcyBwYWdlIHRlc3RzIGRlbGV0aW9uIG9mIHByb3BlcnRpZXMg
b24gYSBzdHJpbmcgb2JqZWN0LiIpOworCit2YXIgc3RyID0gImFiYyI7CitzaG91bGRCZSgnc3Ry
Lmxlbmd0aCcsICczJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0ci5sZW5ndGgnLCAnZmFsc2UnKTsK
K3Nob3VsZEJlKCdkZWxldGUgc3RyWzBdJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0
clsxXScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJbMl0nLCAnZmFsc2UnKTsKK3No
b3VsZEJlKCdkZWxldGUgc3RyWzNdJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdkZWxldGUgc3RyWy0x
XScsICd0cnVlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0cls0Mjk0OTY3Mjk0XScsICd0cnVlJyk7
CitzaG91bGRCZSgnZGVsZXRlIHN0cls0Mjk0OTY3Mjk1XScsICd0cnVlJyk7CitzaG91bGRCZSgn
ZGVsZXRlIHN0ci5mb28nLCAndHJ1ZScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3BlcnR5LWRlbGV0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3BlcnR5LWRl
bGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NDQyZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJv
cGVydHktZGVsZXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgcGFnZSB0
ZXN0cyBkZWxldGlvbiBvZiBwcm9wZXJ0aWVzIG9uIGEgc3RyaW5nIG9iamVjdC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3RyLmxlbmd0aCBpcyAzCitQQVNTIGRlbGV0
ZSBzdHIubGVuZ3RoIGlzIGZhbHNlCitQQVNTIGRlbGV0ZSBzdHJbMF0gaXMgZmFsc2UKK1BBU1Mg
ZGVsZXRlIHN0clsxXSBpcyBmYWxzZQorUEFTUyBkZWxldGUgc3RyWzJdIGlzIGZhbHNlCitQQVNT
IGRlbGV0ZSBzdHJbM10gaXMgdHJ1ZQorUEFTUyBkZWxldGUgc3RyWy0xXSBpcyB0cnVlCitQQVNT
IGRlbGV0ZSBzdHJbNDI5NDk2NzI5NF0gaXMgdHJ1ZQorUEFTUyBkZWxldGUgc3RyWzQyOTQ5Njcy
OTVdIGlzIHRydWUKK1BBU1MgZGVsZXRlIHN0ci5mb28gaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvc3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI1N2QzNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3BlcnR5LWRl
bGV0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="25948"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44220</attachid>
            <date>2009-12-03 02:22:49 -0800</date>
            <delta_ts>2009-12-04 17:21:53 -0800</delta_ts>
            <desc>Revised patch (back to basics) and more test cases</desc>
            <filename>stringPropertyDeletion3.diff</filename>
            <type>text/plain</type>
            <size>4336</size>
            <attacher name="Kent Hansen">kent.hansen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhNTBjZjIyLi5jZTU1MTUzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMDktMTItMDMgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEphdmFTY3JpcHQg
ZGVsZXRlIG9wZXJhdG9yIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIHN0cmluZyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjAxMgor
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKwogMjAwOS0xMi0wMiAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdo
LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDcyMTZkM2EuLjdk
YzRlMjUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTc5LDYg
Kzc5LDEwIEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtCiB7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYm9vbCBpc1N0cmljdFVJbnQzMjsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LnRvU3RyaWN0VUludDMyKCZpc1N0cmljdFVJbnQzMik7CisgICAgaWYgKGlzU3RyaWN0VUludDMy
ICYmIGludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkMTY2ZjdhLi4xNjk5ZDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMTItMDMgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBK
YXZhU2NyaXB0IHN0cmluZyBwcm9wZXJ0eSBkZWxldGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMTIKKworICAgICAgICAqIGZhc3QvanMvc2Ny
aXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5odG1sOiBBZGRlZC4KKwog
MjAwOS0xMi0wMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3BlcnR5LWRlbGV0aW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Y2VjZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvcGVydHktZGVsZXRp
b24uanMKQEAgLTAsMCArMSwxOSBAQAorZGVzY3JpcHRpb24oIlRoaXMgcGFnZSB0ZXN0cyBkZWxl
dGlvbiBvZiBwcm9wZXJ0aWVzIG9uIGEgc3RyaW5nIG9iamVjdC4iKTsKKwordmFyIHN0ciA9ICJh
YmMiOworc2hvdWxkQmUoJ3N0ci5sZW5ndGgnLCAnMycpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHIu
bGVuZ3RoJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0clswXScsICdmYWxzZScpOwor
c2hvdWxkQmUoJ2RlbGV0ZSBzdHJbMV0nLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdkZWxldGUgc3Ry
WzJdJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0clszXScsICd0cnVlJyk7CitzaG91
bGRCZSgnZGVsZXRlIHN0clstMV0nLCAndHJ1ZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJbNDI5
NDk2NzI5NF0nLCAndHJ1ZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJbNDI5NDk2NzI5NV0nLCAn
dHJ1ZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJbNDI5NDk2NzI5Nl0nLCAndHJ1ZScpOworc2hv
dWxkQmUoJ2RlbGV0ZSBzdHJbMC4wXScsICdmYWxzZScpOworc2hvdWxkQmUoJ2RlbGV0ZSBzdHJb
MC4xXScsICd0cnVlJyk7CitzaG91bGRCZSgnZGVsZXRlIHN0cltcJzAuMFwnXScsICd0cnVlJyk7
CitzaG91bGRCZSgnZGVsZXRlIHN0ci5mb28nLCAndHJ1ZScpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXBy
b3BlcnR5LWRlbGV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LXByb3BlcnR5LWRlbGV0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45OTVkNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdHJpbmctcHJvcGVydHktZGVsZXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAK
K1RoaXMgcGFnZSB0ZXN0cyBkZWxldGlvbiBvZiBwcm9wZXJ0aWVzIG9uIGEgc3RyaW5nIG9iamVj
dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3RyLmxlbmd0aCBpcyAz
CitQQVNTIGRlbGV0ZSBzdHIubGVuZ3RoIGlzIGZhbHNlCitQQVNTIGRlbGV0ZSBzdHJbMF0gaXMg
ZmFsc2UKK1BBU1MgZGVsZXRlIHN0clsxXSBpcyBmYWxzZQorUEFTUyBkZWxldGUgc3RyWzJdIGlz
IGZhbHNlCitQQVNTIGRlbGV0ZSBzdHJbM10gaXMgdHJ1ZQorUEFTUyBkZWxldGUgc3RyWy0xXSBp
cyB0cnVlCitQQVNTIGRlbGV0ZSBzdHJbNDI5NDk2NzI5NF0gaXMgdHJ1ZQorUEFTUyBkZWxldGUg
c3RyWzQyOTQ5NjcyOTVdIGlzIHRydWUKK1BBU1MgZGVsZXRlIHN0cls0Mjk0OTY3Mjk2XSBpcyB0
cnVlCitQQVNTIGRlbGV0ZSBzdHJbMC4wXSBpcyBmYWxzZQorUEFTUyBkZWxldGUgc3RyWzAuMV0g
aXMgdHJ1ZQorUEFTUyBkZWxldGUgc3RyWycwLjAnXSBpcyB0cnVlCitQQVNTIGRlbGV0ZSBzdHIu
Zm9vIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1wcm9wZXJ0eS1k
ZWxldGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTdkMzVjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvcGVydHktZGVsZXRp
b24uaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N0cmluZy1wcm9wZXJ0eS1kZWxldGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>