<?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>36762</bug_id>
          
          <creation_ts>2010-03-29 09:57:22 -0700</creation_ts>
          <short_desc>Forms with autocomplete=off should not consume saved state</short_desc>
          <delta_ts>2010-04-02 11:31:36 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23346</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>benjie</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>205503</commentid>
    <comment_count>0</comment_count>
    <who name="">benjie</who>
    <bug_when>2010-03-29 09:57:22 -0700</bug_when>
    <thetext>This was reported in bug 23346 first, and Kent had patched in and attached a patch in bug 23346. But since 23346 describes multiple bugs, I am creating this new bug to keep track of this particular item.

The bug: autocomplete forms currently consume saved state, when WebKit is re-filling forms with previous values (on user back button action). They did not produce saved states earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206376</commentid>
    <comment_count>1</comment_count>
      <attachid>52132</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-30 23:51:13 -0700</bug_when>
    <thetext>Created attachment 52132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206668</commentid>
    <comment_count>2</comment_count>
      <attachid>52132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 12:53:47 -0700</bug_when>
    <thetext>Comment on attachment 52132
Patch

&gt; -    // Assuming we&apos;re still in a Form, respect the Form&apos;s setting
&gt; -    if (HTMLFormElement* form = this-&gt;form())
&gt; -        return form-&gt;autoComplete();
&gt; -    
&gt; -    // The default is true
&gt; -    return true;
&gt; +    return HTMLFormControlElementWithState::autoComplete();

The change log does not mention this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207068</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 02:18:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 52132 [details])
&gt; &gt; -    // Assuming we&apos;re still in a Form, respect the Form&apos;s setting
&gt; &gt; -    if (HTMLFormElement* form = this-&gt;form())
&gt; &gt; -        return form-&gt;autoComplete();
&gt; &gt; -    
&gt; &gt; -    // The default is true
&gt; &gt; -    return true;
&gt; &gt; +    return HTMLFormControlElementWithState::autoComplete();
&gt; 
&gt; The change log does not mention this change.

I think ChangeLog mentions it.  The behavior of this function won&apos;t be changed.
&gt;         * html/HTMLInputElement.cpp:
&gt;        (WebCore::HTMLInputElement::autoComplete):
&gt;          Use HTMLFormControlElementWithState::autoComplete().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207497</commentid>
    <comment_count>4</comment_count>
      <attachid>52132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 16:50:59 -0700</bug_when>
    <thetext>Comment on attachment 52132
Patch

&gt;  void HTMLFormControlElementWithState::finishParsingChildren()
&gt;  {
&gt;      HTMLFormControlElement::finishParsingChildren();
&gt; +    if (!autoComplete())
&gt; +        return;
&gt;      Document* doc = document();
&gt;      if (doc-&gt;hasStateForNewFormElements()) {
&gt;          String state;

This code change needs a comment. It&apos;s not at all clear why autoComplete has anything to do with restoring state; people should not have to look at change history to find out why. The comment will be a &quot;why&quot; comment.

&gt;  {
&gt;      if (m_autocomplete != Uninitialized)
&gt;          return m_autocomplete == On;
&gt; -    
&gt; -    // Assuming we&apos;re still in a Form, respect the Form&apos;s setting
&gt; -    if (HTMLFormElement* form = this-&gt;form())
&gt; -        return form-&gt;autoComplete();
&gt; -    
&gt; -    // The default is true
&gt; -    return true;
&gt; +    return HTMLFormControlElementWithState::autoComplete();
&gt;  }

The normal idiom when calling through to the base class is to name the immediate base. So you should write this as &quot;return HTMLTextFormControlElement::autoComplete()&quot;.

&gt;  bool HTMLSelectElement::saveFormControlState(String&amp; value) const
&gt;  {
&gt; +    if (!autoComplete())
&gt; +        return false;
&gt;      return SelectElement::saveFormControlState(m_data, this, value);
&gt;  }

Needs a &quot;why&quot; comment. But also, I suggest refactoring so you can put this logic into HTMLFormControlElementWithState. We don&apos;t want the implementers of each type of form control to have to get this right. And we also don&apos;t want the rules about saving to be in a different class than the rules about restoring.

A good way to do that would be to change the type of the argument to registerFormElementWithState to HTMLFormControlElementWithState*. Then change that function to call a non-virtual HTMLFormControlElementWithState function that checks autoComplete and then turns around and calls saveFormControlState. And you could move the saveFormControlState function from Element down into HTMLFormControlElementWithState.

&gt;  bool HTMLTextAreaElement::saveFormControlState(String&amp; result) const
&gt;  {
&gt; +    if (!autoComplete())
&gt; +        return false;
&gt;      result = value();
&gt;      return true;
&gt;  }

Needs a &quot;why&quot; comment.

review- because of the comments, but I think the change with a bit of cleanup would be more foolproof. Lets put all the responsibility for deciding how to handle state into a single place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207705</commentid>
    <comment_count>5</comment_count>
      <attachid>52382</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 23:28:21 -0700</bug_when>
    <thetext>Created attachment 52382
Proposed patch (rev.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207716</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 23:37:25 -0700</bug_when>
    <thetext>Thank you for reviewing.

(In reply to comment #4)
&gt; (From update of attachment 52132 [details])
&gt; &gt;  void HTMLFormControlElementWithState::finishParsingChildren()
&gt; &gt;  {
&gt; &gt;      HTMLFormControlElement::finishParsingChildren();
&gt; &gt; +    if (!autoComplete())
&gt; &gt; +        return;
&gt; 
&gt; This code change needs a comment. It&apos;s not at all clear why autoComplete has
&gt; anything to do with restoring state; people should not have to look at change
&gt; history to find out why. The comment will be a &quot;why&quot; comment.

Added a comment.

&gt; The normal idiom when calling through to the base class is to name the
&gt; immediate base. So you should write this as &quot;return
&gt; HTMLTextFormControlElement::autoComplete()&quot;.

It was just a mistake.  Fixed.

&gt; 
&gt; &gt;  bool HTMLSelectElement::saveFormControlState(String&amp; value) const
&gt; &gt;  {
&gt; &gt; +    if (!autoComplete())
&gt; &gt; +        return false;
&gt; &gt;      return SelectElement::saveFormControlState(m_data, this, value);
&gt; &gt;  }
&gt; 
&gt; Needs a &quot;why&quot; comment. But also, I suggest refactoring so you can put this
&gt; logic into HTMLFormControlElementWithState. We don&apos;t want the implementers of
&gt; each type of form control to have to get this right. And we also don&apos;t want the
&gt; rules about saving to be in a different class than the rules about restoring.
&gt; 
&gt; A good way to do that would be to change the type of the argument to
&gt; registerFormElementWithState to HTMLFormControlElementWithState*. Then change
&gt; that function to call a non-virtual HTMLFormControlElementWithState function
&gt; that checks autoComplete and then turns around and calls saveFormControlState.
&gt; And you could move the saveFormControlState function from Element down into
&gt; HTMLFormControlElementWithState.

I understand your advice.  But we can&apos;t do it because WML Form also uses this save/restore infrastructure, and we don&apos;t have a common parent class of HTMLFormControlElement and WMLFormControlElement. If you think we should introduce such common parent, I&apos;ll make another patch.

So, I introduced Element::shouldSaveAndRestoreFormControlState().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207956</commentid>
    <comment_count>7</comment_count>
      <attachid>52382</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 11:31:31 -0700</bug_when>
    <thetext>Comment on attachment 52382
Proposed patch (rev.2)

Clearing flags on attachment: 52382

Committed r57012: &lt;http://trac.webkit.org/changeset/57012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207957</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-02 11:31:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52132</attachid>
            <date>2010-03-30 23:51:13 -0700</date>
            <delta_ts>2010-04-01 23:28:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36762-20100331155111.patch</filename>
            <type>text/plain</type>
            <size>8176</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYWEwZTNlLi5mYTc4MjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvcm1zIHdpdGggYXV0b2NvbXBsZXRlPW9m
ZiBzaG91bGQgbm90IGNvbnN1bWUgc2F2ZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NzYyCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0
YXRlLXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUt
Zm9ybS5odG1sOiBBZGRlZC4KKwogMjAxMC0wMy0zMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxl
dGUtZm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3Rv
cmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44YmFjZTQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCB0byBOT1QgcmVzdG9yZSBmb3JtIHN0YXRl
IHRvIGEgZm9ybSB3aXRoIGF1dG9jb21wbGV0ZT1vZmYuCisKK0NvbnRyb2xzIGluIHRoZSBmaXJz
dCBmb3JtIHNob3VsZCBoYXZlIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiaW5wdXQxIikudmFsdWUgaXMgIiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRleHRhcmVhMSIpLnZhbHVlIGlzICIiCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzZWxlY3QxIikudmFsdWUgaXMgIk1hYyIKK0NvbnRyb2xzIGluIHRoZSBzZWNvbmQg
Zm9ybSBzaG91bGQgaGF2ZSBlZGl0ZWQgdmFsdWVzOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaW5wdXQyIikudmFsdWUgaXMgInZhbHVlMiIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRleHRhcmVhMiIpLnZhbHVlIGlzICJnb29kIgorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2VsZWN0MiIpLnZhbHVlIGlzICJCU0QiCisKKyAgCisgIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUt
Zm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1h
dXRvY29tcGxldGUtZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmYwMDk5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRl
LXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwKQEAgLTAsMCArMSw1NiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0IHRvIE5PVCByZXN0b3JlIGZvcm0gc3RhdGUgdG8gYSBm
b3JtIHdpdGggYXV0b2NvbXBsZXRlPW9mZi48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPGlucHV0IGlkPWVtcHR5T25GaXJzdFZpc2l0PgorPGRpdiBpZD1wYXJlbnQ+Cis8Zm9ybSBh
Y3Rpb249ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlzdG9yeS5iYWNrKCkmbHQ7L3NjcmlwdD4i
IGlkPWZvcm0xIGF1dG9jb21wbGV0ZT1vZmY+Cis8aW5wdXQgbmFtZT11c2VyIGlkPWlucHV0MT4K
Kzx0ZXh0YXJlYSBuYW1lPWNvbW1lbnQgaWQ9dGV4dGFyZWExPjwvdGV4dGFyZWE+Cis8c2VsZWN0
IG5hbWU9b3MgaWQ9c2VsZWN0MT48b3B0aW9uPk1hYzxvcHRpb24+V2luZG93czxvcHRpb24+QlNE
PC9zZWxlY3Q+Cis8L2Zvcm0+Cis8Zm9ybSBhY3Rpb249ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+
aGlzdG9yeS5iYWNrKCkmbHQ7L3NjcmlwdD4iIGlkPWZvcm0yPgorPGlucHV0IG5hbWU9dXNlciBp
ZD1pbnB1dDI+Cis8dGV4dGFyZWEgbmFtZT1jb21tZW50IGlkPXRleHRhcmVhMj48L3RleHRhcmVh
PgorPHNlbGVjdCBuYW1lPW9zIGlkPXNlbGVjdDI+PG9wdGlvbj5NYWM8b3B0aW9uPldpbmRvd3M8
b3B0aW9uPkJTRDwvc2VsZWN0PgorPC9mb3JtPgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK3ZhciBw
YXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7Cit2YXIgc3RhdGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlPbkZpcnN0VmlzaXQnKTsKK2lmICghc3RhdGUu
dmFsdWUpIHsKKyAgICAvLyBGaXJzdCB2aXNpdC4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgc3RhdGUudmFsdWUgPSAndmlzaXRlZCc7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaW5wdXQxJykudmFsdWUgPSAndmFsdWUxJzsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dGFyZWExJykudmFsdWUgPSAnbmljZSc7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3NlbGVjdDEnKS52YWx1ZSA9ICdXaW5kb3dzJzsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXQyJykudmFsdWUgPSAndmFsdWUyJzsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGV4dGFyZWEyJykudmFsdWUgPSAnZ29vZCc7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NlbGVjdDInKS52YWx1ZSA9ICdCU0QnOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdmb3JtMicpLnN1Ym1pdCgpOworfSBlbHNlIHsKKyAgICAvLyBTZWNvbmQgdmlzaXQu
CisgICAgZGVidWcoJ0NvbnRyb2xzIGluIHRoZSBmaXJzdCBmb3JtIHNob3VsZCBoYXZlIHRoZWly
IGRlZmF1bHQgdmFsdWVzOicpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiaW5wdXQxIikudmFsdWUnLCAnIiInKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRleHRhcmVhMSIpLnZhbHVlJywgJyIiJyk7CisgICAgc2hvdWxkQmUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzZWxlY3QxIikudmFsdWUnLCAnIk1hYyInKTsKKyAgICBkZWJ1
ZygnQ29udHJvbHMgaW4gdGhlIHNlY29uZCBmb3JtIHNob3VsZCBoYXZlIGVkaXRlZCB2YWx1ZXM6
Jyk7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dDIiKS52YWx1
ZScsICcidmFsdWUyIicpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGV4dGFyZWEyIikudmFsdWUnLCAnImdvb2QiJyk7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzZWxlY3QyIikudmFsdWUnLCAnIkJTRCInKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ0Y2Y0Yy4uNmIxODQxNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAxMC0wMy0zMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9ybXMgd2l0
aCBhdXRvY29tcGxldGU9b2ZmIHNob3VsZCBub3QgY29uc3VtZSBzYXZlZCBzdGF0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3NjIKKworICAgICAg
ICBUZXN0OiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3Jt
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjphdXRvQ29tcGxl
dGUpOgorICAgICAgICAgIEFkZGVkLiBJdCByZXR1cm4gYXV0b2NvbXBsZXRlIHN0YXRlIG9mIHRo
ZSBmb3JtLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAgICAgICBEbyBub3QgcmVzdG9yZSBzdGF0
ZSBpZiBhdXRvQ29tcGxldGUoKSBpcyBmYWxzZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaDogRGVjbGFyZSBhdXRvQ29tcGxldGUoKS4KKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
YXV0b0NvbXBsZXRlKToKKyAgICAgICAgICBVc2UgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6YXV0b0NvbXBsZXRlKCkuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9s
U3RhdGUpOgorICAgICAgICAgIFNraXAgc2F0ZSBzYXZpbmcgaWYgYXV0b0NvbXBsZXRlKCkgaXMg
dHJ1ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUpOiBkaXR0
by4KKwogMjAxMC0wMy0zMCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBjODBmYjM2Li45NDg4N2QwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00MjIsOSArNDIyLDE4IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwogfQogCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmF1dG9D
b21wbGV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFmb3JtKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBmb3JtKCktPmF1dG9Db21wbGV0ZSgpOworfQorCiB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgaWYg
KCFhdXRvQ29tcGxldGUoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIERvY3VtZW50KiBkb2MgPSBk
b2N1bWVudCgpOwogICAgIGlmIChkb2MtPmhhc1N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKCkpIHsK
ICAgICAgICAgU3RyaW5nIHN0YXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
aW5kZXggOWI2Yzk0My4uYjQzYTU5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHVibGljOgogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1M
Rm9ybUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgYXV0b0NvbXBsZXRlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggNmEyMTRhYi4uZjUwODIxNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtMTU1LDEzICsxNTUsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OmF1dG9Db21wbGV0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYXV0b2NvbXBsZXRlICE9IFVuaW5p
dGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiBtX2F1dG9jb21wbGV0ZSA9PSBPbjsKLSAgICAKLSAg
ICAvLyBBc3N1bWluZyB3ZSdyZSBzdGlsbCBpbiBhIEZvcm0sIHJlc3BlY3QgdGhlIEZvcm0ncyBz
ZXR0aW5nCi0gICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHRoaXMtPmZvcm0oKSkKLSAg
ICAgICAgcmV0dXJuIGZvcm0tPmF1dG9Db21wbGV0ZSgpOwotICAgIAotICAgIC8vIFRoZSBkZWZh
dWx0IGlzIHRydWUKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6YXV0b0NvbXBsZXRlKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQ2hl
Y2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJhZGlvQnV0dG9ucyhjb25zdCBIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMjljNWIzNy4u
ZDY5ZjQ5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0xODEsNiArMTgxLDgg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nICZ2YWx1ZSkK
IAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKKyAgICBpZiAoIWF1dG9Db21wbGV0ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKG1f
ZGF0YSwgdGhpcywgdmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggZWM1ZjIyZC4uYTdlYzRiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtODYsNiArODYsOCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6
c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiB7CisgICAgaWYgKCFh
dXRvQ29tcGxldGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IHZhbHVl
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52382</attachid>
            <date>2010-04-01 23:28:21 -0700</date>
            <delta_ts>2010-04-02 11:31:31 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>bug-36762-20100402152818.patch</filename>
            <type>text/plain</type>
            <size>10211</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTJiYjFmLi5iMGVlZGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvcm1zIHdpdGggYXV0b2NvbXBsZXRlPW9m
ZiBzaG91bGQgbm90IGNvbnN1bWUgc2F2ZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NzYyCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0
YXRlLXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUt
Zm9ybS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNC0wMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tYXV0b2NvbXBs
ZXRlLWZvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0
b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhY2U0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tYXV0b2NvbXBsZXRlLWZvcm0tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdG8gTk9UIHJlc3RvcmUgZm9ybSBzdGF0
ZSB0byBhIGZvcm0gd2l0aCBhdXRvY29tcGxldGU9b2ZmLgorCitDb250cm9scyBpbiB0aGUgZmly
c3QgZm9ybSBzaG91bGQgaGF2ZSB0aGVpciBkZWZhdWx0IHZhbHVlczoKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlucHV0MSIpLnZhbHVlIGlzICIiCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0YXJlYTEiKS52YWx1ZSBpcyAiIgorUEFTUyBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2VsZWN0MSIpLnZhbHVlIGlzICJNYWMiCitDb250cm9scyBpbiB0aGUgc2Vjb25k
IGZvcm0gc2hvdWxkIGhhdmUgZWRpdGVkIHZhbHVlczoKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlucHV0MiIpLnZhbHVlIGlzICJ2YWx1ZTIiCitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXh0YXJlYTIiKS52YWx1ZSBpcyAiZ29vZCIKK1BBU1MgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNlbGVjdDIiKS52YWx1ZSBpcyAiQlNEIgorCisgIAorICAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tYXV0b2NvbXBsZXRl
LWZvcm0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24t
YXV0b2NvbXBsZXRlLWZvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mMDA5OWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0
ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1sCkBAIC0wLDAgKzEsNTYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdCB0byBOT1QgcmVzdG9yZSBmb3JtIHN0YXRlIHRvIGEg
Zm9ybSB3aXRoIGF1dG9jb21wbGV0ZT1vZmYuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxpbnB1dCBpZD1lbXB0eU9uRmlyc3RWaXNpdD4KKzxkaXYgaWQ9cGFyZW50PgorPGZvcm0g
YWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+
IiBpZD1mb3JtMSBhdXRvY29tcGxldGU9b2ZmPgorPGlucHV0IG5hbWU9dXNlciBpZD1pbnB1dDE+
Cis8dGV4dGFyZWEgbmFtZT1jb21tZW50IGlkPXRleHRhcmVhMT48L3RleHRhcmVhPgorPHNlbGVj
dCBuYW1lPW9zIGlkPXNlbGVjdDE+PG9wdGlvbj5NYWM8b3B0aW9uPldpbmRvd3M8b3B0aW9uPkJT
RDwvc2VsZWN0PgorPC9mb3JtPgorPGZvcm0gYWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0
Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMj4KKzxpbnB1dCBuYW1lPXVzZXIg
aWQ9aW5wdXQyPgorPHRleHRhcmVhIG5hbWU9Y29tbWVudCBpZD10ZXh0YXJlYTI+PC90ZXh0YXJl
YT4KKzxzZWxlY3QgbmFtZT1vcyBpZD1zZWxlY3QyPjxvcHRpb24+TWFjPG9wdGlvbj5XaW5kb3dz
PG9wdGlvbj5CU0Q8L3NlbGVjdD4KKzwvZm9ybT4KKzwvZGl2PgorCis8c2NyaXB0PgorCit2YXIg
cGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudCcpOwordmFyIHN0YXRlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtcHR5T25GaXJzdFZpc2l0Jyk7CitpZiAoIXN0YXRl
LnZhbHVlKSB7CisgICAgLy8gRmlyc3QgdmlzaXQuCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHN0YXRlLnZhbHVlID0gJ3Zpc2l0ZWQnOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lucHV0MScpLnZhbHVlID0gJ3ZhbHVlMSc7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RleHRhcmVhMScpLnZhbHVlID0gJ25pY2UnOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzZWxlY3QxJykudmFsdWUgPSAnV2luZG93cyc7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2lucHV0MicpLnZhbHVlID0gJ3ZhbHVlMic7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3RleHRhcmVhMicpLnZhbHVlID0gJ2dvb2QnOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzZWxlY3QyJykudmFsdWUgPSAnQlNEJzsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZm9ybTInKS5zdWJtaXQoKTsKK30gZWxzZSB7CisgICAgLy8gU2Vjb25kIHZpc2l0
LgorICAgIGRlYnVnKCdDb250cm9scyBpbiB0aGUgZmlyc3QgZm9ybSBzaG91bGQgaGF2ZSB0aGVp
ciBkZWZhdWx0IHZhbHVlczonKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImlucHV0MSIpLnZhbHVlJywgJyIiJyk7CisgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0YXJlYTEiKS52YWx1ZScsICciIicpOworICAgIHNob3VsZEJlKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0MSIpLnZhbHVlJywgJyJNYWMiJyk7CisgICAgZGVi
dWcoJ0NvbnRyb2xzIGluIHRoZSBzZWNvbmQgZm9ybSBzaG91bGQgaGF2ZSBlZGl0ZWQgdmFsdWVz
OicpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQyIikudmFs
dWUnLCAnInZhbHVlMiInKTsKKyAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHRhcmVhMiIpLnZhbHVlJywgJyJnb29kIicpOworICAgIHNob3VsZEJlKCdkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2VsZWN0MiIpLnZhbHVlJywgJyJCU0QiJyk7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVhNTY4NWQuLjM2MDYxYjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTAtMDMtMzAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvcm1zIHdp
dGggYXV0b2NvbXBsZXRlPW9mZiBzaG91bGQgbm90IGNvbnN1bWUgc2F2ZWQgc3RhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NzYyCisgICAgICAg
IAorICAgICAgICBJbnRyb2R1Y2UgRWxlbWVudDo6c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgdG8gY2hlY2sKKyAgICAgICAgaWYgd2Ugc2hvdWxkIHNhdmUgYW5kIHJlc3Rv
cmUgY29udHJvbCBzdGF0ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3Rv
cmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9ybUVsZW1lbnRzU3RhdGUpOiBD
aGVjayBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKS4KKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hvdWxkU2F2ZUFuZFJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKTogQWRkZWQuIEl0IGp1c3QgcmV0dXJucyB0cnVlLgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjphdXRvQ29tcGxldGUpOgorICAgICAg
ICAgIEFkZGVkLiBJdCByZXR1cm4gYXV0b2NvbXBsZXRlIHN0YXRlIG9mIHRoZSBmb3JtLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6c2hvdWxkU2F2
ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgICBBZGRlZC4gSXQgcmV0dXJu
cyB0aGUgcmVzdWx0IG9mIGF1dG9Db21wbGV0ZSgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAg
ICAgICBEbyBub3QgcmVzdG9yZSBzdGF0ZSBpZiBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoKSBpcyBmYWxzZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaDogRGVjbGFyZSBhdXRvQ29tcGxldGUoKSBhbmQgb3ZlcnJpZGluZyBtZXRob2RzLgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjphdXRvQ29tcGxldGUpOgorICAgICAgICAgIFJlZHVjZSBjb2RlIGJ5IHVz
aW5nIGF1dG9Db21wbGV0ZSgpIG9mIHRoZSBwYXJlbnQgY2xhc3MuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgICAgUmVt
b3ZlIHRoZSBhdXRvQ29tcGxldGUoKSBjaGVjay4gRG9jdW1lbnQ6OmZvcm1FbGVtZW50c1N0YXRl
KCkgZG9lcyBlcXVpdmFsZW50IGNoZWNrLgorCiAyMDEwLTA0LTAxICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGNiMmUwYmQuLmQxYjY3ZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQyMTAsMTMgKzQy
MTAsMTUgQEAgVmVjdG9yPFN0cmluZz4gRG9jdW1lbnQ6OmZvcm1FbGVtZW50c1N0YXRlKCkgY29u
c3QKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgSXRl
cmF0b3I7CiAgICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuZW5kKCk7
CiAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBFbGVtZW50KiBlID0gKml0OworICAgICAgICBF
bGVtZW50KiBlbGVtZW50V2l0aFN0YXRlID0gKml0OwogICAgICAgICBTdHJpbmcgdmFsdWU7Ci0g
ICAgICAgIGlmIChlLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSh2YWx1ZSkpIHsKLSAgICAgICAgICAg
IHN0YXRlVmVjdG9yLmFwcGVuZChlLT5mb3JtQ29udHJvbE5hbWUoKS5zdHJpbmcoKSk7Ci0gICAg
ICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZS0+Zm9ybUNvbnRyb2xUeXBlKCkuc3RyaW5nKCkp
OwotICAgICAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKHZhbHVlKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoIWVsZW1lbnRXaXRoU3RhdGUtPnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRy
b2xTdGF0ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghZWxlbWVudFdp
dGhTdGF0ZS0+c2F2ZUZvcm1Db250cm9sU3RhdGUodmFsdWUpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50V2l0aFN0YXRlLT5mb3JtQ29u
dHJvbE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50
V2l0aFN0YXRlLT5mb3JtQ29udHJvbFR5cGUoKS5zdHJpbmcoKSk7CisgICAgICAgIHN0YXRlVmVj
dG9yLmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZVZlY3RvcjsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCAzNDhlZDFjLi5jMzYzNDY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNjUsNiArMjY1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdCB7
IHJldHVybiBudWxsQXRvbTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbTsgfQogCisgICAgdmlydHVhbCBi
b29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoY29uc3QgU3RyaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCBjODBmYjM2Li5hZTk5MjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC00MjIsOSArNDIyLDI5IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfQogCiti
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmF1dG9Db21wbGV0ZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFmb3JtKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBm
b3JtKCktPmF1dG9Db21wbGV0ZSgpOworfQorCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6OnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0Cit7
CisgICAgLy8gV2UgZG9uJ3Qgc2F2ZS9yZXN0b3JlIGNvbnRyb2wgc3RhdGUgaW4gYSBmb3JtIHdp
dGggYXV0b2NvbXBsZXRlPW9mZi4KKyAgICByZXR1cm4gYXV0b0NvbXBsZXRlKCk7Cit9CisKIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKIHsKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4o
KTsKKworICAgIC8vIFdlIGRvbid0IHNhdmUgc3RhdGUgb2YgYSBjb250cm9sIHdpdGggc2hvdWxk
U2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCk9ZmFsc2UuCisgICAgLy8gQnV0IHdlIG5l
ZWQgdG8gc2tpcCByZXN0b3JpbmcgcHJvY2VzcyB0b28gYmVjYXVzZSBhIGNvbnRyb2wgaW4gYW5v
dGhlcgorICAgIC8vIGZvcm0gbWlnaHQgaGF2ZSB0aGUgc2FtZSBwYWlyIG9mIG5hbWUgYW5kIHR5
cGUgYW5kIHNhdmVkIGl0cyBzdGF0ZS4KKyAgICBpZiAoIXNob3VsZFNhdmVBbmRSZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBEb2N1bWVudCogZG9jID0g
ZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jLT5oYXNTdGF0ZUZvck5ld0Zvcm1FbGVtZW50cygpKSB7
CiAgICAgICAgIFN0cmluZyBzdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
CmluZGV4IDliNmM5NDMuLjU4YjJmYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgSFRN
TEZvcm1FbGVtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZSgpOwogCisgICAgdmlydHVhbCBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA5ZTcxOTE4Li4wZDQxZDgwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTUsMTMgKzE1NSw3IEBAIGJvb2wgSFRNTElucHV0
RWxlbWVudDo6YXV0b0NvbXBsZXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9hdXRvY29tcGxldGUg
IT0gVW5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIG1fYXV0b2NvbXBsZXRlID09IE9uOwot
ICAgIAotICAgIC8vIEFzc3VtaW5nIHdlJ3JlIHN0aWxsIGluIGEgRm9ybSwgcmVzcGVjdCB0aGUg
Rm9ybSdzIHNldHRpbmcKLSAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gdGhpcy0+Zm9y
bSgpKQotICAgICAgICByZXR1cm4gZm9ybS0+YXV0b0NvbXBsZXRlKCk7Ci0gICAgCi0gICAgLy8g
VGhlIGRlZmF1bHQgaXMgdHJ1ZQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6YXV0b0NvbXBsZXRlKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Q2hlY2tlZFJhZGlvQnV0dG9ucyYgY2hlY2tlZFJhZGlvQnV0dG9ucyhjb25zdCBIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KQpAQCAtOTExLDkgKzkwNSw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTElucHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcmIHJlc3VsdCkgY29uc3QKIHsK
LSAgICBpZiAoIWF1dG9Db21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBz
d2l0Y2ggKGlucHV0VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQlVUVE9OOgogICAgICAgICBjYXNl
IENPTE9SOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>