<?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>31446</bug_id>
          
          <creation_ts>2009-11-12 16:34:24 -0800</creation_ts>
          <short_desc>[chromium] crash in chromium when loading multipart/x-mixed-replace data</short_desc>
          <delta_ts>2010-01-12 17:07:00 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>johnnyg</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>163107</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-12 16:34:24 -0800</bug_when>
    <thetext>Here&apos;s what&apos;s happening:

1) We get some multipart/x-mixed-replace data from the server, parse the header out of it, then call WebCore::ResourceLoader::didReceiveResponse.
2) This calls through to FrameLoader::setupForReplace(), which nulls out m_documentLoader.
3) User stops the load and tries to navigate to a different page.
4) When navigating to a different page, we call through to ResourceLoadNotifier::dispatchWillSendRequest which then 
tries to access the document loader, which is null, so we crash.

This doesn&apos;t crash in Safari because CFNetwork seems to ensures that during multipart data, 
calls to WebCore::ResourceLoader::didReceiveResponse are immediately followed by 
calls to WebCore::ResourceLoader::didReceiveData.  Since it&apos;s not possible to cancel a load between these two calls, we don&apos;t end up with the null document loader.

In Chromium, we could match CFNetwork and postpone the call to didReceiveResponse until we have some data to send with it.  This works around the crash, but WebCore seems to buffer on didReceiveData up to 1024 bytes (maybe in the document loader?  I&apos;m not sure).  This means that you never see content if each multipart chunk is less than 1024 bytes.  This doesn&apos;t impact Safari because CFNetwork just doesn&apos;t handle multipart chunks less than 1024 bytes (it merges chunks until you get at least 1024 bytes), so maybe that&apos;s expected behavior for WebCore.

I&apos;m not sure what the right fix for this is, but I&apos;ll upload a patch for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163109</commentid>
    <comment_count>1</comment_count>
      <attachid>43114</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-12 16:36:12 -0800</bug_when>
    <thetext>Created attachment 43114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163469</commentid>
    <comment_count>2</comment_count>
      <attachid>43114</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 13:18:55 -0800</bug_when>
    <thetext>Comment on attachment 43114
Patch

Needs a ChangeLog which explains what you&apos;re doing here and why.  The code might also need a comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163470</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 13:19:12 -0800</bug_when>
    <thetext>CCing loader folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163577</commentid>
    <comment_count>4</comment_count>
      <attachid>43211</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-13 16:12:39 -0800</bug_when>
    <thetext>Created attachment 43211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163578</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-13 16:13:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=43211) [details]
&gt; Patch

I&apos;ll write an http layout test once I get some feedback as to which direction to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163614</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-13 17:52:27 -0800</bug_when>
    <thetext>This seems reasonable to me, but I don&apos;t understand multi-part loading in detail.  In general, WebCore shouldn&apos;t depend on details of CFNetwork.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164020</commentid>
    <comment_count>7</comment_count>
      <attachid>43211</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-11-16 10:11:34 -0800</bug_when>
    <thetext>Comment on attachment 43211
Patch

&gt; +++ b/WebCore/loader/FrameLoader.cpp
...
&gt; +                if (isReplacing())
&gt; +                    setDocumentLoader(m_provisionalDocumentLoader.get());

In WebFrameImpl::loadData, we also call setReplacing.  Could that interact
in an interesting way with this code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164045</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-16 12:09:35 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 43211 [details])
&gt; &gt; +++ b/WebCore/loader/FrameLoader.cpp
&gt; ...
&gt; &gt; +                if (isReplacing())
&gt; &gt; +                    setDocumentLoader(m_provisionalDocumentLoader.get());
&gt; 
&gt; In WebFrameImpl::loadData, we also call setReplacing.  Could that interact
&gt; in an interesting way with this code?

As far as I can tell, WebFrameImpl::loadData is only used by WebFrameImpl::loadData (error pages), so it doesn&apos;t seem to interact with this code.

In general, lots of stuff happens when you stop/cancel a load, so it&apos;s not clear to me where the right place to put this code is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164046</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-11-16 12:10:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 43211 [details] [details])
&gt; &gt; &gt; +++ b/WebCore/loader/FrameLoader.cpp
&gt; &gt; ...
&gt; &gt; &gt; +                if (isReplacing())
&gt; &gt; &gt; +                    setDocumentLoader(m_provisionalDocumentLoader.get());
&gt; &gt; 
&gt; &gt; In WebFrameImpl::loadData, we also call setReplacing.  Could that interact
&gt; &gt; in an interesting way with this code?
&gt; 
&gt; As far as I can tell, WebFrameImpl::loadData is only used by
&gt; WebFrameImpl::loadData (error pages), so it doesn&apos;t seem to interact with this
&gt; code.

Err, WebFrameImpl::loadData is only used by WebFrameImpl::loadHTMLString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167332</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:24:24 -0800</bug_when>
    <thetext>Attachment 43211 passed the style-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168048</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-02 10:11:22 -0800</bug_when>
    <thetext>Tony, I think trying to match the behavior of CFNetwork is probably a safer route to go.  Less differences between Safari and Chrome is generally less problematic.  Instead of delaying until 1024 bytes are received, perhaps we could just delay the didReceiveResponse until we have some data to pass in a didReceiveData call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168049</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-12-02 10:13:41 -0800</bug_when>
    <thetext>Actually, doesn&apos;t the FrameLoaderClient get notified during the call to didReceiveResponse?  In that case, would the solution I just proposed really work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168074</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-12-02 11:06:51 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Actually, doesn&apos;t the FrameLoaderClient get notified during the call to
&gt; didReceiveResponse?  In that case, would the solution I just proposed really
&gt; work?

It works in that it doesn&apos;t crash, but it doesn&apos;t render anything if the content is less than 1024 bytes.  Using the suggested change (wait for data before sending the header), here&apos;s a video when the server sends 512 bytes of data:
http://ponderer.org/tests/data512.ogg
http://ponderer.org/tests/multipart-512.py

Here&apos;s a video when the server sends &gt; 1024 bytes of data:
http://ponderer.org/tests/data1024.ogg
http://ponderer.org/tests/multipart-1024.py

The ToT Chrome handles the above two cases correctly, but the renderer crashes when navigating away (not really noticeable unless you try to navigate to the same domain).

I think sending the headers right away tells the doc loader than it can render the data it has so far.  This allows data less than 1024 bytes to render immediately.  One option would be to have Chrome match CFNetwork and try to make the document render partial data.

Firefox handles both cases properly and Safari doesn&apos;t handle the 512 case because of CFNetwork merging two parts into a single document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175340</commentid>
    <comment_count>14</comment_count>
      <attachid>43211</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-28 17:45:36 -0800</bug_when>
    <thetext>Comment on attachment 43211
Patch

Looks good to me. Needs a layout test (or if this is covered by some existing test, please say so).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179678</commentid>
    <comment_count>15</comment_count>
      <attachid>46335</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-11 22:36:49 -0800</bug_when>
    <thetext>Created attachment 46335
with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179680</commentid>
    <comment_count>16</comment_count>
      <attachid>46335</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-11 22:41:02 -0800</bug_when>
    <thetext>Comment on attachment 46335
with test

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179719</commentid>
    <comment_count>17</comment_count>
      <attachid>46348</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-12 01:08:30 -0800</bug_when>
    <thetext>Created attachment 46348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179720</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-12 01:09:16 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=46348) [details]
&gt; Patch

This version should work on OSX.  This works around the CF bug mentioned above where each mulitpart piece has to be at least 512 bytes for CF to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179871</commentid>
    <comment_count>19</comment_count>
      <attachid>46348</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-12 10:10:28 -0800</bug_when>
    <thetext>Comment on attachment 46348
Patch

Clearing flags on attachment: 46348

Committed r53143: &lt;http://trac.webkit.org/changeset/53143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179872</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-12 10:10:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179983</commentid>
    <comment_count>21</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2010-01-12 14:37:33 -0800</bug_when>
    <thetext>This patch appears to cause chromium browser test failures:

[ RUN      ] ErrorPageTest.FLAKY_DNSError_GoBack2
ASSERTION FAILED: loader != m_documentLoader
(/b/slave/linux/build/src/third_party/WebKit/WebCore/loader/FrameLoader.cpp:2339 void WebCore::FrameLoader::setDocumentLoader(WebCore::DocumentLoader*))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180041</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-12 17:07:00 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; This patch appears to cause chromium browser test failures:
&gt; 
&gt; [ RUN      ] ErrorPageTest.FLAKY_DNSError_GoBack2
&gt; ASSERTION FAILED: loader != m_documentLoader
&gt; (/b/slave/linux/build/src/third_party/WebKit/WebCore/loader/FrameLoader.cpp:2339
&gt; void WebCore::FrameLoader::setDocumentLoader(WebCore::DocumentLoader*))

Crash analysis and fix in bug 33560.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43114</attachid>
            <date>2009-11-12 16:36:12 -0800</date>
            <delta_ts>2009-11-13 16:12:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31446-20091112163611.patch</filename>
            <type>text/plain</type>
            <size>646</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0NWQ0Yzc2Li4xODEyNmQ2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0yODg4LDYgKzI4ODgsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgICAgICAgICAgICAgc3RvcExvYWRpbmdTdWJm
cmFtZXMoKTsKICAgICAgICAgICAgICAgICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKKyAgICAgICAg
ICAgICAgICBpZiAoaXNSZXBsYWNpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1l
bnRMb2FkZXIobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKwogICAgICAgICAg
ICAgICAgIC8vIEZpbmlzaCByZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFu
b3RoZXIgbG9hZCBoYXNuJ3QgYmVlbiBzdGFydGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgIC8v
IGRlbGVnYXRlIGNhbGxiYWNrLgogICAgICAgICAgICAgICAgIGlmIChwZGwgPT0gbV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43211</attachid>
            <date>2009-11-13 16:12:39 -0800</date>
            <delta_ts>2010-01-11 22:36:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31446-20091113161238.patch</filename>
            <type>text/plain</type>
            <size>1634</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzRmMGMzYS4uMjM1NTI0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0xMyAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZpeCBhIGNyYXNoIGluIENocm9taXVtIHdoZW4gcmVjZWl2aW5nIG11bHRp
cGFydC94LW1peGVkLXJlcGxhY2UgZGF0YS4KKyAgICAgICAgSWYgd2Ugc3RvcCBhIG11bHRpcGFy
dCBsb2FkIGFmdGVyIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UKKyAgICAgICAg
YnV0IGJlZm9yZSBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEsIHdlIGhhdmUgYSBOVUxM
IGRvY3VtZW50CisgICAgICAgIGxvYWRlciBiZWNhdXNlIGl0IGhhcyBiZWVuIG1vdmVkIGJhY2sg
dG8gdGhlIHByb3Zpc2lvbmFsIHN0YXRlLiAgTmV3CisgICAgICAgIGxvYWRzIHRoYXQgaGFwcGVu
IGFmdGVyIHRoaXMgd2lsbCBkZXJlZmVyZW5jZSB0aGUgTlVMTCBkb2N1bWVudAorICAgICAgICBs
b2FkZXIuCisKKyAgICAgICAgV29yayBhcm91bmQgdGhpcyBieSBtb3ZpbmcgdGhlIHByb3Zpc2lv
bmFsIGRvY3VtZW50IGxvYWRlciBiYWNrIGFzCisgICAgICAgIHRoZSBkb2N1bWVudCBsb2FkZXIg
d2hlbiB0aGUgcmVxdWVzdCBpcyBzdG9wcGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0NgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogLi4vLi4vLi4vbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKwogMjAw
OS0xMS0xMSAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDVkNGM3Ni4uMTgx
MjZkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjg4OCw2ICsyODg4LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAg
ICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7CiAgICAgICAgICAgICAgICAgcGRsLT5zdG9wTG9h
ZGluZygpOwogCisgICAgICAgICAgICAgICAgaWYgKGlzUmVwbGFjaW5nKCkpCisgICAgICAgICAg
ICAgICAgICAgIHNldERvY3VtZW50TG9hZGVyKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5n
ZXQoKSk7CisKICAgICAgICAgICAgICAgICAvLyBGaW5pc2ggcmVzZXR0aW5nIHRoZSBsb2FkIHN0
YXRlLCBidXQgb25seSBpZiBhbm90aGVyIGxvYWQgaGFzbid0IGJlZW4gc3RhcnRlZCBieSB0aGUK
ICAgICAgICAgICAgICAgICAvLyBkZWxlZ2F0ZSBjYWxsYmFjay4KICAgICAgICAgICAgICAgICBp
ZiAocGRsID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcik=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46335</attachid>
            <date>2010-01-11 22:36:49 -0800</date>
            <delta_ts>2010-01-12 01:08:22 -0800</delta_ts>
            <desc>with test</desc>
            <filename>bug-31446-20100111223648.patch</filename>
            <type>text/plain</type>
            <size>4904</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZTE0ZDVmLi5jYzE4M2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MTEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciBhIENocm9taXVtIGNy
YXNoIHdoZW4gbG9hZGluZyBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlCisgICAgICAgIGRhdGEu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ2
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUt
Ym91bmRhcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL211bHRp
cGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL211bHRpcGFydC13YWl0LWJlZm9yZS1i
b3VuZGFyeS5waHA6IEFkZGVkLgorCiAyMDEwLTAxLTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZ2V0IGZpbmQta2FuYSB0ZXN0cyBwYXNzaW5nIG9u
IFF0LCBMZW9wYXJkLCBhbmQgVGlnZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL211bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRhcnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tdWx0aXBhcnQvbXVsdGlwYXJ0LXdhaXQtYmVmb3Jl
LWJvdW5kYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mZjQzY2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tdWx0
aXBhcnQvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxIEBACitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL211bHRp
cGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRhcnkuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbXVsdGlwYXJ0L211bHRpcGFydC13YWl0LWJlZm9yZS1ib3VuZGFyeS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkM2MyOGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZv
cmUtYm91bmRhcnkuaHRtbApAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBm
dW5jdGlvbiBjaGlsZExvYWRlZCgpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoIndpbmRvdy5m
cmFtZXNbJ2lmcmFtZSddLmxvY2F0aW9uID0gJ3Jlc291cmNlcy9tdWx0aXBhcnQtd2FpdC1iZWZv
cmUtYm91bmRhcnkucGhwP2RvbmU9MSciLCAwKTsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlv
biBzdWNjZXNzKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0dXMnKS5p
bm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8cCBpZD0ic3RhdHVzIj5SVU5OSU5HLi4uPC9wPgorICAg
IDxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJyZXNvdXJjZXMvbXVsdGlwYXJ0LXdhaXQtYmVmb3Jl
LWJvdW5kYXJ5LnBocCI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJv
dW5kYXJ5LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9t
dWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRhcnkucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjdjM2IxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJvdW5kYXJ5
LnBocApAQCAtMCwwICsxLDMyIEBACis8P3BocAorICAgIGlmIChpc3NldCgkX0dFVFsnZG9uZSdd
KSkgeworICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvaHRtbCIpOworICAgICAgZWNo
bygiPHNjcmlwdD5wYXJlbnQuc3VjY2VzcygpPC9zY3JpcHQ+Iik7CisgICAgICBleGl0KDApOwor
ICAgIH0KKworICAgICRib3VuZGFyeSA9ICJjdXRIZXJlIjsKKworICAgIGZ1bmN0aW9uIHNlbmRI
ZWFkZXIoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsICRib3VuZGFyeTsKKworICAgICAgICBlY2hv
KCItLSRib3VuZGFyeVxyXG4iKTsKKyAgICAgICAgZWNobygiQ29udGVudC1UeXBlOiB0ZXh0L2h0
bWxcclxuXHJcbiIpOworICAgICAgICBmbHVzaCgpOworICAgIH0KKworICAgIGhlYWRlcigiQ29u
dGVudC1UeXBlOiBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlOyBib3VuZGFyeT0kYm91bmRhcnki
KTsKKworICAgIHNlbmRIZWFkZXIoKTsKKyAgICBlY2hvKCJ0ZXN0IGh0bWxcbiIpOworICAgIGZs
dXNoKCk7CisgICAgc2VuZEhlYWRlcigpOworICAgIGVjaG8oInNlY29uZCBodG1sIik7CisgICAg
ZWNobygiPHNjcmlwdD5wYXJlbnQuY2hpbGRMb2FkZWQoKTwvc2NyaXB0PiIpOworICAgIGZsdXNo
KCk7CisgICAgc2VuZEhlYWRlcigpOworICAgIGVjaG8oInRoaXJkIGh0bWwiKTsKKyAgICBmbHVz
aCgpOworICAgIHVzbGVlcCgzMCAqIDEwMDAwMDApOworPz4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNkMjNkNC4uMzdlNDllOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMC0wMS0xMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBhIGNy
YXNoIGluIENocm9taXVtIHdoZW4gcmVjZWl2aW5nIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ug
ZGF0YS4KKyAgICAgICAgSWYgd2Ugc3RvcCBhIG11bHRpcGFydCBsb2FkIGFmdGVyIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UKKyAgICAgICAgYnV0IGJlZm9yZSBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEsIHdlIGhhdmUgYSBOVUxMIGRvY3VtZW50CisgICAgICAgIGxv
YWRlciBiZWNhdXNlIGl0IGhhcyBiZWVuIG1vdmVkIGJhY2sgdG8gdGhlIHByb3Zpc2lvbmFsIHN0
YXRlLiAgTmV3CisgICAgICAgIGxvYWRzIHRoYXQgaGFwcGVuIGFmdGVyIHRoaXMgd2lsbCBkZXJl
ZmVyZW5jZSB0aGUgTlVMTCBkb2N1bWVudAorICAgICAgICBsb2FkZXIuCisKKyAgICAgICAgV29y
ayBhcm91bmQgdGhpcyBieSBtb3ZpbmcgdGhlIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciBi
YWNrIGFzCisgICAgICAgIHRoZSBkb2N1bWVudCBsb2FkZXIgd2hlbiB0aGUgcmVxdWVzdCBpcyBz
dG9wcGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMTQ0NgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbXVsdGlwYXJ0L211bHRpcGFydC13
YWl0LWJlZm9yZS1ib3VuZGFyeS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lKToKKwogMjAxMC0wMS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCA5ZWFjNjI4Li4yNjgzMjA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yOTIy
LDYgKzI5MjIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNG
cmFtZSgpCiAgICAgICAgICAgICAgICAgc3RvcExvYWRpbmdTdWJmcmFtZXMoKTsKICAgICAgICAg
ICAgICAgICBwZGwtPnN0b3BMb2FkaW5nKCk7CiAKKyAgICAgICAgICAgICAgICBpZiAoaXNSZXBs
YWNpbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRMb2FkZXIobV9wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLmdldCgpKTsKKwogICAgICAgICAgICAgICAgIC8vIEZpbmlzaCBy
ZXNldHRpbmcgdGhlIGxvYWQgc3RhdGUsIGJ1dCBvbmx5IGlmIGFub3RoZXIgbG9hZCBoYXNuJ3Qg
YmVlbiBzdGFydGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgIC8vIGRlbGVnYXRlIGNhbGxiYWNr
LgogICAgICAgICAgICAgICAgIGlmIChwZGwgPT0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46348</attachid>
            <date>2010-01-12 01:08:30 -0800</date>
            <delta_ts>2010-01-12 10:10:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-31446-20100112180828.patch</filename>
            <type>text/plain</type>
            <size>5199</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZjIwMTMwLi43NDM5NDY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MTIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBNYWNpZWogU3RhY2hvd2lhay4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciBhIENocm9taXVt
IGNyYXNoIHdoZW4gbG9hZGluZyBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlCisgICAgICAgIGRh
dGEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
NDQ2CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZv
cmUtYm91bmRhcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL211
bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL211bHRpcGFydC13YWl0LWJlZm9y
ZS1ib3VuZGFyeS5waHA6IEFkZGVkLgorCiAyMDEwLTAxLTExICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2QuIFJlbW92ZSBhIGR1cGxpY2F0ZWQg
bGluZSBpbiBhbiBleHBlY3RhdGlvbiBmaWxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9tdWx0aXBhcnQvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJvdW5kYXJ5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L211bHRpcGFydC13YWl0LWJl
Zm9yZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uODZhZWZjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bXVsdGlwYXJ0L211bHRpcGFydC13YWl0LWJlZm9yZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitTVUNDRVNTCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tdWx0aXBhcnQvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJvdW5kYXJ5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQtd2FpdC1iZWZvcmUtYm91bmRh
cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDNjMjhiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tdWx0aXBhcnQvbXVsdGlwYXJ0
LXdhaXQtYmVmb3JlLWJvdW5kYXJ5Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0K
KyAgICAgICAgZnVuY3Rpb24gY2hpbGRMb2FkZWQoKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0
KCJ3aW5kb3cuZnJhbWVzWydpZnJhbWUnXS5sb2NhdGlvbiA9ICdyZXNvdXJjZXMvbXVsdGlwYXJ0
LXdhaXQtYmVmb3JlLWJvdW5kYXJ5LnBocD9kb25lPTEnIiwgMCk7CisgICAgICAgIH0KKyAgICAg
ICAgZnVuY3Rpb24gc3VjY2VzcygpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c3RhdHVzJykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHAgaWQ9InN0YXR1cyI+UlVOTklORy4u
LjwvcD4KKyAgICA8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0icmVzb3VyY2VzL211bHRpcGFydC13
YWl0LWJlZm9yZS1ib3VuZGFyeS5waHAiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL211bHRpcGFydC13YWl0
LWJlZm9yZS1ib3VuZGFyeS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL211bHRpcGFydC9y
ZXNvdXJjZXMvbXVsdGlwYXJ0LXdhaXQtYmVmb3JlLWJvdW5kYXJ5LnBocApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGRlMGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL211bHRpcGFydC13YWl0LWJlZm9y
ZS1ib3VuZGFyeS5waHAKQEAgLTAsMCArMSw0MSBAQAorPD9waHAKKyAgICBpZiAoaXNzZXQoJF9H
RVRbJ2RvbmUnXSkpIHsKKyAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsK
KyAgICAgIGVjaG8oIjxzY3JpcHQ+cGFyZW50LnN1Y2Nlc3MoKTwvc2NyaXB0PiIpOworICAgICAg
ZXhpdCgwKTsKKyAgICB9CisKKyAgICAkYm91bmRhcnkgPSAiY3V0SGVyZSI7CisKKyAgICBmdW5j
dGlvbiBzZW5kSGVhZGVyKCkKKyAgICB7CisgICAgICAgIGdsb2JhbCAkYm91bmRhcnk7CisKKyAg
ICAgICAgZWNobygiLS0kYm91bmRhcnlcclxuIik7CisgICAgICAgIGVjaG8oIkNvbnRlbnQtVHlw
ZTogdGV4dC9odG1sXHJcblxyXG4iKTsKKyAgICAgICAgZmx1c2goKTsKKyAgICB9CisKKyAgICBo
ZWFkZXIoIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZTsgYm91bmRhcnk9
JGJvdW5kYXJ5Iik7CisKKyAgICAvLyBnZW5lcmF0ZSBzb21lIHBhZGRpbmcgdG8gd29yayBhcm91
bmQgQ0ZOZXR3b3JrIGhhbmRsaW5nIG9mIG11bHRpcGFydCBkYXRhCisgICAgJHBhZGRpbmcgPSAi
YWEiOworICAgIGZvciAoJGkgPSAwOyAkaSA8IDEwOyAkaSsrKSB7CisgICAgICAkcGFkZGluZyAu
PSAkcGFkZGluZzsKKyAgICB9CisKKyAgICBzZW5kSGVhZGVyKCk7CisgICAgZWNobygidGVzdCBo
dG1sXG4iKTsKKyAgICBlY2hvKCI8IS0tICRwYWRkaW5nIC0tPiIpOworICAgIGZsdXNoKCk7Cisg
ICAgc2VuZEhlYWRlcigpOworICAgIGVjaG8oInNlY29uZCBodG1sIik7CisgICAgZWNobygiPHNj
cmlwdD5wYXJlbnQuY2hpbGRMb2FkZWQoKTwvc2NyaXB0PiIpOworICAgIGVjaG8oIjwhLS0gJHBh
ZGRpbmcgLS0+Iik7CisgICAgZmx1c2goKTsKKyAgICBzZW5kSGVhZGVyKCk7CisgICAgZWNobygi
dGhpcmQgaHRtbCIpOworICAgIGVjaG8oIjwhLS0gJHBhZGRpbmcgLS0+Iik7CisgICAgZmx1c2go
KTsKKyAgICB1c2xlZXAoMzAgKiAxMDAwMDAwKTsKKz8+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkOGI1NjAuLjE2M2MxZmYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTAtMDEtMTIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KKworICAgICAgICBGaXggYSBj
cmFzaCBpbiBDaHJvbWl1bSB3aGVuIHJlY2VpdmluZyBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNl
IGRhdGEuCisgICAgICAgIElmIHdlIHN0b3AgYSBtdWx0aXBhcnQgbG9hZCBhZnRlciBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlCisgICAgICAgIGJ1dCBiZWZvcmUgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhLCB3ZSBoYXZlIGEgTlVMTCBkb2N1bWVudAorICAgICAgICBs
b2FkZXIgYmVjYXVzZSBpdCBoYXMgYmVlbiBtb3ZlZCBiYWNrIHRvIHRoZSBwcm92aXNpb25hbCBz
dGF0ZS4gIE5ldworICAgICAgICBsb2FkcyB0aGF0IGhhcHBlbiBhZnRlciB0aGlzIHdpbGwgZGVy
ZWZlcmVuY2UgdGhlIE5VTEwgZG9jdW1lbnQKKyAgICAgICAgbG9hZGVyLgorCisgICAgICAgIFdv
cmsgYXJvdW5kIHRoaXMgYnkgbW92aW5nIHRoZSBwcm92aXNpb25hbCBkb2N1bWVudCBsb2FkZXIg
YmFjayBhcworICAgICAgICB0aGUgZG9jdW1lbnQgbG9hZGVyIHdoZW4gdGhlIHJlcXVlc3QgaXMg
c3RvcHBlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzE0NDYKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL211bHRpcGFydC9tdWx0aXBhcnQt
d2FpdC1iZWZvcmUtYm91bmRhcnkuaHRtbAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZv
clRoaXNGcmFtZSk6CisKIDIwMTAtMDEtMTIgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggOWVhYzYyOC4uMjY4MzIwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMjkyMiw2ICsyOTIyLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxl
dGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgICAgIHN0b3BMb2FkaW5nU3ViZnJhbWVzKCk7
CiAgICAgICAgICAgICAgICAgcGRsLT5zdG9wTG9hZGluZygpOwogCisgICAgICAgICAgICAgICAg
aWYgKGlzUmVwbGFjaW5nKCkpCisgICAgICAgICAgICAgICAgICAgIHNldERvY3VtZW50TG9hZGVy
KG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSk7CisKICAgICAgICAgICAgICAgICAv
LyBGaW5pc2ggcmVzZXR0aW5nIHRoZSBsb2FkIHN0YXRlLCBidXQgb25seSBpZiBhbm90aGVyIGxv
YWQgaGFzbid0IGJlZW4gc3RhcnRlZCBieSB0aGUKICAgICAgICAgICAgICAgICAvLyBkZWxlZ2F0
ZSBjYWxsYmFjay4KICAgICAgICAgICAgICAgICBpZiAocGRsID09IG1fcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>