<?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>39430</bug_id>
          
          <creation_ts>2010-05-20 09:44:55 -0700</creation_ts>
          <short_desc>Refactor form submission code in HTMLFormElement to remove hairballs and add logical clarity.</short_desc>
          <delta_ts>2010-06-14 20:15:18 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>39021</blocked>
    
    <blocked>40084</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228423</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-20 09:44:55 -0700</bug_when>
    <thetext>Refactor form submission code in HTMLFormElement to remove hairballs and add logical clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228425</commentid>
    <comment_count>1</comment_count>
      <attachid>56603</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-20 09:45:55 -0700</bug_when>
    <thetext>Created attachment 56603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230456</commentid>
    <comment_count>2</comment_count>
      <attachid>57046</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-25 14:20:36 -0700</bug_when>
    <thetext>Created attachment 57046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230470</commentid>
    <comment_count>3</comment_count>
      <attachid>57046</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-25 14:45:43 -0700</bug_when>
    <thetext>Comment on attachment 57046
Patch

Looks like a good idea. I have a few concerns.

&gt; +        * html/HTMLFormElement.cpp:
&gt; +        (WebCore::transferMailtoPostFormDataToURL): Removed clearing out of the FormData and
&gt; +            moved it to a new place (next to where it&apos;s now used).

To me, the name of this function implies that the data is moved from one place into the other. The use of the verb &quot;transfer&quot; as opposed to one more commonly used in software such as &quot;set&quot; is indicating that. So the name isn&apos;t quite as good as it was before given the change in behavior of the function. I suggest changing the name of the function and maybe the order of the arguments to make it clearer this function now sets the URL and doesn&apos;t touch its other argument. For the same reason, the argument can now be &quot;const FormData&amp;&quot; now instead of &quot;FormData*&quot; and probably should go after the URL argument.

&gt;  PassRefPtr&lt;FormData&gt; HTMLFormElement::createFormData()

The old createFormData function used to create a FormData object without side effects. But now the function has side effects:

    - It can set the enctypeAttr of the form element.
    - It can change the state of the form data builder, clearing the is multi-part-form flag.
    - It can change the URL, putting the form data there instead of in the FormData object.

This reduces the amount of code in HTMLFormElement::submit at the cost of making the createFormData function a bigger one that has more diffuse responsibilities.

Can we avoid this? Maybe add a new function called something like prepareFormData could be the outer function with the additional code in it instead of putting it all into createFormData.

&gt;      result-&gt;setIdentifier(generateFormDataIdentifier());

This line of code now runs after transferMailtoPostFormDataToURL, and it used to run before. Why doesn&apos;t that give us a different result with mailto? Is there test coverage of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230489</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-25 15:11:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 57046 [details])
&gt; Looks like a good idea. I have a few concerns.
&gt; 
&gt; &gt; +        * html/HTMLFormElement.cpp:
&gt; &gt; +        (WebCore::transferMailtoPostFormDataToURL): Removed clearing out of the FormData and
&gt; &gt; +            moved it to a new place (next to where it&apos;s now used).
&gt; 
&gt; To me, the name of this function implies that the data is moved from one place into the other. The use of the verb &quot;transfer&quot; as opposed to one more commonly used in software such as &quot;set&quot; is indicating that. So the name isn&apos;t quite as good as it was before given the change in behavior of the function. I suggest changing the name of the function and maybe the order of the arguments to make it clearer this function now sets the URL and doesn&apos;t touch its other argument. For the same reason, the argument can now be &quot;const FormData&amp;&quot; now instead of &quot;FormData*&quot; and probably should go after the URL argument.

These are all good points. What do you think about moving this method to FormDataBuilder? It looks very builder-y.

&gt; 
&gt; &gt;  PassRefPtr&lt;FormData&gt; HTMLFormElement::createFormData()
&gt; 
&gt; The old createFormData function used to create a FormData object without side effects. But now the function has side effects:
&gt; 
&gt;     - It can set the enctypeAttr of the form element.
&gt;     - It can change the state of the form data builder, clearing the is multi-part-form flag.
&gt;     - It can change the URL, putting the form data there instead of in the FormData object.
&gt; 
&gt; This reduces the amount of code in HTMLFormElement::submit at the cost of making the createFormData function a bigger one that has more diffuse responsibilities.
&gt; 
&gt; Can we avoid this? Maybe add a new function called something like prepareFormData could be the outer function with the additional code in it instead of putting it all into createFormData.

Yup, good point, too. Since this is a private method with one callsite, we can just rename it to what it actually does.

&gt; &gt;      result-&gt;setIdentifier(generateFormDataIdentifier());
&gt; 
&gt; This line of code now runs after transferMailtoPostFormDataToURL, and it used to run before. Why doesn&apos;t that give us a different result with mailto? Is there test coverage of this?

With mailto, the identifier never gets to be used -- the result is emptied out after being appended to form&apos;s URL. The test coverage is pretty thorough in fast/forms/mailto.

I&apos;ll put up a new patch in a few.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230492</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-05-25 15:12:28 -0700</bug_when>
    <thetext>
&gt;     - It can set the enctypeAttr of the form element.
&gt;     - It can change the state of the form data builder, clearing the is multi-part-form flag.
&gt;     - It can change the URL, putting the form data there instead of in the FormData object.
&gt; 

By the way, I&apos;ll investigate these separately. The setting of the attr doesn&apos;t seem good at all. For now, I am just moving the code (and adding a fixme).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232946</commentid>
    <comment_count>6</comment_count>
      <attachid>57594</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-01 14:06:05 -0700</bug_when>
    <thetext>Created attachment 57594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233458</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-02 14:44:02 -0700</bug_when>
    <thetext>To give you a bit more context, this is part of a series of patches to introduce a proper form submission abstraction/flow. See bug 40084 for the next patch (not yet ready for review).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233816</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-03 10:29:19 -0700</bug_when>
    <thetext>I tried looking at your patch but it was too hard for me.  I&apos;ll try again if you don&apos;t find a reviewer who is more familiar with this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233818</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-03 10:30:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I tried looking at your patch but it was too hard for me.  I&apos;ll try again if you don&apos;t find a reviewer who is more familiar with this code.

No worries, Darin will look when he has a chance. Right Darin? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237381</commentid>
    <comment_count>10</comment_count>
      <attachid>57594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-12 17:56:00 -0700</bug_when>
    <thetext>Comment on attachment 57594
Patch

&gt; +            // FIXME: This may fire a DOM Mutation Event. Do we really want this here?

I don’t see any reason to capitalize “Mutation Event”. Also, I’m not sure about the use of the word “may” here. It either will fire the event or won‘t. Maybe the use of “may” is related to the fact that most likely no one is listening so we will optimize out the work.

&gt; +            setEnctype(&quot;application/x-www-form-urlencoded&quot;);

It’s unfortunate that this function has to have a side effect at all. We should explore whether the form element’s enctype actually needs to be changed. I’m guessing that could be incorrect behavior. Sure, we want this encoding type to be used, but doing that by mutating the DOM seems wrong.

Thus the comment seems to miss a point that is even more pertinent than the the mutation event. Do we want to mutate the form element at all in this case, or is there a better way to handle it? Maybe the form data builder or some other transient object could hold the encoding type.

&gt;      return result;

This really should be returning result.release().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237404</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-12 18:52:55 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #10)
&gt; (From update of attachment 57594 [details])
&gt; &gt; +            // FIXME: This may fire a DOM Mutation Event. Do we really want this here?
&gt; 
&gt; I don’t see any reason to capitalize “Mutation Event”. Also, I’m not sure about the use of the word “may” here. It either will fire the event or won‘t. Maybe the use of “may” is related to the fact that most likely no one is listening so we will optimize out the work.
&gt; 
&gt; &gt; +            setEnctype(&quot;application/x-www-form-urlencoded&quot;);
&gt; 
&gt; It’s unfortunate that this function has to have a side effect at all. We should explore whether the form element’s enctype actually needs to be changed. I’m guessing that could be incorrect behavior. Sure, we want this encoding type to be used, but doing that by mutating the DOM seems wrong.
&gt; 
&gt; Thus the comment seems to miss a point that is even more pertinent than the the mutation event. Do we want to mutate the form element at all in this case, or is there a better way to handle it? Maybe the form data builder or some other transient object could hold the encoding type.

Exactly -- I already investigated this and fixed just the way you&apos;re suggesting in the patch on bug 40184.

&gt; 
&gt; &gt;      return result;
&gt; 
&gt; This really should be returning result.release().

Good point! Will fix on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238059</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 14:51:40 -0700</bug_when>
    <thetext>Committed r61152: &lt;http://trac.webkit.org/changeset/61152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238206</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 19:48:45 -0700</bug_when>
    <thetext>Seems to have caused a Gtk API test regression:

ERROR:../../WebKit/gtk/tests/testatkroles.c:98:get_child_and_test_role: assertion failed: (child_role == role)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238213</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 20:05:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Seems to have caused a Gtk API test regression:
&gt; 
&gt; ERROR:../../WebKit/gtk/tests/testatkroles.c:98:get_child_and_test_role: assertion failed: (child_role == role)

Weeeeird. I wonder how that&apos;s possible. Xan, Martin -- any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238215</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-14 20:15:18 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=40133 is the culprit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56603</attachid>
            <date>2010-05-20 09:45:55 -0700</date>
            <delta_ts>2010-05-25 14:20:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39430-20100520094554.patch</filename>
            <type>text/plain</type>
            <size>6573</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGI4MGVhODdmNzg3Mjc2NWU3N2U4MTY4MGJmZDNjYjc3MzU1YmQ1ZS4uOTJjOGU0NTYzYThhZmI1
ZTYxNWY0MDkyNjBiNDllNjQ3MmQxMTM1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0yMCAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGZvcm0gc3VibWlzc2lvbiBj
b2RlIGluIEhUTUxGb3JtRWxlbWVudCB0byByZW1vdmUgaGFpcmJhbGxzIGFuZCBhZGQgbG9naWNh
bCBjbGFyaXR5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk0MzAKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyTWFpbHRv
UG9zdEZvcm1EYXRhVG9VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpj
cmVhdGVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1p
dCk6CisKIDIwMTAtMDUtMTkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVHJ5IGFnYWluIHRvIHJvbGwgb3V0IHI1ODY3NS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKaW5kZXggYzg0NDU0ZDE1OWRiZWNhNWE0ZTM1Yjk1MmFiZWFhMzQ5OWJhNTFmMy4uNzg0
OTM5YzZkZTM2NWQyNTY3NTk4NjlhYjg5YmRjOGIxNDNjNWMwNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAKQEAgLTIwMSw4ICsyMDEsMzggQEAgVGV4dEVuY29kaW5nIEhUTUxGb3JtRWxlbWVu
dDo6ZGF0YUVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtRGF0YUJ1aWxkZXIuZGF0
YUVuY29kaW5nKGRvY3VtZW50KCkpOwogfQogCitzdGF0aWMgdm9pZCB0cmFuc2Zlck1haWx0b1Bv
c3RGb3JtRGF0YVRvVVJMKEZvcm1EYXRhKiBkYXRhLCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdUeXBlKQoreworICAgIFN0cmluZyBib2R5ID0gZGF0YS0+ZmxhdHRlblRvU3RyaW5n
KCk7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5jb2RpbmdUeXBlLCAidGV4dC9wbGFp
biIpKSB7CisgICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8gZGVjb2RlLCBhbmQg
cy8mL1xyXG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgorICAgICAgICBib2R5
ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxuIikucmVw
bGFjZSgnKycsICcgJykgKyAiXHJcbiIpOworICAgIH0KKworICAgIFZlY3RvcjxjaGFyPiBib2R5
RGF0YTsKKyAgICBib2R5RGF0YS5hcHBlbmQoImJvZHk9IiwgNSk7CisgICAgRm9ybURhdGFCdWls
ZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7CisgICAg
Ym9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZSgn
KycsICIlMjAiKTsKKworICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOworICAgIGlmICgh
cXVlcnkuaXNFbXB0eSgpKQorICAgICAgICBxdWVyeS5hcHBlbmQoJyYnKTsKKyAgICBxdWVyeS5h
cHBlbmQoYm9keSk7CisgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKK30KKyAgICAKIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEoKQogeworICAgIGlm
IChtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSkgeworICAgICAgICBpZiAobV9mb3Jt
RGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkgJiYgaXNNYWlsdG9Gb3JtKCkpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIG1heSBmaXJlIGEgRE9NIE11dGF0aW9uIEV2ZW50LiBEbyB3
ZSByZWFsbHkgd2FudCB0aGlzIGhlcmU/CisgICAgICAgICAgICBzZXRFbmN0eXBlKCJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9mb3Jt
RGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpOworICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShmYWxzZSk7CisKICAg
ICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShk
YXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IGZvcm1FbGVtZW50c1tpXTsKQEAgLTIxMCw3
ICsyNDAsMjAgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50OjpjcmVhdGVG
b3JtRGF0YSgpCiAgICAgICAgICAgICBjb250cm9sLT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9ybURh
dGEsIG1fZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9IChtX2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZv
cm0oKSkgPyBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KCpkb21Gb3JtRGF0YSwgZG9jdW1lbnQo
KSkgOiBGb3JtRGF0YTo6Y3JlYXRlKCpkb21Gb3JtRGF0YSk7CisgICAgUmVmUHRyPEZvcm1EYXRh
PiByZXN1bHQ7CisKKyAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkp
CisgICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoKmRvbUZvcm1EYXRh
LCBkb2N1bWVudCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gRm9ybURhdGE6OmNy
ZWF0ZSgqZG9tRm9ybURhdGEpOworICAgICAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNQb3N0
TWV0aG9kKCkgJiYgaXNNYWlsdG9Gb3JtKCkpIHsKKyAgICAgICAgICAgIC8vIENvbnZlcnQgdGhl
IGZvcm0gZGF0YSBpbnRvIGEgc3RyaW5nIHRoYXQgd2UgcHV0IGludG8gdGhlIFVSTC4KKyAgICAg
ICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpOworICAgICAg
ICAgICAgdHJhbnNmZXJNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChyZXN1bHQuZ2V0KCksIHVybCwg
bV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCkpOworICAgICAgICAgICAgcmVzdWx0ID0g
Rm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV91cmwgPSB1cmwuc3RyaW5nKCk7Cisg
ICAgICAgIH0KKyAgICB9CiAKICAgICByZXN1bHQtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3Jt
RGF0YUlkZW50aWZpZXIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMwNSwyOCArMzQ4LDYg
QEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVTdWJtaXQoRXZlbnQqIGV2ZW50KQogICAg
IHJldHVybiBtX2RvaW5nc3VibWl0OwogfQogCi1zdGF0aWMgdm9pZCB0cmFuc2Zlck1haWx0b1Bv
c3RGb3JtRGF0YVRvVVJMKFJlZlB0cjxGb3JtRGF0YT4mIGRhdGEsIEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ1R5cGUpCi17Ci0gICAgU3RyaW5nIGJvZHkgPSBkYXRhLT5mbGF0dGVu
VG9TdHJpbmcoKTsKLSAgICBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwotCi0gICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGVuY29kaW5nVHlwZSwgInRleHQvcGxhaW4iKSkgewotICAgICAgICAv
LyBDb252ZW50aW9uIHNlZW1zIHRvIGJlIHRvIGRlY29kZSwgYW5kIHMvJi9cclxuLy4gQWxzbywg
c3BhY2VzIGFyZSBlbmNvZGVkIGFzICUyMC4KLSAgICAgICAgYm9keSA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyhib2R5LnJlcGxhY2UoJyYnLCAiXHJcbiIpLnJlcGxhY2UoJysnLCAnICcpICsg
IlxyXG4iKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8Y2hhcj4gYm9keURhdGE7Ci0gICAgYm9keURh
dGEuYXBwZW5kKCJib2R5PSIsIDUpOwotICAgIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5n
QXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51dGY4KCkpOwotICAgIGJvZHkgPSBTdHJpbmcoYm9k
eURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXplKCkpLnJlcGxhY2UoJysnLCAiJTIwIik7Ci0KLSAg
ICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAgICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkK
LSAgICAgICAgcXVlcnkuYXBwZW5kKCcmJyk7Ci0gICAgcXVlcnkuYXBwZW5kKGJvZHkpOwotICAg
IHVybC5zZXRRdWVyeShxdWVyeSk7Ci19Ci0KIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQo
RnJhbWUqIGphdmFTY3JpcHRBY3RpdmVGcmFtZSkKIHsKICAgICBpZiAoamF2YVNjcmlwdEFjdGl2
ZUZyYW1lKQpAQCAtMzgwLDI5ICs0MDEsMTAgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1p
dChFdmVudCogZXZlbnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgbG9ja0gKICAg
ICBpZiAobV91cmwuaXNFbXB0eSgpKQogICAgICAgICBtX3VybCA9IGRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpOwogCi0gICAgaWYgKG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpKSB7
Ci0gICAgICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSAmJiBpc01h
aWx0b0Zvcm0oKSkgewotICAgICAgICAgICAgc2V0RW5jdHlwZSgiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZm9ybURhdGFCdWlsZGVy
LmlzTXVsdGlQYXJ0Rm9ybSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxGb3JtRGF0
YT4gZGF0YSA9IGNyZWF0ZUZvcm1EYXRhKCk7Ci0gICAgICAgIGlmICghbV9mb3JtRGF0YUJ1aWxk
ZXIuaXNNdWx0aVBhcnRGb3JtKCkpIHsKLQotICAgICAgICAgICAgaWYgKGlzTWFpbHRvRm9ybSgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJp
bmcgdGhhdCB3ZSBwdXQgaW50byB0aGUgVVJMLgotICAgICAgICAgICAgICAgIEtVUkwgdXJsID0g
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpOwotICAgICAgICAgICAgICAgIHRyYW5zZmVy
TWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoZGF0YSwgdXJsLCBtX2Zvcm1EYXRhQnVpbGRlci5lbmNv
ZGluZ1R5cGUoKSk7Ci0gICAgICAgICAgICAgICAgbV91cmwgPSB1cmwuc3RyaW5nKCk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0Rm9ybSgiUE9T
VCIsIG1fdXJsLCBkYXRhLnJlbGVhc2UoKSwgbV90YXJnZXQsIG1fZm9ybURhdGFCdWlsZGVyLmVu
Y29kaW5nVHlwZSgpLCBTdHJpbmcoKSwgbG9ja0hpc3RvcnksIGV2ZW50LCBmb3JtU3RhdGUucmVs
ZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnN1
Ym1pdEZvcm0oIlBPU1QiLCBtX3VybCwgZGF0YS5nZXQoKSwgbV90YXJnZXQsIG1fZm9ybURhdGFC
dWlsZGVyLmVuY29kaW5nVHlwZSgpLCBkYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSwgbG9ja0hpc3Rv
cnksIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBt
X2Zvcm1EYXRhQnVpbGRlci5zZXRJc011bHRpUGFydEZvcm0oZmFsc2UpOwotICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPnN1Ym1pdEZvcm0oIkdFVCIsIG1fdXJsLCBjcmVhdGVGb3JtRGF0YSgpLCBt
X3RhcmdldCwgU3RyaW5nKCksIFN0cmluZygpLCBsb2NrSGlzdG9yeSwgZXZlbnQsIGZvcm1TdGF0
ZS5yZWxlYXNlKCkpOwotICAgIH0KKyAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBjcmVhdGVG
b3JtRGF0YSgpOworICAgIFN0cmluZyBib3VuZGFyeSA9IG1fZm9ybURhdGFCdWlsZGVyLmlzTXVs
dGlQYXJ0Rm9ybSgpID8gZGF0YS0+Ym91bmRhcnkoKS5kYXRhKCkgOiBTdHJpbmcoKTsKKyAgICBj
b25zdCBjaGFyKiBtZXRob2QgPSBtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSA/ICJQ
T1NUIiA6ICJHRVQiOworICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0Rm9ybShtZXRob2QsIG1f
dXJsLCBkYXRhLnJlbGVhc2UoKSwgbV90YXJnZXQsIG1fZm9ybURhdGFCdWlsZGVyLmVuY29kaW5n
VHlwZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgp
KTsKIAogICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJt
aXRCdXR0b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZh
dGVkU3VibWl0KGZhbHNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57046</attachid>
            <date>2010-05-25 14:20:36 -0700</date>
            <delta_ts>2010-06-01 14:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39430-20100525142035.patch</filename>
            <type>text/plain</type>
            <size>6815</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGI4MGVhODdmNzg3Mjc2NWU3N2U4MTY4MGJmZDNjYjc3MzU1YmQ1ZS4uZDFhNjM2NmQ4MDYwZGJm
NGJjODM4ZmNhMzNiZDAzNzdhYjc4ZjkyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0yNSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGZvcm0gc3VibWlzc2lvbiBj
b2RlIGluIEhUTUxGb3JtRWxlbWVudCB0byBhZGQgY2xhcml0eS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDMwCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zlck1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKTogUmVtb3ZlZCBj
bGVhcmluZyBvdXQgb2YgdGhlIEZvcm1EYXRhIGFuZAorICAgICAgICAgICAgbW92ZWQgaXQgdG8g
YSBuZXcgcGxhY2UgKG5leHQgdG8gd2hlcmUgaXQncyBub3cgdXNlZCkuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmNyZWF0ZUZvcm1EYXRhKTogTW92ZWQgdGhlIGxvZ2ljIG9m
IGNyZWF0aW5nIEZvcm1EYXRhIGhlcmUsCisgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIHVzZSBv
ZiB0cmFuc2Zlck1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OnN1Ym1pdCk6IENvbnNvbGlkYXRlZCBtdWx0aXBsZSBpbnZvY2F0aW9ucyBv
ZiBzdWJtaXRGb3JtKCkuCisKIDIwMTAtMDUtMTkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVHJ5IGFnYWluIHRvIHJvbGwgb3V0IHI1ODY3NS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzg0NDU0ZDE1OWRiZWNhNWE0ZTM1Yjk1MmFiZWFhMzQ5
OWJhNTFmMy4uNmVkZTA0MmRmMTMyMDdiNDkyZDQ4MWU0ODY3NTc0YjFkMDNkMzBmNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTIwMSw4ICsyMDEsMzggQEAgVGV4dEVuY29kaW5nIEhU
TUxGb3JtRWxlbWVudDo6ZGF0YUVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9mb3JtRGF0
YUJ1aWxkZXIuZGF0YUVuY29kaW5nKGRvY3VtZW50KCkpOwogfQogCitzdGF0aWMgdm9pZCB0cmFu
c2Zlck1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKEZvcm1EYXRhKiBkYXRhLCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdUeXBlKQoreworICAgIFN0cmluZyBib2R5ID0gZGF0YS0+Zmxh
dHRlblRvU3RyaW5nKCk7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5jb2RpbmdUeXBl
LCAidGV4dC9wbGFpbiIpKSB7CisgICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8g
ZGVjb2RlLCBhbmQgcy8mL1xyXG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgor
ICAgICAgICBib2R5ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJics
ICJcclxuIikucmVwbGFjZSgnKycsICcgJykgKyAiXHJcbiIpOworICAgIH0KKworICAgIFZlY3Rv
cjxjaGFyPiBib2R5RGF0YTsKKyAgICBib2R5RGF0YS5hcHBlbmQoImJvZHk9IiwgNSk7CisgICAg
Rm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0
ZjgoKSk7CisgICAgYm9keSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUo
KSkucmVwbGFjZSgnKycsICIlMjAiKTsKKworICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgp
OworICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKQorICAgICAgICBxdWVyeS5hcHBlbmQoJyYnKTsK
KyAgICBxdWVyeS5hcHBlbmQoYm9keSk7CisgICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKK30KKyAg
ICAKIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEo
KQogeworICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSkgeworICAgICAg
ICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkgJiYgaXNNYWlsdG9Gb3Jt
KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1heSBmaXJlIGEgRE9NIE11dGF0aW9u
IEV2ZW50LiBEbyB3ZSByZWFsbHkgd2FudCB0aGlzIGhlcmU/CisgICAgICAgICAgICBzZXRFbmN0
eXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICAgICAgICAgIEFT
U0VSVCghbV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShm
YWxzZSk7CisKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURh
dGE6OmNyZWF0ZShkYXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IGZvcm1FbGVtZW50c1tp
XTsKQEAgLTIxMCw3ICsyNDAsMjEgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1FbGVt
ZW50OjpjcmVhdGVGb3JtRGF0YSgpCiAgICAgICAgICAgICBjb250cm9sLT5hcHBlbmRGb3JtRGF0
YSgqZG9tRm9ybURhdGEsIG1fZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9IChtX2Zvcm1EYXRhQnVpbGRlci5p
c011bHRpUGFydEZvcm0oKSkgPyBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KCpkb21Gb3JtRGF0
YSwgZG9jdW1lbnQoKSkgOiBGb3JtRGF0YTo6Y3JlYXRlKCpkb21Gb3JtRGF0YSk7CisgICAgUmVm
UHRyPEZvcm1EYXRhPiByZXN1bHQ7CisKKyAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0
aVBhcnRGb3JtKCkpCisgICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQo
KmRvbUZvcm1EYXRhLCBkb2N1bWVudCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0g
Rm9ybURhdGE6OmNyZWF0ZSgqZG9tRm9ybURhdGEpOworICAgICAgICBpZiAobV9mb3JtRGF0YUJ1
aWxkZXIuaXNQb3N0TWV0aG9kKCkgJiYgaXNNYWlsdG9Gb3JtKCkpIHsKKyAgICAgICAgICAgIC8v
IENvbnZlcnQgdGhlIGZvcm0gZGF0YSBpbnRvIGEgc3RyaW5nIHRoYXQgd2UgcHV0IGludG8gdGhl
IFVSTC4KKyAgICAgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91
cmwpOworICAgICAgICAgICAgdHJhbnNmZXJNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChyZXN1bHQu
Z2V0KCksIHVybCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCkpOworICAgICAgICAg
ICAgbV91cmwgPSB1cmwuc3RyaW5nKCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IEZvcm1EYXRh
OjpjcmVhdGUoKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHJlc3VsdC0+c2V0SWRlbnRpZmll
cihnZW5lcmF0ZUZvcm1EYXRhSWRlbnRpZmllcigpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
MzA1LDI4ICszNDksNiBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZVN1Ym1pdChFdmVu
dCogZXZlbnQpCiAgICAgcmV0dXJuIG1fZG9pbmdzdWJtaXQ7CiB9CiAKLXN0YXRpYyB2b2lkIHRy
YW5zZmVyTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoUmVmUHRyPEZvcm1EYXRhPiYgZGF0YSwgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nVHlwZSkKLXsKLSAgICBTdHJpbmcgYm9keSA9
IGRhdGEtPmZsYXR0ZW5Ub1N0cmluZygpOwotICAgIGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7
Ci0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5jb2RpbmdUeXBlLCAidGV4dC9wbGFpbiIp
KSB7Ci0gICAgICAgIC8vIENvbnZlbnRpb24gc2VlbXMgdG8gYmUgdG8gZGVjb2RlLCBhbmQgcy8m
L1xyXG4vLiBBbHNvLCBzcGFjZXMgYXJlIGVuY29kZWQgYXMgJTIwLgotICAgICAgICBib2R5ID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGJvZHkucmVwbGFjZSgnJicsICJcclxuIikucmVwbGFj
ZSgnKycsICcgJykgKyAiXHJcbiIpOwotICAgIH0KLQotICAgIFZlY3RvcjxjaGFyPiBib2R5RGF0
YTsKLSAgICBib2R5RGF0YS5hcHBlbmQoImJvZHk9IiwgNSk7Ci0gICAgRm9ybURhdGFCdWlsZGVy
OjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7Ci0gICAgYm9k
eSA9IFN0cmluZyhib2R5RGF0YS5kYXRhKCksIGJvZHlEYXRhLnNpemUoKSkucmVwbGFjZSgnKycs
ICIlMjAiKTsKLQotICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOwotICAgIGlmICghcXVl
cnkuaXNFbXB0eSgpKQotICAgICAgICBxdWVyeS5hcHBlbmQoJyYnKTsKLSAgICBxdWVyeS5hcHBl
bmQoYm9keSk7Ci0gICAgdXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKLX0KLQogdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnN1Ym1pdChGcmFtZSogamF2YVNjcmlwdEFjdGl2ZUZyYW1lKQogewogICAgIGlmIChq
YXZhU2NyaXB0QWN0aXZlRnJhbWUpCkBAIC0zODAsMjkgKzQwMiwxMCBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwg
Ym9vbCBsb2NrSAogICAgIGlmIChtX3VybC5pc0VtcHR5KCkpCiAgICAgICAgIG1fdXJsID0gZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKLSAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNQ
b3N0TWV0aG9kKCkpIHsKLSAgICAgICAgaWYgKG1fZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0
Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7Ci0gICAgICAgICAgICBzZXRFbmN0eXBlKCJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9m
b3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
UmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gY3JlYXRlRm9ybURhdGEoKTsKLSAgICAgICAgaWYgKCFt
X2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSkgewotCi0gICAgICAgICAgICBpZiAo
aXNNYWlsdG9Gb3JtKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBmb3JtIGRh
dGEgaW50byBhIHN0cmluZyB0aGF0IHdlIHB1dCBpbnRvIHRoZSBVUkwuCi0gICAgICAgICAgICAg
ICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7Ci0gICAgICAgICAg
ICAgICAgdHJhbnNmZXJNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChkYXRhLCB1cmwsIG1fZm9ybURh
dGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKLSAgICAgICAgICAgICAgICBtX3VybCA9IHVybC5z
dHJpbmcoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5z
dWJtaXRGb3JtKCJQT1NUIiwgbV91cmwsIGRhdGEucmVsZWFzZSgpLCBtX3RhcmdldCwgbV9mb3Jt
RGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCksIFN0cmluZygpLCBsb2NrSGlzdG9yeSwgZXZlbnQs
IGZvcm1TdGF0ZS5yZWxlYXNlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+c3VibWl0Rm9ybSgiUE9TVCIsIG1fdXJsLCBkYXRhLmdldCgpLCBtX3Rhcmdl
dCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCksIGRhdGEtPmJvdW5kYXJ5KCkuZGF0
YSgpLCBsb2NrSGlzdG9yeSwgZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNlKCkpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShmYWxzZSk7
Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0Rm9ybSgiR0VUIiwgbV91cmwsIGNyZWF0
ZUZvcm1EYXRhKCksIG1fdGFyZ2V0LCBTdHJpbmcoKSwgU3RyaW5nKCksIGxvY2tIaXN0b3J5LCBl
dmVudCwgZm9ybVN0YXRlLnJlbGVhc2UoKSk7Ci0gICAgfQorICAgIFJlZlB0cjxGb3JtRGF0YT4g
ZGF0YSA9IGNyZWF0ZUZvcm1EYXRhKCk7CisgICAgU3RyaW5nIGJvdW5kYXJ5ID0gbV9mb3JtRGF0
YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkgPyBkYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSA6IFN0
cmluZygpOworICAgIGNvbnN0IGNoYXIqIG1ldGhvZCA9IG1fZm9ybURhdGFCdWlsZGVyLmlzUG9z
dE1ldGhvZCgpID8gIlBPU1QiIDogIkdFVCI7CisgICAgZnJhbWUtPmxvYWRlcigpLT5zdWJtaXRG
b3JtKG1ldGhvZCwgbV91cmwsIGRhdGEucmVsZWFzZSgpLCBtX3RhcmdldCwgbV9mb3JtRGF0YUJ1
aWxkZXIuZW5jb2RpbmdUeXBlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQsIGZvcm1T
dGF0ZS5yZWxlYXNlKCkpOwogCiAgICAgaWYgKG5lZWRCdXR0b25BY3RpdmF0aW9uICYmIGZpcnN0
U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbikKICAgICAgICAgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0
dG9uLT5zZXRBY3RpdmF0ZWRTdWJtaXQoZmFsc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57594</attachid>
            <date>2010-06-01 14:06:05 -0700</date>
            <delta_ts>2010-06-12 17:55:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39430-20100601140604.patch</filename>
            <type>text/plain</type>
            <size>7642</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTc5NDI3MTU2ZDRmZmM0NGYzZDg3YzFlYTljMTRlZDIyOTQwZjAxYS4uYzIyYjE1MDA2ZDFhNGY5
Yzk1ZDk1N2MyODg5Y2M5MDI0MTFlOWQ3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNi0wMSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIGZvcm0gc3VibWlzc2lvbiBj
b2RlIGluIEhUTUxGb3JtRWxlbWVudCB0byBhZGQgY2xhcml0eS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDMwCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cyBpbiBmYXN0L2Zvcm1zL21haWx0by4KKworICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZE1haWx0b1Bvc3RG
b3JtRGF0YVRvVVJMKTogUmVuYW1lZCBmcm9tIHRyYW5zZmVyTWFpbHRvUG9zdEZvcm1EYXRhVG9V
cmwsCisgICAgICAgICAgICByZW1vdmVkIGNsZWFyaW5nIG91dCBvZiB0aGUgRm9ybURhdGEgYW5k
IG1vdmVkIGl0IHRvIGEgbmV3IHBsYWNlIChuZXh0IHRvIHRoZSBjYWxsIHNpdGUpLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybURhdGEpOiBSZW5hbWVkIGZy
b20gY3JlYXRlRm9ybURhdGEsIG1vdmVkIHRoZSBsb2dpYyBvZgorICAgICAgICAgICAgcHJlcGFy
ZWluZyBGb3JtRGF0YSBoZXJlLCBpbmNsdWRpbmcgdGhlIHVzZSBvZiBhcHBlbmRNYWlsdG9Qb3N0
Rm9ybURhdGFUb1VSTC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6c3VibWl0
KTogQ29uc29saWRhdGVkIG11bHRpcGxlIGludm9jYXRpb25zIG9mIHN1Ym1pdEZvcm0oKS4KKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOiBSZW5hbWVkIGNyZWF0ZUZvcm1EYXRhIHRv
IHByZXBhcmVGb3JtRGF0YS4KKwogMjAxMC0wNi0wMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAppbmRleCBjMTk5MzNhZGI0ODMzY2M0MGYxNmUwZTliNjU4ZDU3YzhlNmIwZjUw
Li4yN2Y3YzhmYzdmNTQxZmMwYzQwODg5NzE1MTI0Yzg0MWMyYjQyYzEzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcApAQCAtMjAwLDggKzIwMCwzOCBAQCBUZXh0RW5jb2RpbmcgSFRNTEZvcm1F
bGVtZW50OjpkYXRhRW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Zvcm1EYXRhQnVpbGRl
ci5kYXRhRW5jb2RpbmcoZG9jdW1lbnQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEhU
TUxGb3JtRWxlbWVudDo6Y3JlYXRlRm9ybURhdGEoKQorc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRv
UG9zdEZvcm1EYXRhVG9VUkwoS1VSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ1R5cGUpCiB7CisgICAgU3RyaW5nIGJvZHkgPSBkYXRhLmZsYXR0ZW5U
b1N0cmluZygpOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuY29kaW5nVHlwZSwgInRl
eHQvcGxhaW4iKSkgeworICAgICAgICAvLyBDb252ZW50aW9uIHNlZW1zIHRvIGJlIHRvIGRlY29k
ZSwgYW5kIHMvJi9cclxuLy4gQWxzbywgc3BhY2VzIGFyZSBlbmNvZGVkIGFzICUyMC4KKyAgICAg
ICAgYm9keSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhib2R5LnJlcGxhY2UoJyYnLCAiXHJc
biIpLnJlcGxhY2UoJysnLCAnICcpICsgIlxyXG4iKTsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hh
cj4gYm9keURhdGE7CisgICAgYm9keURhdGEuYXBwZW5kKCJib2R5PSIsIDUpOworICAgIEZvcm1E
YXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51dGY4KCkp
OworICAgIGJvZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXplKCkpLnJl
cGxhY2UoJysnLCAiJTIwIik7CisKKyAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKKyAg
ICBpZiAoIXF1ZXJ5LmlzRW1wdHkoKSkKKyAgICAgICAgcXVlcnkuYXBwZW5kKCcmJyk7CisgICAg
cXVlcnkuYXBwZW5kKGJvZHkpOworICAgIHVybC5zZXRRdWVyeShxdWVyeSk7Cit9CisKK1Bhc3NS
ZWZQdHI8Rm9ybURhdGE+IEhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvcm1EYXRhKCkKK3sKKyAg
ICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNQb3N0TWV0aG9kKCkpIHsKKyAgICAgICAgaWYgKG1f
Zm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXkgZmlyZSBhIERPTSBNdXRhdGlvbiBFdmVudC4g
RG8gd2UgcmVhbGx5IHdhbnQgdGhpcyBoZXJlPworICAgICAgICAgICAgc2V0RW5jdHlwZSgiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CisgICAgICAgICAgICBBU1NFUlQoIW1f
Zm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZQorICAgICAgICBtX2Zvcm1EYXRhQnVpbGRlci5zZXRJc011bHRpUGFydEZvcm0oZmFsc2UpOwor
CiAgICAgUmVmUHRyPERPTUZvcm1EYXRhPiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVh
dGUoZGF0YUVuY29kaW5nKCkuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzW2ldOwpAQCAtMjA5LDcgKzIzOSwyMSBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1M
Rm9ybUVsZW1lbnQ6OmNyZWF0ZUZvcm1EYXRhKCkKICAgICAgICAgICAgIGNvbnRyb2wtPmFwcGVu
ZEZvcm1EYXRhKCpkb21Gb3JtRGF0YSwgbV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3Jt
KCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gKG1fZm9ybURhdGFC
dWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKSA/IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoKmRv
bUZvcm1EYXRhLCBkb2N1bWVudCgpKSA6IEZvcm1EYXRhOjpjcmVhdGUoKmRvbUZvcm1EYXRhKTsK
KyAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdDsKKworICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRl
ci5pc011bHRpUGFydEZvcm0oKSkKKyAgICAgICAgcmVzdWx0ID0gRm9ybURhdGE6OmNyZWF0ZU11
bHRpUGFydCgqZG9tRm9ybURhdGEsIGRvY3VtZW50KCkpOworICAgIGVsc2UgeworICAgICAgICBy
ZXN1bHQgPSBGb3JtRGF0YTo6Y3JlYXRlKCpkb21Gb3JtRGF0YSk7CisgICAgICAgIGlmIChtX2Zv
cm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSAmJiBpc01haWx0b0Zvcm0oKSkgeworICAgICAg
ICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQg
aW50byB0aGUgVVJMLgorICAgICAgICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChtX3VybCk7CisgICAgICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCh1
cmwsICpyZXN1bHQsIG1fZm9ybURhdGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKKyAgICAgICAg
ICAgIG1fdXJsID0gdXJsLnN0cmluZygpOworCisgICAgICAgICAgICByZXN1bHQgPSBGb3JtRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICByZXN1bHQtPnNldElkZW50aWZp
ZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAg
LTMwNCwyOCArMzQ4LDYgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVTdWJtaXQoRXZl
bnQqIGV2ZW50KQogICAgIHJldHVybiBtX2RvaW5nc3VibWl0OwogfQogCi1zdGF0aWMgdm9pZCB0
cmFuc2Zlck1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFJlZlB0cjxGb3JtRGF0YT4mIGRhdGEsIEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCi17Ci0gICAgU3RyaW5nIGJvZHkg
PSBkYXRhLT5mbGF0dGVuVG9TdHJpbmcoKTsKLSAgICBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgp
OwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuY29kaW5nVHlwZSwgInRleHQvcGxhaW4i
KSkgewotICAgICAgICAvLyBDb252ZW50aW9uIHNlZW1zIHRvIGJlIHRvIGRlY29kZSwgYW5kIHMv
Ji9cclxuLy4gQWxzbywgc3BhY2VzIGFyZSBlbmNvZGVkIGFzICUyMC4KLSAgICAgICAgYm9keSA9
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhib2R5LnJlcGxhY2UoJyYnLCAiXHJcbiIpLnJlcGxh
Y2UoJysnLCAnICcpICsgIlxyXG4iKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8Y2hhcj4gYm9keURh
dGE7Ci0gICAgYm9keURhdGEuYXBwZW5kKCJib2R5PSIsIDUpOwotICAgIEZvcm1EYXRhQnVpbGRl
cjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShib2R5RGF0YSwgYm9keS51dGY4KCkpOwotICAgIGJv
ZHkgPSBTdHJpbmcoYm9keURhdGEuZGF0YSgpLCBib2R5RGF0YS5zaXplKCkpLnJlcGxhY2UoJysn
LCAiJTIwIik7Ci0KLSAgICBTdHJpbmcgcXVlcnkgPSB1cmwucXVlcnkoKTsKLSAgICBpZiAoIXF1
ZXJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcXVlcnkuYXBwZW5kKCcmJyk7Ci0gICAgcXVlcnkuYXBw
ZW5kKGJvZHkpOwotICAgIHVybC5zZXRRdWVyeShxdWVyeSk7Ci19Ci0KIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjpzdWJtaXQoRnJhbWUqIGphdmFTY3JpcHRBY3RpdmVGcmFtZSkKIHsKICAgICBpZiAo
amF2YVNjcmlwdEFjdGl2ZUZyYW1lKQpAQCAtMzc5LDI5ICs0MDEsMTAgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZlbnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24s
IGJvb2wgbG9ja0gKICAgICBpZiAobV91cmwuaXNFbXB0eSgpKQogICAgICAgICBtX3VybCA9IGRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpOwogCi0gICAgaWYgKG1fZm9ybURhdGFCdWlsZGVyLmlz
UG9zdE1ldGhvZCgpKSB7Ci0gICAgICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFy
dEZvcm0oKSAmJiBpc01haWx0b0Zvcm0oKSkgewotICAgICAgICAgICAgc2V0RW5jdHlwZSgiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1f
Zm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFJlZlB0cjxGb3JtRGF0YT4gZGF0YSA9IGNyZWF0ZUZvcm1EYXRhKCk7Ci0gICAgICAgIGlmICgh
bV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpIHsKLQotICAgICAgICAgICAgaWYg
KGlzTWFpbHRvRm9ybSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBk
YXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQgaW50byB0aGUgVVJMLgotICAgICAgICAgICAg
ICAgIEtVUkwgdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwobV91cmwpOwotICAgICAgICAg
ICAgICAgIHRyYW5zZmVyTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoZGF0YSwgdXJsLCBtX2Zvcm1E
YXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSk7Ci0gICAgICAgICAgICAgICAgbV91cmwgPSB1cmwu
c3RyaW5nKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
c3VibWl0Rm9ybSgiUE9TVCIsIG1fdXJsLCBkYXRhLnJlbGVhc2UoKSwgbV90YXJnZXQsIG1fZm9y
bURhdGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpLCBTdHJpbmcoKSwgbG9ja0hpc3RvcnksIGV2ZW50
LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPnN1Ym1pdEZvcm0oIlBPU1QiLCBtX3VybCwgZGF0YS5nZXQoKSwgbV90YXJn
ZXQsIG1fZm9ybURhdGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpLCBkYXRhLT5ib3VuZGFyeSgpLmRh
dGEoKSwgbG9ja0hpc3RvcnksIGV2ZW50LCBmb3JtU3RhdGUucmVsZWFzZSgpKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX2Zvcm1EYXRhQnVpbGRlci5zZXRJc011bHRpUGFydEZvcm0oZmFsc2Up
OwotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnN1Ym1pdEZvcm0oIkdFVCIsIG1fdXJsLCBjcmVh
dGVGb3JtRGF0YSgpLCBtX3RhcmdldCwgU3RyaW5nKCksIFN0cmluZygpLCBsb2NrSGlzdG9yeSwg
ZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNlKCkpOwotICAgIH0KKyAgICBSZWZQdHI8Rm9ybURhdGE+
IGRhdGEgPSBwcmVwYXJlRm9ybURhdGEoKTsKKyAgICBTdHJpbmcgYm91bmRhcnkgPSBtX2Zvcm1E
YXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSA/IGRhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpIDog
U3RyaW5nKCk7CisgICAgY29uc3QgY2hhciogbWV0aG9kID0gbV9mb3JtRGF0YUJ1aWxkZXIuaXNQ
b3N0TWV0aG9kKCkgPyAiUE9TVCIgOiAiR0VUIjsKKyAgICBmcmFtZS0+bG9hZGVyKCktPnN1Ym1p
dEZvcm0obWV0aG9kLCBtX3VybCwgZGF0YS5yZWxlYXNlKCksIG1fdGFyZ2V0LCBtX2Zvcm1EYXRh
QnVpbGRlci5lbmNvZGluZ1R5cGUoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCwgZm9y
bVN0YXRlLnJlbGVhc2UoKSk7CiAKICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24gJiYgZmly
c3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uKQogICAgICAgICBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRC
dXR0b24tPnNldEFjdGl2YXRlZFN1Ym1pdChmYWxzZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5k
ZXggYTQ5ZjQ0MzllMjg1ZTMzOWZhYjJkNmUxMjhhZGVkNmViMmQ3NWU3Mi4uYWFmNzczYmJhYTEx
MTg3OWJiMDZkZDgwMWY4MTExOWYwMmM2NjM4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAt
MTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzTWFpbHRvRm9ybSgpIGNvbnN0
OwogICAgIFRleHRFbmNvZGluZyBkYXRhRW5jb2RpbmcoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBjcmVhdGVGb3JtRGF0YSgpOworICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHBy
ZXBhcmVGb3JtRGF0YSgpOwogICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXgoSFRNTEZvcm1D
b250cm9sRWxlbWVudCopOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lvbiBz
aG91bGQgYmUgcHJvY2VlZGVkLgogICAgIGJvb2wgdmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50
Kik7Cg==
</data>
<flag name="review"
          id="42225"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>