<?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>6309</bug_id>
          
          <creation_ts>2005-12-31 02:46:39 -0800</creation_ts>
          <short_desc>multiple problems prevent bookmarking/back button technique for AJAX/DHTML applications from working</short_desc>
          <delta_ts>2006-10-02 19:52:09 -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>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>7058</dependson>
          <blocked>9610</blocked>
    
    <blocked>6628</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brad Neuberg">bkn3</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>adele</cc>
    
    <cc>alice.barraclough</cc>
    
    <cc>andersca</cc>
    
    <cc>bkn3</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>christopher</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>Kevin</cc>
    
    <cc>mjs</cc>
    
    <cc>sjoerdmulder</cc>
    
    <cc>sjt</cc>
    
    <cc>trey</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27298</commentid>
    <comment_count>0</comment_count>
    <who name="Brad Neuberg">bkn3</who>
    <bug_when>2005-12-31 02:46:39 -0800</bug_when>
    <thetext>I&apos;m the designer of the Really Simple History library, an open source framework
that makes it possible to support bookmarking and the back/forward buttons in
AJAX/DHTML applications (for an intro to the framework see an O&apos;Reilly Net
article at
http://www.onjava.com/pub/a/onjava/2005/10/26/ajax-handling-bookmarks-and-back-button.html).
This framework is being integrated into the Dojo project
(http://dojotoolkit.org), a popular library for AJAX/DHTML applications, and was
recently brought into Google for their own applications.

Unfortunately, RSH does not support Safari/WebKit, primarily because it is
impossible to do so; RSH works on Firefox and IE. I spent about two weeks full
time attempting to explore work arounds for Safari, but it turns out to be
impossible for a number of reasons I blogged about here:
http://codinginparadise.org/weblog/2005/09/safari-no-dhtml-history-possible.html

The RSH home page: http://codinginparadise.org/projects/dhtml_history/README.html

Here is what Safari/WebKit _should_ do:
1) If JavaScript updates the location of the web page to an anchor:
window.location.href = &quot;#some_new_location&quot;

The URL location toolbar _should_ update with the new location (and the browser
throbber should stop spinning; it currently goes into a continious loop in some
conditions). In addition, every time JavaScript updates the location, this entry
should be placed into the browser&apos;s history, so that it affects the back and
forward buttons, just like Firefox. In addition, if I create a timer to check
the location of the page:

var checkLocation = function(){
  var newLoc = document.location.href;
  // do something with the hash location
};
window.setInterval(checkLocation, 200);

It _should_ always be able to see the _current_ location of the document,
including the new hash value, and _should_ return the hash value as well
(sometimes you don&apos;t get the hash value).

The ability to do bookmarking and back button support is very important to the
kind of large scale AJAX/DHTML apps that are appearing, such as the new AJAX
Yahoo Mail, the new Google RSS Reader, and others. Just as a side note, I should
let you know that more and more AJAX/DHTML developers are abandoning Safari as a
platform for these advanced apps, which does not bode well for Safari. In
addition, many of the ones doing this are the ones creating the frameworks and
libraries that others will use, which will lock Safari/WebKit even more out of
some of the really cool things that are going on on the web right now.

Feel free to contact me at bkn3@columbia.edu if you have any questions; many
people I know really want to see this bug fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30809</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-31 14:48:59 -0800</bug_when>
    <thetext>If you have any simple reduced test cases (if you can host them) would be very helpful.  The issues with window.location.href are pretty well known, but reading your linked blog entry, I didn&apos;t quite follow what your issue was with iframes/forms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30811</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-31 14:58:22 -0800</bug_when>
    <thetext>Inifnite loop = p1.

This is probably related to 6958.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30813</commentid>
    <comment_count>3</comment_count>
    <who name="Brad Neuberg">bkn3</who>
    <bug_when>2006-01-31 15:08:32 -0800</bug_when>
    <thetext>Iframe history support is more of a hack to support history and bookmarking on IE. If you were to work exactly like Firefox, which is much better at these things, it would be better.

Here&apos;s what Firefox does:

1) If you change the window.location.href to an anchor:

window.location.href = &quot;#foobar&quot;

Then this anchor should go into the browsers history. I.e., if I start at the website http://foobar.com, and add three anchors:

window.location.href = &quot;#location1&quot;;
window.location.href = &quot;#location2&quot;;
window.location.href = &quot;#location3&quot;;

there should now be four things on the history stack:
http://foobar.com
http://foobar.com#location1
http://foobar.com#location2
http://foobar.com#location3

If I hit the back button, the browser should jump through each of these locations, changing the browser&apos;s location bar to show each of them.

At the same time, if I have a JavaScript interval timer running checking the browser&apos;s location:

window.setInterval(function(){
  var location = window.location.href;
  // check the location for a change
}, 200)

this timer should be able to see anchor location changes.

This is exactly how Firefox works, by the way, and it is the basis for AJAX history support in that browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30814</commentid>
    <comment_count>4</comment_count>
    <who name="Brad Neuberg">bkn3</who>
    <bug_when>2006-01-31 15:10:04 -0800</bug_when>
    <thetext>By the way, it doesn&apos;t matter how you handle iframes and history if you support the process above. IE also doesn&apos;t work correctly with updating the anchor location (it doesn&apos;t always go into history), so IE needed to use a deeper hack using hidden iframes to register history events (it&apos;s nasty).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30815</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-31 15:18:50 -0800</bug_when>
    <thetext>I&apos;m pretty sure we intended to put # URLS into the session history.  Probably just a bug (or design flaw) that we lose intermediate ones.  Our session history code is 3 years old and Firefox&apos;s is 7, so it&apos;s unsurprising that we have more bugs. :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30816</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-01-31 15:20:28 -0800</bug_when>
    <thetext>BTW whenever you have problems with Safari/WebKit, you can come to #webkit on Freenode to ask for help.  No need to beat against something for 2 weeks when you can ask for help from the actual developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30845</commentid>
    <comment_count>7</comment_count>
      <attachid>6173</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-31 20:35:31 -0800</bug_when>
    <thetext>Created attachment 6173
Test case

Test case for setting window.location.href using relative links.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30903</commentid>
    <comment_count>8</comment_count>
      <attachid>6174</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-31 21:59:17 -0800</bug_when>
    <thetext>Created attachment 6174
Patch v1 (probably not final fix)

Poking around kjs_window.cpp, I found that the change in this patch would fix the attached test case (Attachment 6173).

The change from calling scheduleLocationChange() to changeLocation() causes the Redirection Timer not to spin endlessly after the test case is done.

The change from &quot;!userGesture&quot; to &quot;false&quot; in the third argument causes the history to be written for each change to the URL fragment/reference (#locationX).

I have no idea if this is the correct fix, though, since it takes a while for the &quot;Back&quot; history button to update after the test case is run, and the test case seems to reload the entire page every time.  It seems like there is a missing optimization where loading a URL fragment (#locationX) on the same page shouldn&apos;t force the entire page to be reloaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30905</commentid>
    <comment_count>9</comment_count>
      <attachid>6174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-31 22:22:42 -0800</bug_when>
    <thetext>Comment on attachment 6174
Patch v1 (probably not final fix)

We definitely can&apos;t do this. It sill introduce all sorts of problems to try to actually change the location right away.

Sadly, I don&apos;t know exactly which problem it will cause -- it would be great to have the test cases, but I don&apos;t think we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30918</commentid>
    <comment_count>10</comment_count>
    <who name="Trey Matteson">trey</who>
    <bug_when>2006-01-31 23:13:32 -0800</bug_when>
    <thetext>I would expect that passing &quot;false&quot; instead of &quot;!userGesture&quot;, as proposed in the patch, would break a large number of sites that implement redirects using pure JS.  In fact, the attached test case of changing the location in onload() is a perfect example.  We solved a lot of conflicting bugs when we realized the existing &quot;userGesture&quot; flag in khtml was the way to distinguish whether window.location=foo should add to the history.

You might try a test case that acts in response to a user event to see if it changes the behavior of TOT.  If I&apos;m right, I realize this situation might not be good enough to meet your original goals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30987</commentid>
    <comment_count>11</comment_count>
    <who name="Brad Neuberg">bkn3</who>
    <bug_when>2006-02-01 11:33:01 -0800</bug_when>
    <thetext>By the way, setting an anchor location should _not_ reload the page, reset the DOM, etc. Other browsers don&apos;t do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31094</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-02 10:20:09 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; By the way, setting an anchor location should _not_ reload the page, reset the
&gt; DOM, etc. Other browsers don&apos;t do this.

Good point. Maybe we can break that part of this out into a separate bug report. This one seems to be about a set of related issues, and so it&apos;s a little hard to understand and fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31095</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-02 10:21:03 -0800</bug_when>
    <thetext>In general, the most helpful thing here would be to break this up into discrete pieces that are each easy to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31124</commentid>
    <comment_count>14</comment_count>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2006-02-03 00:23:20 -0800</bug_when>
    <thetext>This bug is also in Radar: &lt;rdar://4432143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31355</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-02-04 12:25:51 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; By the way, setting an anchor location should _not_ reload the page, reset the
&gt; &gt; DOM, etc. Other browsers don&apos;t do this.
&gt; 
&gt; Good point. Maybe we can break that part of this out into a separate bug
&gt; report. This one seems to be about a set of related issues, and so it&apos;s a
&gt; little hard to understand and fix.

Actually, as far as I can tell (using ethereal to trace network activity), the page is NOT reloaded during the test case.  (It&apos;s only loaded once to load the page in the first place.)  It may look like it is reloaded because the spinner (via RedirectionTimer) is fired up, but WebKit doesn&apos;t actually go back out to the network to request the page.

This means that two things should happen to fix this bug, e.g., when JavaScript requests a &apos;#name&apos; URL on the same page:

1. The RedirectionTimer should NOT fire when requesting a &apos;#name&apos; URL on the same page.

2. The current URL should be pushed onto the history stack before jumping to the new &apos;#name&apos; URL.  (This could be taken care of by introducing a local &apos;lockHistory&apos; variable that is always false for a &apos;#name&apos; URL on the same page regardless of source, but !userGesture otherwise.) 

I just tested the attached Test case (Attachment 6173) on MSIE 6, and it&apos;s in &quot;denial&quot; about additional history entries when the &quot;Test case&quot; link is clicked after opening this bug (the count of &quot;3&quot; comes from the default page opening when MSIE 6 starts, the Bug 6309 page opening, then the Attachment 6173 opening):

One
Two
Three
Status: FAIL initialLength = 3 window.history.length = 3

However, if one right-clicks on the &quot;Test case&quot; link and opens it in a new window, the test passes!  What the heck?!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31386</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-02-04 19:38:13 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; 1. The RedirectionTimer should NOT fire when requesting a &apos;#name&apos; URL on the
&gt; same page.

Hmm...it would seem that Bug 3552 covers this issue!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31808</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-02-07 21:21:30 -0800</bug_when>
    <thetext>This bug was fixed with the commit for Bug 7058 (confirmed locally by applying the patch in reverse and rebuilding r12652), so marking it a duplicate of that bug.  Bug 3552 was also fixed at the same time.

Reporter, please verify that this was fixed with nightly r12598 or newer.

Should a test case be prepared and checked in for WebKit to make sure this doesn&apos;t regress?


*** This bug has been marked as a duplicate of 7058 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31815</commentid>
    <comment_count>18</comment_count>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2006-02-08 01:26:59 -0800</bug_when>
    <thetext>This bug is definitly NOT a duplicate of bug 7058!
This bug is about Safari supporting back / forward button in AJAX applications, I agree it&apos;s come one step closer by fixing bug 7058 but it still has some problems! Attaching a better testcase! (where you actually have to use the history by pressing Back)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31816</commentid>
    <comment_count>19</comment_count>
      <attachid>6339</attachid>
    <who name="Sjoerd Mulder">sjoerdmulder</who>
    <bug_when>2006-02-08 01:30:50 -0800</bug_when>
    <thetext>Created attachment 6339
Testcase using Back button</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31819</commentid>
    <comment_count>20</comment_count>
    <who name="Brad Neuberg">bkn3</who>
    <bug_when>2006-02-08 01:48:12 -0800</bug_when>
    <thetext>Here is a test page using the Really Simple History library which works on IE and Firefox:

http://www.onjava.com/onjava/2005/10/26/examples/examples/oreillymail/oreillymail.html

You can use this to make sure that your fixes work. This is a simple, fake AJAX/DHTML email client put together to show AJAX history, bookmarking, and back/button support.

What you should do is click around on the left hand sidebar; make sure that the page location changes at the top, showing a new anchor location. Then, press the back and forward buttons, and make sure that the history changes in the anchor bar. Press the reload button and make sure the page stays the same, then press back and forward again to make sure the history is still there. Manually change the anchor location to a new place (such as #drafts), then press enter; the page should correctly change; continue using the history to make sure this manual change doesn&apos;t break things, by clicking on the sidebar more. Then, go to http://google.com in this window, let Google load, and then press the back button to jump back to the test page; you should be on the last history location you left it at. Continue pressing the back button to jump through your history state, ensuring that leaving the page and then returning has not cleared out your AJAX history.

This all works in IE and Firefox. It should work in Safari. Google has adopted this library for some of their own projects, so getting it working in Safari would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31822</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-02-08 05:06:12 -0800</bug_when>
    <thetext>Adding Bug 7058 to depends-on list since it fixed part of the issue originally described in the description of this bug.

I apologize for missing the &quot;location.hash does not get updated&quot; issue when I wrote the initial test case (Attachment 6173), but &quot;(sometimes you don&apos;t get the hash value)&quot; in the original description didn&apos;t inform me that &quot;location.hash&quot; wasn&apos;t getting updated.  I thought that meant the hash value wasn&apos;t available in location.href.

In the future if you want Software X or Web Site Y to work with WebKit and there are multiple individual issues that are able to be identified, please set up a &quot;Master&quot; or &quot;Tracking&quot; bug (like Bug 6628 for Backbase or Bug 6627 for TinyMCE) and then reference existing bugs or create additional bugs (with test cases!) that block the master/tracking bug.  Thanks!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38967</commentid>
    <comment_count>22</comment_count>
    <who name="Kevin Newman">Kevin</who>
    <bug_when>2006-04-11 11:10:57 -0700</bug_when>
    <thetext>Hello. I just wanted to let you know of another project that relies on this functionality to implement a history for AJAX and Flash RIAs. You can find it a simple test page here: http://www.unfocus.com/projects/source/historykeeper.html and another one using flash here: http://www.unfocus.com/projects/source/#About .

These pages are not always stable, as they are WIP pages, I will try to send some specific bug test cases when I find time (increasingly scarce time).

BTW, there is a bit of a workaround for this that has been implemented in my script, which is to watch the history.length property. This property seems to incorrectly change as you go back through the history (is this another bug?).

I mentioned on webkit-dev mailing list, that I think this is kind of a missing feature on the web platform. It would be great if we could get some kind of more robust history interface in javascript for AJAX and Flash RIAs, since they are becoming more popular (maybe this is a feature request?). Even just a new (onHistoryChange or something) event on the History or location element would be good.

Anyway, if there is anything I can do to help (test cases, help with the dojo scripts, etc.), please let me know. I have no mac osx Tiger to test with unfortunately though..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38970</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-11 12:02:37 -0700</bug_when>
    <thetext>The most helpful thing anyone could do about this bug would be to write some small specific bug reports. This giant one about a whole category of problems is very difficult to work on. Individual specific ones, each with a small, specific set of steps would be a lot easier to resolve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43727</commentid>
    <comment_count>24</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-27 05:03:29 -0700</bug_when>
    <thetext>I&apos;m working on this. I have a patch which fixes most problems, it just needs some more testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44017</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-30 10:57:44 -0700</bug_when>
    <thetext>Anders says he&apos;s working on this, so assigning to him to reflect that fact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44249</commentid>
    <comment_count>26</comment_count>
      <attachid>8642</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-06-01 07:51:59 -0700</bug_when>
    <thetext>Created attachment 8642
Patch

This patch fixes the issues described above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44283</commentid>
    <comment_count>27</comment_count>
      <attachid>8642</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-01 13:00:36 -0700</bug_when>
    <thetext>Comment on attachment 8642
Patch

Since == already works on KURL, it seems to me that we only need a function that does the &quot;== ignoring hash&quot; operation. Also, for symmetric operations like equality, I prefer functions to members. So I&apos;d like to see the isEqualTo function renamed and remove the boolean parameter and be a &quot;free&quot; function rather than a member function.

In historyURL: we should not use braces around single-line if statements.

Otherwise looks good, and those are nitpicks, so r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44320</commentid>
    <comment_count>28</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-01 17:38:34 -0700</bug_when>
    <thetext>*** Bug 8522 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44390</commentid>
    <comment_count>29</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-02 09:53:05 -0700</bug_when>
    <thetext>*** Bug 7516 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44392</commentid>
    <comment_count>30</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-02 09:57:52 -0700</bug_when>
    <thetext>*** Bug 9184 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44493</commentid>
    <comment_count>31</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-02 20:43:18 -0700</bug_when>
    <thetext>*** Bug 9281 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44497</commentid>
    <comment_count>32</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-02 20:51:00 -0700</bug_when>
    <thetext>*** Bug 9266 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48973</commentid>
    <comment_count>33</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-07-09 14:35:22 -0700</bug_when>
    <thetext>*** Bug 9711 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6173</attachid>
            <date>2006-01-31 20:35:31 -0800</date>
            <delta_ts>2006-01-31 20:35:31 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>bug-6309-test.html</filename>
            <type>text/html</type>
            <size>910</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KPCEtLQp2YXIgaW5p
dGlhbExlbmd0aCA9IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aDsKCmZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICBzZXRUaW1lb3V0KCd1cGRhdGVIaXN0b3J5KDEpOycsIDEwMCk7CiAgICBzZXRUaW1lb3V0KCd1
cGRhdGVIaXN0b3J5KDIpOycsIDIwMCk7CiAgICBzZXRUaW1lb3V0KCd1cGRhdGVIaXN0b3J5KDMp
OycsIDMwMCk7CiAgICBzZXRUaW1lb3V0KCd0ZXN0SGlzdG9yeSgpJywgNDAwKTsKfQoKZnVuY3Rp
b24gdXBkYXRlSGlzdG9yeShuKSB7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIjbG9jYXRp
b24iICsgbjsKfQoKZnVuY3Rpb24gdGVzdEhpc3RvcnkoKSB7CiAgICB2YXIgZCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdGF0dXMiKTsKICAgIGlmICh3aW5kb3cuaGlzdG9yeS5sZW5ndGgg
LSBpbml0aWFsTGVuZ3RoID09IDMpIHsKICAgICAgICBkLmlubmVySFRNTCA9ICJQQVNTIjsKICAg
IH0KICAgIGVsc2UgewogICAgICAgIGQuaW5uZXJIVE1MID0gIkZBSUwiICsKICAgICAgICAgICAg
IiBpbml0aWFsTGVuZ3RoID0gIiArIGluaXRpYWxMZW5ndGggKwogICAgICAgICAgICAiIHdpbmRv
dy5oaXN0b3J5Lmxlbmd0aCA9ICIgKyB3aW5kb3cuaGlzdG9yeS5sZW5ndGg7CiAgICB9Cn0KLy8g
LS0+Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0idGVzdCgpOyI+CjxkaXY+PGEgbmFt
ZT0ibG9jYXRpb24xIj5PbmU8L2E+PC9kaXY+CjxkaXY+PGEgbmFtZT0ibG9jYXRpb24yIj5Ud288
L2E+PC9kaXY+CjxkaXY+PGEgbmFtZT0ibG9jYXRpb24zIj5UaHJlZTwvYT48L2Rpdj4KPGRpdj5T
dGF0dXM6IDxzcGFuIGlkPSJzdGF0dXMiPjwvc3Bhbj48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6174</attachid>
            <date>2006-01-31 21:59:17 -0800</date>
            <delta_ts>2006-06-01 07:51:59 -0700</delta_ts>
            <desc>Patch v1 (probably not final fix)</desc>
            <filename>bug-6309-v1.diff</filename>
            <type>text/plain</type>
            <size>756</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDEyNTEwKQorKysgV2Vi
Q29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTg0LDcg
KzIxODQsNyBAQCB2b2lkIExvY2F0aW9uOjpwdXQoRXhlY1N0YXRlICpleGVjLCBjb25zCiAgIGlm
ICghdXJsLnVybCgpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8ICh3aW5kb3cg
JiYgd2luZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpKSB7CiAgICAgYm9vbCB1c2VyR2VzdHVyZSA9
IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyICo+KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRl
cigpKS0+d2FzUnVuQnlVc2VyR2VzdHVyZSgpOwogICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9y
eSBpdGVtIGlmIHRoaXMgSlMgd2FzIGNhbGxlZCB2aWEgYSB1c2VyIGdlc3R1cmUKLSAgICBtX2Zy
YW1lLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybC51cmwoKSwgYWN0aXZlUGFydC0+cmVmZXJy
ZXIoKSwgIXVzZXJHZXN0dXJlLCB1c2VyR2VzdHVyZSk7CisgICAgbV9mcmFtZS0+Y2hhbmdlTG9j
YXRpb24odXJsLnVybCgpLCBhY3RpdmVQYXJ0LT5yZWZlcnJlcigpLCBmYWxzZSwgdXNlckdlc3R1
cmUpOwogICB9CiB9CiAK
</data>
<flag name="review"
          id="1487"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6339</attachid>
            <date>2006-02-08 01:30:50 -0800</date>
            <delta_ts>2006-02-14 07:37:33 -0800</delta_ts>
            <desc>Testcase using Back button</desc>
            <filename>history.html</filename>
            <type>text/html</type>
            <size>1232</size>
            <attacher name="Sjoerd Mulder">sjoerdmulder</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIg0KCSJodHRw
Oi8vd3d3LnczLm9yZy9UUi94aHRtbDExL0RURC94aHRtbDExLmR0ZCI+DQo8aHRtbCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiA+DQo8aGVhZD4NCgk8
bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1pc28tODg1OS0xIiAvPg0KCTx0aXRsZT5IaXN0b3J5IHN1cHBvcnQ8L3RpdGxlPg0KDQoJPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCQl2YXIgb2xkSGFzaCA9IGRvY3VtZW50Lmxv
Y2F0aW9uLmhhc2g7DQoJCWZ1bmN0aW9uIGNoZWNrSGFzaCgpew0KCQkJZG9jdW1lbnQudGl0bGUg
PSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoOw0KCQkJaWYob2xkSGFzaCAhPSBkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoKXsNCgkJCQlvbGRIYXNoID0gZG9jdW1lbnQubG9jYXRpb24uaGFzaDsNCgkJCQlh
bGVydCgneW91IHByZXNzZWQgdGhlIGJhY2sgLyBmb3J3YXJkIGJ1dHRvbiEnKTsNCgkJCX0NCgkJ
CXNldFRpbWVvdXQoY2hlY2tIYXNoLCAxMDApOw0KCQl9DQoNCgkJZnVuY3Rpb24gc2V0SGFzaCh2
YWx1ZSl7DQoJCQlvbGRIYXNoID0gJyMnK3ZhbHVlOw0KCQkJZG9jdW1lbnQubG9jYXRpb24uaGFz
aCA9IHZhbHVlOw0KCQl9DQoNCgk8L3NjcmlwdD4NCjwvaGVhZD4NCg0KPGJvZHkgb25sb2FkPSJj
aGVja0hhc2goKTsiPg0KPGgyPmxvY2F0aW9uLmhhc2ggaXNudCB1cGRhdGVkPC9oMj4NCg0KPG9s
Pg0KCTxsaT5DbGljayBvbiBQYWdlIDEgPT4gUGFnZSAyID0+IGV0YywgeW91J2xsIHNlZSB0aGUg
aGFzaCBjaGFuZ2UgYW5kIGhpc3RvcnktaXRlbXMgYmVpbmcgYWRkZWQ8L2xpPg0KCTxsaT5QcmVz
cyB0aGUgYmFjayBidXR0b24sIHRoZSBoYXNoIGNoYW5nZXMgaW4gdGhlIGFkZHJlc3MtYmFyIGJ1
dCBub3QgaW4gZG9jdW1lbnQubG9jYXRpb24uaGFzaCAoc2VlIHRpdGxlKTwvbGk+DQoNCg0KCTxk
aXYgaWQ9Iml0ZW0xIiBvbm1vdXNlZG93bj0ic2V0SGFzaCgnUGFnZTEnKTsiPlBhZ2UgMTwvZGl2
Pg0KCTxkaXYgaWQ9Iml0ZW0yIiBvbm1vdXNlZG93bj0ic2V0SGFzaCgnUGFnZTInKTsiPlBhZ2Ug
MjwvZGl2Pg0KCTxkaXYgaWQ9Iml0ZW0zIiBvbm1vdXNlZG93bj0ic2V0SGFzaCgnUGFnZTMnKTsi
PlBhZ2UgMzwvZGl2Pg0KDQo8L2JvZHk+DQoNCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8642</attachid>
            <date>2006-06-01 07:51:59 -0700</date>
            <delta_ts>2006-06-01 13:00:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>location-hash-ajax-fixes.txt</filename>
            <type>text/plain</type>
            <size>20418</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0NjY0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDYtMDEgIEFuZGVycyBDYXJsc3NvbiAg
PGFjYXJsc3NvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzA5CisgICAgICAgIG11bHRpcGxlIHByb2JsZW1zIHByZXZlbnQgYm9va21hcmtpbmcv
YmFjayBidXR0b24gdGVjaG5pcXVlIGZvciBBSkFYL0RIVE1MIGFwcGxpY2F0aW9ucyBmcm9tIHdv
cmtpbmcKKyAgICAgICAgCisgICAgICAgICogZmFzdC9kb20vbG9jYXRpb24taGFzaC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbDogQWRk
ZWQuCisgICAgICAgIEFkZGVkIHRlc3RzLgorICAgICAgICAKIDIwMDYtMDUtMzEgIE1pdHogUGV0
dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSHlhdHQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0
aW9uLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACitUaGlz
IHRlc3RzIHRoYXQgbW9kaWZ5aW5nIGxvY2F0aW9uLmhhc2ggd29ya3MgYXMgaXQgc2hvdWxkCisK
K1BBU1M6IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aCA9PSBvcmlnaW5hbEhpc3RvcnlMZW5ndGggc2hv
dWxkIGJlIHRydWUgYW5kIGlzLgorUEFTUzogd2luZG93LmxvY2F0aW9uLmhhc2ggc2hvdWxkIGJl
IGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHNob3VsZCBiZSAjZm9vIGFuZCBp
cy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbiA9PSBvcmlnaW5hbExvY2F0aW9uICsgJyNmb28nIHNo
b3VsZCBiZSB0cnVlIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aCA9PSBvcmln
aW5hbEhpc3RvcnlMZW5ndGggKyAxIHNob3VsZCBiZSB0cnVlIGFuZCBpcy4KK1BBU1M6IHdpbmRv
dy5sb2NhdGlvbi5oYXNoIHNob3VsZCBiZSAjYmFyIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5sb2Nh
dGlvbiA9PSBvcmlnaW5hbExvY2F0aW9uICsgJyNiYXInIHNob3VsZCBiZSB0cnVlIGFuZCBpcy4K
K1BBU1M6IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aCA9PSBvcmlnaW5hbEhpc3RvcnlMZW5ndGggKyAy
IHNob3VsZCBiZSB0cnVlIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHNob3Vs
ZCBiZSAjYmFyIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbiA9PSBvcmlnaW5hbExvY2F0
aW9uICsgJyNiYXInIHNob3VsZCBiZSB0cnVlIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5oaXN0b3J5
Lmxlbmd0aCA9PSBvcmlnaW5hbEhpc3RvcnlMZW5ndGggKyAyIHNob3VsZCBiZSB0cnVlIGFuZCBp
cy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHNob3VsZCBiZSAjZm9vIGFuZCBpcy4KK1BB
U1M6IHdpbmRvdy5sb2NhdGlvbiA9PSBvcmlnaW5hbExvY2F0aW9uICsgJyNmb28nIHNob3VsZCBi
ZSB0cnVlIGFuZCBpcy4KK1BBU1M6IHdpbmRvdy5sb2NhdGlvbi5oYXNoIHNob3VsZCBiZSBhbmQg
aXMuCitQQVNTOiB3aW5kb3cubG9jYXRpb24gPT0gb3JpZ2luYWxMb2NhdGlvbiBzaG91bGQgYmUg
dHJ1ZSBhbmQgaXMuCitQQVNTOiB3aW5kb3cubG9jYXRpb24uaGFzaCBzaG91bGQgYmUgI2ZvbyBh
bmQgaXMuCitQQVNTOiB3aW5kb3cubG9jYXRpb24gPT0gb3JpZ2luYWxMb2NhdGlvbiArICcjZm9v
JyBzaG91bGQgYmUgdHJ1ZSBhbmQgaXMuCitTVUNDRVNTIQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vbG9jYXRpb24taGFzaC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vbG9jYXRpb24taGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29s
b3IpIAorICAgIHsKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICBwYXJhZ3JhcGguc3R5bGUuZm9udEZhbWlseSA9
ICJtb25vc3BhY2UiOworICAgICAgICBpZiAoY29sb3IpCisgICAgICAgICAgICBwYXJhZ3JhcGgu
c3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzaG91bGRCZShhLCBiKQorICAgIHsKKyAgICAgICAgdmFyIGV2YWxBID0gZXZhbChhKTsKKyAg
ICAgICAgaWYgKGV2YWxBID09IGIpIAorICAgICAgICAgICAgcHJpbnQoIlBBU1M6ICIgKyBhICsg
IiBzaG91bGQgYmUgIiArIGIgKyAiIGFuZCBpcy4iLCAiZ3JlZW4iKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBwcmludCgiRkFJTDogIiArIGEgKyAiIHNob3VsZCBiZSAiICsgYiArICIg
YnV0IGluc3RlYWQgaXMgIiArIGV2YWxBICsgIi4iLCAicmVkIik7CisgICAgICAgICAgICBudW1F
cnJvcnMgKys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc3RlcCgpIHsK
KyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAg
ICAgc2hvdWxkQmUoJ3dpbmRvdy5oaXN0b3J5Lmxlbmd0aCA9PSBvcmlnaW5hbEhpc3RvcnlMZW5n
dGgnLCB0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCd3aW5kb3cubG9jYXRpb24uaGFzaCcs
ICcnKTsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJ2Zvbyc7CisgICAgICAg
ICAgICBzaG91bGRCZSgnd2luZG93LmxvY2F0aW9uLmhhc2gnLCAnI2ZvbycpOworICAgICAgICAg
ICAgc2hvdWxkQmUoIndpbmRvdy5sb2NhdGlvbiA9PSBvcmlnaW5hbExvY2F0aW9uICsgJyNmb28n
IiwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgnd2luZG93Lmhpc3RvcnkubGVuZ3RoID09
ICBvcmlnaW5hbEhpc3RvcnlMZW5ndGggKyAxJywgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnYmFy
JzsKKyAgICAgICAgICAgIHNob3VsZEJlKCd3aW5kb3cubG9jYXRpb24uaGFzaCcsICcjYmFyJyk7
CisgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmxvY2F0aW9uID09IG9yaWdpbmFsTG9jYXRp
b24gKyAnI2JhciciLCB0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCd3aW5kb3cuaGlzdG9y
eS5sZW5ndGggPT0gb3JpZ2luYWxIaXN0b3J5TGVuZ3RoICsgMicsIHRydWUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5o
YXNoID0gJ2Jhcic7CisgICAgICAgICAgICBzaG91bGRCZSgnd2luZG93LmxvY2F0aW9uLmhhc2gn
LCAnI2JhcicpOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5sb2NhdGlvbiA9PSBvcmln
aW5hbExvY2F0aW9uICsgJyNiYXInIiwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgnd2lu
ZG93Lmhpc3RvcnkubGVuZ3RoID09IG9yaWdpbmFsSGlzdG9yeUxlbmd0aCArIDInLCB0cnVlKTsK
KyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
IHdpbmRvdy5oaXN0b3J5LmJhY2soKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCd3aW5kb3cubG9j
YXRpb24uaGFzaCcsICcjZm9vJyk7CisgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmxvY2F0
aW9uID09IG9yaWdpbmFsTG9jYXRpb24gKyAnI2ZvbyciLCB0cnVlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7
CisgICAgICAgICAgICBzaG91bGRCZSgnd2luZG93LmxvY2F0aW9uLmhhc2gnLCAnJyk7CisgICAg
ICAgICAgICBzaG91bGRCZSgid2luZG93LmxvY2F0aW9uID09IG9yaWdpbmFsTG9jYXRpb24iLCB0
cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICB3
aW5kb3cuaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgICAgICAgICBzaG91bGRCZSgnd2luZG93Lmxv
Y2F0aW9uLmhhc2gnLCAnI2ZvbycpOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5sb2Nh
dGlvbiA9PSBvcmlnaW5hbExvY2F0aW9uICsgJyNmb28nIiwgdHJ1ZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2gg
PSAnJzsKKyAgICAgICAgICAgIGlmIChudW1FcnJvcnMgPT0gMCkKKyAgICAgICAgICAgICAgICBw
cmludCgiU1VDQ0VTUyEiLCAiZ3JlZW4iKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHByaW50KCJGQUlMVVJFOiBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsZWQiLCAicmVkIik7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgc3RhdGUgKys7CisgICAgICAgIHN0ZXAoKTsKKyAgICB9CisgICAgICAgIAor
ICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tG
b3J3YXJkTGlzdCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0ZSA9IDA7CisgICAgICAgIG51bUVycm9y
cyA9IDA7CisgICAgICAgIG9yaWdpbmFsTG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24uaHJlZjsK
KyAgICAgICAgb3JpZ2luYWxIaXN0b3J5TGVuZ3RoID0gd2luZG93Lmhpc3RvcnkubGVuZ3RoOwor
ICAgICAKKyAgICAgICAgc3RlcCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdHMoKTsiPgorPHA+VGhpcyB0ZXN0cyB0aGF0IG1vZGlmeWluZyBs
b2NhdGlvbi5oYXNoIHdvcmtzIGFzIGl0IHNob3VsZDwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gMTQ2NjMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOCBA
QCBwdWJsaWM6CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHByZXR0eVVSTCgpIGNvbnN0OwogCisg
ICAgYm9vbCBpc0VxdWFsVG8oY29uc3QgS1VSTCYgb3RoZXIsIGJvb2wgaWdub3JlUmVmKSBjb25z
dDsKKyAgICAKICNpZiBfX0FQUExFX18KICAgICBDRlVSTFJlZiBjcmVhdGVDRlVSTCgpIGNvbnN0
OwogICAgIE5TVVJMICpnZXROU1VSTCgpIGNvbnN0OwpAQCAtMTA5LDkgKzExMSw2IEBAIHByaXZh
dGU6CiAgICAgaW50IHBhdGhFbmRQb3M7CiAgICAgaW50IHF1ZXJ5RW5kUG9zOwogICAgIGludCBm
cmFnbWVudEVuZFBvczsKLSAgICAKLSAgICAvLyBUcnVlIGlmIGJvdGggVVJMcyBhcmUgdGhlIHNh
bWUuCi0gICAgZnJpZW5kIGJvb2wgdXJsY21wKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJlVSTEEs
IGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJlVSTEIsIGJvb2wgaWdub3JlVHJhaWxpbmdTbGFzaCwg
Ym9vbCBpZ25vcmVSZWYpOwogfTsKIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tV
UkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9u
IDE0NjYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIwMCwxNSArMTIwMCwxMiBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCAmYSwgY29uc3Qg
S1VSCiAgICAgcmV0dXJuIGEudXJsU3RyaW5nID09IGIudXJsU3RyaW5nOwogfQogCi1ib29sIHVy
bGNtcChjb25zdCBEZXByZWNhdGVkU3RyaW5nICZhLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nICZi
LCBib29sIGlnbm9yZVRyYWlsaW5nU2xhc2gsIGJvb2wgaWdub3JlUmVmKQorYm9vbCBLVVJMOjpp
c0VxdWFsVG8oY29uc3QgS1VSTCYgb3RoZXIsIGJvb2wgaWdub3JlUmVmKSBjb25zdAogewotICAg
IGlmIChpZ25vcmVSZWYpIHsKLSAgICAgICAgS1VSTCBhVVJMKGEpOwotICAgICAgICBLVVJMIGJV
UkwoYik7Ci0gICAgICAgIGlmIChhVVJMLm1faXNWYWxpZCAmJiBiVVJMLm1faXNWYWxpZCkKLSAg
ICAgICAgICAgIHJldHVybiBhVVJMLnVybFN0cmluZy5sZWZ0KGFVUkwucXVlcnlFbmRQb3MpID09
IGJVUkwudXJsU3RyaW5nLmxlZnQoYlVSTC5xdWVyeUVuZFBvcyk7Ci0gICAgfQotICAgIHJldHVy
biBhID09IGI7CisgICAgaWYgKGlnbm9yZVJlZiAmJiBtX2lzVmFsaWQgJiYgb3RoZXIubV9pc1Zh
bGlkKQorICAgICAgICByZXR1cm4gdXJsU3RyaW5nLmxlZnQocXVlcnlFbmRQb3MpID09IG90aGVy
LnVybFN0cmluZy5sZWZ0KG90aGVyLnF1ZXJ5RW5kUG9zKTsKKyAgICAgICAgCisgICAgcmV0dXJu
ICp0aGlzID09IG90aGVyOwogfQogCiBEZXByZWNhdGVkU3RyaW5nIEtVUkw6OmVuY29kZV9zdHJp
bmcoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgbm90RW5jb2RlZFN0cmluZykKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9ranNfd2luZG93LmNwcAkocmV2aXNpb24gMTQ2NjMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA3LDkgKzIxMDcsMTYg
QEAgdm9pZCBMb2NhdGlvbjo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29ucwogICAgICAgICB1cmwg
PSBzdHI7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIYXNoOgorICAgIGNhc2UgSGFz
aDogeworICAgICAgaWYgKHN0ci5zdGFydHNXaXRoKCIjIikpCisgICAgICAgIHN0ciA9IHN0ci5t
aWQoMSk7CisKKyAgICAgIGlmICh1cmwucmVmKCkgPT0gc3RyKQorICAgICAgICAgIHJldHVybjsK
KwogICAgICAgdXJsLnNldFJlZihzdHIpOwogICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
SG9zdDogewogICAgICAgRGVwcmVjYXRlZFN0cmluZyBob3N0ID0gc3RyLmxlZnQoc3RyLmZpbmQo
IjoiKSk7CiAgICAgICBEZXByZWNhdGVkU3RyaW5nIHBvcnQgPSBzdHIubWlkKHN0ci5maW5kKCI6
IikrMSk7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTQ2NjMpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDA2LTA2LTAxICBBbmRlcnMgQ2FybHNzb24gIDxhY2Fy
bHNzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjMwOQorICAgICAgICBtdWx0aXBsZSBwcm9ibGVtcyBwcmV2ZW50IGJvb2ttYXJraW5nL2JhY2sg
YnV0dG9uIHRlY2huaXF1ZSBmb3IgQUpBWC9ESFRNTCBhcHBsaWNhdGlvbnMgZnJvbSB3b3JraW5n
CisgICAgICAgIAorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwOgorICAgICAg
ICAoS0pTOjpMb2NhdGlvbjo6cHV0KToKKyAgICAgICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRo
ZSBoYXNoIHN0YXJ0cyB3aXRoIGEgIiMiLiBBbHNvLCBkb24ndCBkbyBhbnl0aGluZyBpZiB0aGUg
cHJldmlvdXMgYW5kIG5ldyBoYXNoZXMKKyAgICAgICAgYXJlIGVxdWFsLgorICAgICAgICAKKyAg
ICAgICAgKiBicmlkZ2UvQnJvd3NlckV4dGVuc2lvbi5oOgorICAgICAgICAqIGJyaWRnZS9tYWMv
QnJvd3NlckV4dGVuc2lvbk1hYy5oOgorICAgICAgICAqIGJyaWRnZS9tYWMvQnJvd3NlckV4dGVu
c2lvbk1hYy5tbTogICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6QnJvd3NlckV4dGVuc2lvbk1h
Yzo6aGlzdG9yeVVSTCk6CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2Uu
aDoKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAg
TmV3IGZ1bmN0aW9uIGhpc3RvcnlVUkwgd2hpY2ggcmV0dXJucyB0aGUgY29tcGxldGUgVVJMIGZv
ciBhIGdpdmVuIGl0ZW0gaW4gdGhlIGhpc3RvcnkuCisgICAgICAgIAorICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UpOiAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2NoZWR1bGVIaXN0b3J5TmF2
aWdhdGlvbik6CisgICAgICAgIElmIHRoZSBVUkwgb2YgdGhlIG5ldyBsb2NhdGlvbiBvbmx5IGRp
ZmZlcnMgaW4gdGhlIGhhc2gsIGRvbid0IHNjaGVkdWxlIHRoZSBsb2FkLiBJbnN0ZWFkLCBsb2Fk
IGl0CisgICAgICAgIGRpcmVjdGx5LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJM
LmNwcDoKKyAgICAgICAgKEtVUkw6OmlzRXF1YWxUbyk6CisgICAgICAgICogcGxhdGZvcm0vS1VS
TC5oOgorICAgICAgICBOZXcgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB3aGV0aGVyIHR3byBVUkxz
IGFyZSBlcXVhbCAocG9zc2libHkgaWdub3JpbmcgdGhlIHJlZikuCisKIDIwMDYtMDUtMzEgIE1p
dHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSHlhdHQuCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UubW0JKHJldmlzaW9uIDE0NjYzKQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFt
ZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzM2LDExICs3MzYsNiBAQCBzdGF0aWMgaW5s
aW5lIFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlCiAgICAgICAgIGZyYW1lVmlldy0+c2V0TWFy
Z2luSGVpZ2h0KG1oKTsKIH0KIAotLSAodm9pZClzY3JvbGxUb0FuY2hvcjooTlNTdHJpbmcgKilh
bmNob3IKLXsKLSAgICBtX2ZyYW1lLT5nb3RvQW5jaG9yKGFuY2hvcik7Ci19Ci0KIC0gKEJPT0wp
aXNTZWxlY3Rpb25FZGl0YWJsZQogewogICAgIHJldHVybiBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5p
c0NvbnRlbnRFZGl0YWJsZSgpOwpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL0Jyb3dzZXJFeHRl
bnNpb25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvQnJvd3NlckV4dGVu
c2lvbk1hYy5oCShyZXZpc2lvbiAxNDY2MykKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9Ccm93c2Vy
RXh0ZW5zaW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBpbnQgZ2V0SGlzdG9yeUxlbmd0aCgpOwogICAgIHZpcnR1YWwgdm9pZCBn
b0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKTsKKyAgICB2aXJ0dWFsIEtVUkwgaGlzdG9yeVVS
TChpbnQgZGlzdGFuY2UpOwogCiAgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCk7CiAgICAg
dmlydHVhbCBib29sIGNhblJ1bk1vZGFsTm93KCk7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMv
V2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dl
YkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNDY2MykKKysrIFdlYkNvcmUvYnJpZGdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw2IEBA
IHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKWluc3RhbGxJbkZyYW1lOihOU1ZpZXcgKil2aWV3Owog
LSAodm9pZClyZW1vdmVGcm9tRnJhbWU7CiAKLS0gKHZvaWQpc2Nyb2xsVG9BbmNob3I6KE5TU3Ry
aW5nICopYW5jaG9yOwogLSAodm9pZClzY3JvbGxUb0FuY2hvcldpdGhVUkw6KE5TVVJMICopVVJM
OwogCiAtIChCT09MKXNjcm9sbE92ZXJmbG93SW5EaXJlY3Rpb246KFdlYlNjcm9sbERpcmVjdGlv
bilkaXJlY3Rpb24gZ3JhbnVsYXJpdHk6KFdlYlNjcm9sbEdyYW51bGFyaXR5KWdyYW51bGFyaXR5
OwpAQCAtNjE3LDYgKzYxNiw3IEBAIHR5cGVkZWYgZW51bSB7CiAtIChpbnQpaGlzdG9yeUxlbmd0
aDsKIC0gKHZvaWQpZ29CYWNrT3JGb3J3YXJkOihpbnQpZGlzdGFuY2U7CiAtIChCT09MKWNhbkdv
QmFja09yRm9yd2FyZDooaW50KWRpc3RhbmNlOworLSAoTlNVUkwgKiloaXN0b3J5VVJMOihpbnQp
ZGlzdGFuY2U7CiAKIC0gKHZvaWQpdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nOihET01IVE1MSW5w
dXRFbGVtZW50ICopZWxlbWVudDsKIC0gKHZvaWQpdGV4dEZpZWxkRGlkRW5kRWRpdGluZzooRE9N
SFRNTElucHV0RWxlbWVudCAqKWVsZW1lbnQ7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvQnJv
d3NlckV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvQnJv
d3NlckV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMTQ2NjMpCisrKyBXZWJDb3JlL2JyaWRnZS9t
YWMvQnJvd3NlckV4dGVuc2lvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSwx
NCBAQCB2b2lkIEJyb3dzZXJFeHRlbnNpb25NYWM6OmdvQmFja09yRm9yd2FyCiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAorS1VSTCBCcm93c2VyRXh0ZW5zaW9uTWFjOjpoaXN0
b3J5VVJMKGludCBkaXN0YW5jZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisgICAgcmV0dXJuIEtVUkwoW21fZnJhbWUtPmJyaWRnZSgpIGhpc3RvcnlVUkw6ZGlzdGFuY2Vd
KTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiBLVVJMKCk7Cit9
CisKIGJvb2wgQnJvd3NlckV4dGVuc2lvbk1hYzo6Y2FuUnVuTW9kYWwoKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL0Jyb3dzZXJFeHRl
bnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9Ccm93c2VyRXh0ZW5zaW9uLmgJ
KHJldmlzaW9uIDE0NjYzKQorKysgV2ViQ29yZS9icmlkZ2UvQnJvd3NlckV4dGVuc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50
IGdldEhpc3RvcnlMZW5ndGgoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdvQmFja09yRm9yd2Fy
ZChpbnQgZGlzdGFuY2UpID0gMDsKLQorICAgIHZpcnR1YWwgS1VSTCBoaXN0b3J5VVJMKGludCBk
aXN0YW5jZSkgPSAwOworICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9kYWxOb3coKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJ1bk1vZGFsKCkgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxNDY2MykKKysrIFdlYkNvcmUv
cGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5OCw2ICs4OTgsMTUgQEAgdm9pZCBG
cmFtZTo6c2NoZWR1bGVSZWRpcmVjdGlvbihkb3VibGUgZAogCiB2b2lkIEZyYW1lOjpzY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHVybCwgY29uc3QgRGVwcmVj
YXRlZFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgdXNlckdlc3R1cmUp
CiB7CisgICAgS1VSTCB1KHVybCk7CisgICAgCisgICAgLy8gSWYgdGhlIFVSTCB3ZSdyZSBnb2lu
ZyB0byBuYXZpZ2F0ZSB0byBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBvbmUsIGV4Y2VwdCBm
b3IgdGhlCisgICAgLy8gZnJhZ21lbnQgcGFydCwgd2UgZG9uJ3QgbmVlZCB0byBzY2hlZHVsZSB0
aGUgbG9jYXRpb24gY2hhbmdlLgorICAgIGlmICh1Lmhhc1JlZigpICYmIGQtPm1fdXJsLmlzRXF1
YWxUbyh1LCB0cnVlKSkgeworICAgICAgICBjaGFuZ2VMb2NhdGlvbih1cmwsIHJlZmVycmVyLCBs
b2NrSGlzdG9yeSwgdXNlckdlc3R1cmUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAg
ICAKICAgICAvLyBIYW5kbGUgYSBsb2NhdGlvbiBjaGFuZ2Ugb2YgYSBwYWdlIHdpdGggbm8gZG9j
dW1lbnQgYXMgYSBzcGVjaWFsIGNhc2UuCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBm
cmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGQtPm1fc2No
ZWR1bGVkUmVkaXJlY3Rpb24gPSBkLT5tX2RvYyA/IGxvY2F0aW9uQ2hhbmdlU2NoZWR1bGVkIDog
bG9jYXRpb25DaGFuZ2VTY2hlZHVsZWREdXJpbmdMb2FkOwpAQCAtOTA4LDcgKzkxNyw3IEBAIHZv
aWQgRnJhbWU6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QKICAgICBpZiAoZC0+bV9zY2hl
ZHVsZWRSZWRpcmVjdGlvbiA9PSBsb2NhdGlvbkNoYW5nZVNjaGVkdWxlZER1cmluZ0xvYWQpIHsK
ICAgICAgICAgc3RvcExvYWRpbmcodHJ1ZSk7ICAgCiAgICAgfQotICAgIAorCiAgICAgZC0+bV9k
ZWxheVJlZGlyZWN0ID0gMDsKICAgICBkLT5tX3JlZGlyZWN0VVJMID0gdXJsOwogICAgIGQtPm1f
cmVkaXJlY3RSZWZlcnJlciA9IHJlZmVycmVyOwpAQCAtOTQyLDYgKzk1MSwxNyBAQCB2b2lkIEZy
YW1lOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGluCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0aGUKKyAgICAvLyBmcmFnbWVudCBw
YXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBuYXZpZ2F0aW9uLgorICAgIGlmIChk
LT5tX2V4dGVuc2lvbikgeworICAgICAgICBLVVJMIHUgPSBkLT5tX2V4dGVuc2lvbi0+aGlzdG9y
eVVSTChzdGVwcyk7CisgICAgICAgIAorICAgICAgICBpZiAoZC0+bV91cmwuaXNFcXVhbFRvKHUs
IHRydWUpKSB7CisgICAgICAgICAgICBkLT5tX2V4dGVuc2lvbi0+Z29CYWNrT3JGb3J3YXJkKHN0
ZXBzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKICAgICBk
LT5tX3NjaGVkdWxlZFJlZGlyZWN0aW9uID0gaGlzdG9yeU5hdmlnYXRpb25TY2hlZHVsZWQ7CiAg
ICAgZC0+bV9kZWxheVJlZGlyZWN0ID0gMDsKICAgICBkLT5tX3JlZGlyZWN0VVJMID0gRGVwcmVj
YXRlZFN0cmluZzo6bnVsbDsKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJy
aWRnZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRn
ZS5tCShyZXZpc2lvbiAxNDY2MykKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJy
aWRnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM5LDYgKzEyMzksMzEgQEAgc3RhdGljIEJPT0wg
bG9nZ2VkT2JqZWN0Q2FjaGVTaXplID0gTk87CiAgICAgfQogfQogCistIChOU1VSTCopaGlzdG9y
eVVSTDooaW50KWRpc3RhbmNlCit7CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxmIHdlYlZp
ZXddOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdCAqbGlzdCA9IFt3ZWJWaWV3IGJhY2tGb3J3YXJk
TGlzdF07CisgICAgV2ViSGlzdG9yeUl0ZW0gKml0ZW0gPSBbbGlzdCBpdGVtQXRJbmRleDpkaXN0
YW5jZV07CisgICAgaWYgKCFpdGVtKSB7CisgICAgICAgIGlmIChkaXN0YW5jZSA+IDApIHsKKyAg
ICAgICAgICAgIGludCBmb3J3YXJkTGlzdENvdW50ID0gW2xpc3QgZm9yd2FyZExpc3RDb3VudF07
CisgICAgICAgICAgICBpZiAoZm9yd2FyZExpc3RDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAg
ICBpdGVtID0gW2xpc3QgaXRlbUF0SW5kZXg6Zm9yd2FyZExpc3RDb3VudF07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgYmFja0xpc3RDb3VudCA9IFts
aXN0IGZvcndhcmRMaXN0Q291bnRdOworICAgICAgICAgICAgaWYgKGJhY2tMaXN0Q291bnQgPiAw
KSB7CisgICAgICAgICAgICAgICAgaXRlbSA9IFtsaXN0IGl0ZW1BdEluZGV4Oi1iYWNrTGlzdENv
dW50XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaXRlbSkgewor
ICAgICAgICByZXR1cm4gW2l0ZW0gVVJMXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5pbDsK
K30KKwogc3RhdGljIGlkIDxXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZShXZWJGcmFtZUJy
aWRnZSAqc2VsZikKIHsKICAgICBBU1NFUlQoc2VsZi0+X2ZyYW1lICE9IG5pbCk7CkluZGV4OiBX
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE0NjY0KQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIz
IEBACisyMDA2LTA2LTAxICBBbmRlcnMgQ2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9i
dWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwOQorICAgICAgICBtdWx0
aXBsZSBwcm9ibGVtcyBwcmV2ZW50IGJvb2ttYXJraW5nL2JhY2sgYnV0dG9uIHRlY2huaXF1ZSBm
b3IgQUpBWC9ESFRNTCBhcHBsaWNhdGlvbnMgZnJvbSB3b3JraW5nCisKKyAgICAgICAgKiBNaXNj
L1dlYk5TVVJMRXh0cmFzLm06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRfVVJMRnJhZ21l
bnRdKToKKyAgICAgICAgRG9uJ3QgaW5jbHVkZSB0aGUgIiMiIGNoYXJhY3RlciBpbiB0aGUgZnJh
Z21lbnQuCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdl
Lm06CisgICAgICAgICgtW1dlYkZyYW1lQnJpZGdlIGhpc3RvcnlVUkw6XSk6CisgICAgICAgIE5l
dyBmdW5jdGlvbiwgcmV0dXJucyB0aGUgaGlzdG9yeSBVUkwgZm9yIGEgZ2l2ZW4gcG9zaXRpb24g
aW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0CisgICAgICAgIAorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWRJdGVtOndpdGhMb2FkVHlwZTpdKToK
KyAgICAgICAgQWx3YXlzIGNhbGwgc2Nyb2xsVG9BbmNob3JXaXRoVVJMLCBldmVuIGlmIHRoZXJl
IGlzIG5vIGZyYWdtZW50LiBUaGlzIHdheSB3ZSBrZWVwIHRoZSBXZWJDb3JlIGZyYW1lJ3MKKyAg
ICAgICAgVVJMIHVwLXRvLWRhdGUuCisKIDIwMDYtMDUtMzEgIERhdmlkIEh5YXR0ICA8aHlhdHRA
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgcHJvZ3JhbW1hdGljIGZvY3VzL2JsdXIgYWN0dWFs
bHkgd29yayBvbiBzdWItZnJhbWVzLiAgTWFrZSB0aGUKSW5kZXg6IFdlYktpdC9NaXNjL1dlYk5T
VVJMRXh0cmFzLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTlNVUkxFeHRyYXMubQko
cmV2aXNpb24gMTQ2NjMpCisrKyBXZWJLaXQvTWlzYy9XZWJOU1VSTEV4dHJhcy5tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDg3LDcgKzEwODcsNyBAQCBzdGF0aWMgQk9PTCBhbGxDaGFyYWN0ZXJzSW5J
RE5TY3JpcHRXaGl0CiAgICAgZnJhZ21lbnRSYW5nZSA9IFtzZWxmIHJhbmdlT2ZTdHJpbmc6QCIj
IiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaF07CiAgICAgaWYgKGZyYWdtZW50UmFuZ2UubG9jYXRp
b24gPT0gTlNOb3RGb3VuZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW3NlbGYg
c3Vic3RyaW5nRnJvbUluZGV4OmZyYWdtZW50UmFuZ2UubG9jYXRpb25dOworICAgIHJldHVybiBb
c2VsZiBzdWJzdHJpbmdGcm9tSW5kZXg6ZnJhZ21lbnRSYW5nZS5sb2NhdGlvbiArIDFdOwogfQog
CiBAZW5kCkluZGV4OiBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9XZWJWaWV3L1dlYkZyYW1lLm0JKHJldmlzaW9uIDE0NjYzKQorKysgV2ViS2l0L1dlYlZp
ZXcvV2ViRnJhbWUubQkod29ya2luZyBjb3B5KQpAQCAtMTMzNCwxMCArMTMzNCw5IEBAIHN0YXRp
YyBDRkFic29sdXRlVGltZSBfdGltZU9mTGFzdENvbXBsZXQKICAgICAgICAgW3NlbGYgX3NhdmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbTpbX3ByaXZhdGUgY3VycmVudEl0ZW1dXTsK
ICAgICAgICAgLy8gRklYTUU6IGZvcm0gc3RhdGUgbWlnaHQgd2FudCB0byBiZSBzYXZlZCBoZXJl
IHRvbwogCi0gICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIHdlIGNhbiB1c2Ugc2Nyb2xsVG9BbmNo
b3JXaXRoVVJMIGhlcmUgaW5zdGVhZCBhbmQgcmVtb3ZlIHRoZSBvbGRlciBzY3JvbGxUb0FuY2hv
cjo/Ci0gICAgICAgIE5TU3RyaW5nICphbmNob3IgPSBbW2l0ZW0gVVJMU3RyaW5nXSBfd2Via2l0
X1VSTEZyYWdtZW50XTsKLSAgICAgICAgaWYgKGFuY2hvcikKLSAgICAgICAgICAgIFtbX3ByaXZh
dGUtPmRhdGFTb3VyY2UgX2JyaWRnZV0gc2Nyb2xsVG9BbmNob3I6IGFuY2hvcl07CisgICAgICAg
IC8vIFdlIGFsd2F5cyBjYWxsIHNjcm9sbFRvQW5jaG9yV2l0aFVSTCBoZXJlLCBldmVuIGlmIHRo
ZSBVUkwgZG9lc24ndCBoYXZlIGFuCisgICAgICAgIC8vIGFuY2hvciBmcmFnbWVudC4gVGhpcyBp
cyBzbyB3ZSdsbCBrZWVwIHRoZSBXZWJDb3JlIEZyYW1lJ3MgVVJMIHVwLXRvLWRhdGUuCisgICAg
ICAgIFtbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2JyaWRnZV0gc2Nyb2xsVG9BbmNob3JXaXRoVVJM
OltpdGVtIFVSTF1dOwogICAgIAogICAgICAgICAvLyBtdXN0IGRvIHRoaXMgbWFpbnRlbmFuY2Ug
aGVyZSwgc2luY2Ugd2UgZG9uJ3QgZ28gdGhyb3VnaCBhIHJlYWwgcGFnZSByZWxvYWQKICAgICAg
ICAgW19wcml2YXRlIHNldEN1cnJlbnRJdGVtOml0ZW1dOwpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5tCShyZXZpc2lvbiAxNDY2MykKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLm0JKHdvcmtpbmcgY29weSkKQEAg
LTU5Niw3ICs1OTYsOCBAQCBzdGF0aWMgdm9pZCBkdW1wKHZvaWQpCiAgICAgICAgICAgICB8fCBh
U2VsZWN0b3IgPT0gQHNlbGVjdG9yKGR1bXBTZWxlY3Rpb25SZWN0KQogICAgICAgICAgICAgfHwg
YVNlbGVjdG9yID09IEBzZWxlY3RvcihkaXNwbGF5KQogICAgICAgICAgICAgfHwgYVNlbGVjdG9y
ID09IEBzZWxlY3Rvcih0ZXN0UmVwYWludCkKLSAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBA
c2VsZWN0b3IocmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KSkKKyAgICAgICAgICAgIHx8IGFTZWxl
Y3RvciA9PSBAc2VsZWN0b3IocmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KQorICAgICAgICAgICAg
fHwgYVNlbGVjdG9yID09IEBzZWxlY3RvcihjbGVhckJhY2tGb3J3YXJkTGlzdCkpCiAgICAgICAg
IHJldHVybiBOTzsKICAgICByZXR1cm4gWUVTOwogfQpAQCAtNjEwLDYgKzYxMSwyMSBAQCBzdGF0
aWMgdm9pZCBkdW1wKHZvaWQpCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAodm9pZCljbGVhckJh
Y2tGb3J3YXJkTGlzdAoreworICAgIFdlYkJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhcmRMaXN0
ID0gW1tmcmFtZSB3ZWJWaWV3XSBiYWNrRm9yd2FyZExpc3RdOworICAgIFdlYkhpc3RvcnlJdGVt
ICppdGVtID0gW1tiYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dIHJldGFpbl07CisKKyAgICAv
LyBXZSBjbGVhciB0aGUgaGlzdG9yeSBieSBzZXR0aW5nIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCdz
IGNhcGFjaXR5IHRvIDAKKyAgICAvLyB0aGVuIHJlc3RvcmluZyBpdCBiYWNrIGFuZCBhZGRpbmcg
YmFjayB0aGUgY3VycmVudCBpdGVtLgorICAgIGludCBjYXBhY2l0eSA9IFtiYWNrRm9yd2FyZExp
c3QgY2FwYWNpdHldOworICAgIFtiYWNrRm9yd2FyZExpc3Qgc2V0Q2FwYWNpdHk6MF07CisgICAg
W2JhY2tGb3J3YXJkTGlzdCBzZXRDYXBhY2l0eTpjYXBhY2l0eV07CisgICAgW2JhY2tGb3J3YXJk
TGlzdCBhZGRJdGVtOml0ZW1dOworICAgIFtiYWNrRm9yd2FyZExpc3QgZ29Ub0l0ZW06aXRlbV07
CisgICAgW2l0ZW0gcmVsZWFzZV07Cit9CisKIC0gKHZvaWQpd2FpdFVudGlsRG9uZSAKIHsKICAg
ICB3YWl0VG9EdW1wID0gWUVTOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NjQpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAwNi0wNi0w
MSAgQW5kZXJzIENhcmxzc29uICA8YWNhcmxzc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLm06CisgICAgICAgICgrW0xheW91dFRlc3RDb250cm9sbGVyIGlzU2VsZWN0b3JF
eGNsdWRlZEZyb21XZWJTY3JpcHQ6XSk6CisgICAgICAgICgtW0xheW91dFRlc3RDb250cm9sbGVy
IGNsZWFyQmFja0ZvcndhcmRMaXN0XSk6CisgICAgICAgIEFkZCBjbGVhckJhY2tGb3J3YXJkTGlz
dCBmdW5jdGlvbiB0byBsYXlvdXRUZXN0Q29udHJvbGxlcgorICAgICAgICAKIDIwMDYtMDUtMjYg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBm
aXhlcy90d2Vha3MK
</data>
<flag name="review"
          id="2483"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>