<?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>60598</bug_id>
          
          <creation_ts>2011-05-10 16:58:01 -0700</creation_ts>
          <short_desc>HTML5 Application Cache Update Failures on Page Refresh</short_desc>
          <delta_ts>2011-05-19 00:05:02 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ogw.watercooler-inc.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Riedel">ariedel</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>michaeln</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401654</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Riedel">ariedel</who>
    <bug_when>2011-05-10 16:58:01 -0700</bug_when>
    <thetext>Summary:

We have been able to reproduce various different HTML5 application/offline cache update bugs when a page is refreshed during a cache update. If a cache update is interrupted by refreshing the page midstream, expected cache events are not fired making it impossible to tell if files are actually being cached and making the use of event monitoring for things like cache update progress unreliable.

--------------------------------------------------

Expected Result:

If a cache update is interrupted midstream, a complete new cache update sequence should occur:

CHECKING
DOWNLOAD
PROGRESS
.........
CACHED

--------------------------------------------------

Observed Results:

Different results occur on Firefox desktop, Safari desktop, and Safari mobile. Tests were performed at  http://ogw.watercooler-inc.com using Firefox 4.0 (desktop) and Safari 5.0.5 (6533.21.1) (desktop).

Our index page includes a standard manifest attribute to enable offline caching:

&lt;html manifest=&quot;/cache.manifest&quot;&gt;

This initiates an offline cache update and so long as the update is not interrupted by refreshing the browser page, we receive JavaScript events from the application cache in the expected order: CHECKING, DOWNLOAD, PROGRESS, ......, PROGRESS, CACHED.

Firefox (Desktop)
-----------------------

On Firefox, there is a continuation of PROGRESS events for each file that had not been cached yet. For example, if 20 files were specified in the manifest and the page is refreshed after the 8th PROGRESS event is fired, 12 more PROGRESS events will be fired after the refresh. But, there is no initial CHECKING event after the refresh and there is no completing CACHED or UPDATEREADY event after the final PROGRESS event. If another page refresh is performed after this final PROGRESS event, the expected CHECKING and NOUPDATE events are fired.

Here is a view of the sequence of events:

[INITIAL PAGE LOAD]

CHECKING
DOWNLOADING
PROGRESS (8 times)

[REFRESH PAGE]

PROGRESS (12 times)
[END OF EVENT ACTIVITY]

[REFRESH PAGE AGAIN]

CHECKING
NOUPDATE
[END OF EVENT ACTIVITY]


Safari (Desktop)
----------------------

On Safari, things are worse. If the page is refreshed during the cache update, only a CHECKING event and a DOWNLOAD event are fired and then no additional activity occurs. Additional reloads of the page will yield the same result of only a CHECKING and DOWNLOAD event and nothing else. The only way to actually update the cache a this point seems to be to restart Safari. Upon restart, the complete sequence of regular expected events will occur: CHECKING, DOWNLOAD, PROGRESS, ......, PROGRESS, CACHED.

Here is a view of the sequence of events:

[INITIAL PAGE LOAD]

CHECKING
DOWNLOADING
PROGRESS (8 times)

[REFRESH PAGE]

CHECKING
DOWNLOADING
[END OF EVENT ACTIVITY]

[REFRESH PAGE AGAIN]

CHECKING
DOWNLOADING
[END OF EVENT ACTIVITY]

[RESTART SAFARI]
CHECKING
DOWNLOADING
PROGRESS
......
CACHED


-- 
Andy Riedel
Vice President, Mobile
Kabam, Inc.
(650) 784-9575
ariedel@kabam.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401743</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-10 21:18:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/9418639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401816</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-11 00:20:25 -0700</bug_when>
    <thetext>Both Safari and Firefox behaviors seem buggy indeed.

&gt; The only way to actually update the cache a this point seems to be to restart Safari

Closing the current window and opening a new one seems to work, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403949</commentid>
    <comment_count>3</comment_count>
      <attachid>93530</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-13 16:47:57 -0700</bug_when>
    <thetext>Created attachment 93530
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403979</commentid>
    <comment_count>4</comment_count>
      <attachid>93530</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-05-13 17:19:39 -0700</bug_when>
    <thetext>Comment on attachment 93530
proposed fix

View in context: https://bugs.webkit.org/attachment.cgi?id=93530&amp;action=review

&gt; LayoutTests/http/tests/appcache/interrupted-update.html:15
&gt; +if (applicationCache.status) {

This check doesn&apos;t look necessary and it will cause this test to fail erroneously for the chromium port. Since the page contains a manifest attribute, the status value will return CHECKING when sampled at this time.

&gt; LayoutTests/http/tests/appcache/interrupted-update.html:49
&gt; +    log(&quot;\nPASS&quot;);

This test can&apos;t PASS the test when a cache is already present. Maybe add the alert() about a cache already being present here instead (or just include the message in the logging output)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403991</commentid>
    <comment_count>5</comment_count>
      <attachid>93530</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-13 17:31:21 -0700</bug_when>
    <thetext>Comment on attachment 93530
proposed fix

OK, I&apos;ll change the test - but isn&apos;t it a bug in Chromium? Having status of CHECKING before a checking event is dispatched seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403994</commentid>
    <comment_count>6</comment_count>
      <attachid>93540</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-13 17:38:14 -0700</bug_when>
    <thetext>Created attachment 93540
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404001</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-05-13 18:14:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; OK, I&apos;ll change the test - but isn&apos;t it a bug in Chromium? Having status of CHECKING before a checking event is dispatched seems wrong.

Thank you. 

As for the behavior, here&apos;s what the spec says...

&quot;The status attribute, on getting, must return the current state of the application cache that the ApplicationCache object&apos;s cache host is associated with, if any.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404022</commentid>
    <comment_count>8</comment_count>
      <attachid>93540</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-13 21:20:17 -0700</bug_when>
    <thetext>Comment on attachment 93540
patch for landing

Clearing flags on attachment: 93540

Committed r86478: &lt;http://trac.webkit.org/changeset/86478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404023</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-13 21:20:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406269</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-19 00:05:02 -0700</bug_when>
    <thetext>It seems like interrupted-update.html has always been failing on GTK:
http://build.webkit.org/results/GTK%20Linux%2032-bit%20Release/r86818%20(13889)/results.html
http://build.webkit.org/results/GTK%20Linux%2032-bit%20Release/r86805%20(13882)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93530</attachid>
            <date>2011-05-13 16:47:57 -0700</date>
            <delta_ts>2011-05-13 17:38:14 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>AppcacheReload.txt</filename>
            <type>text/plain</type>
            <size>8336</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTMgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSFRNTDUgQXBwbGljYXRpb24gQ2FjaGUgVXBkYXRlIEZhaWx1
cmVzIG9uIFBhZ2UgUmVmcmVzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjA1OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk0MTg2Mzk+CisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbAor
CisgICAgICAgIFRoZSByZWFzb24gd2FzIHR3by1mb2xkOgorICAgICAgICAxKSBDYWNoZSBncm91
cCBzdGF0ZSB3YXNuJ3QgZnVsbHkgcmVzZXQgYWZ0ZXIgYSBmYWlsZWQgY2FjaGUgdXBkYXRlIChv
ciBhbiBpbml0aWFsIGxvYWQpLgorICAgICAgICAyKSBUaGUgY2FjaGUgZ3JvdXAgaXMgbm90IGRl
bGV0ZWQgdW50aWwgYWZ0ZXIgYWZ0ZXIgdGhlIG5hdmlnYXRpb24gKGZyb20gYXV0b3JlbGVhc2Ug
cG9vbCksCisgICAgICAgIHNvIHRoZSBmYWlsZWQgYW5kIHNvcnJ5IG9sZCB2ZXJzaW9uIHdhcyBw
aWNrZWQgdXAgYnkgY2FjaGUgc2VsZWN0aW9uIGFsZ29yaXRobS4KKworICAgICAgICBUaGUgbGF0
dGVyIGlzIG1vcmUgb2YgYSBzdXJwcmlzaW5nIGJlaGF2aW9yIHRoYW4gYSBwcm9ibGVtIGluIGl0
c2VsZi4gS2VlcGluZyBhbiBhcHBjYWNoZSBpbgorICAgICAgICBtZW1vcnkgZm9yIHJlbG9hZCBp
cyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nIGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZyk6IEFkZGVkIGEgRklYTUUgYWJv
dXQgaGFsZi1iYWtlZCBzdGF0ZSByZXNldHRpbmcKKyAgICAgICAgY29kZSB0aGF0IHNlbnQgbWUg
bG9va2luZyBmb3IgYSB3cm9uZyBmaXggb3JpZ2luYWxseS4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmdJbkZyYW1lKTogU3RvcHBlZCBsb2FkIGlz
IGFuIHVwZGF0ZSBmYWlsdXJlIGxpa2UKKyAgICAgICAgYW55IG90aGVyLCBzbyB3ZSBzaG91bGQg
Y2FsbCBjYWNoZVVwZGF0ZUZhaWxlZCgpLCB3aGljaCBrbm93cyBob3cgdG8gcmVzZXQgc3RhdGUu
CisKIDIwMTEtMDUtMTMgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZp
c2lvbiA4NjQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsNyArMzQ1LDggQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKAogICAgICAgICBtX2N1cnJlbnRIYW5k
bGUtPmNhbmNlbCgpOwogICAgICAgICBtX2N1cnJlbnRIYW5kbGUgPSAwOwogICAgIH0gICAgCi0g
ICAgCisKKyAgICAvLyBGSVhNRTogUmVzZXR0aW5nIGp1c3QgYSB0aW55IHBhcnQgb2YgdGhlIHN0
YXRlIGluIHRoaXMgZnVuY3Rpb24gaXMgY29uZnVzaW5nLiBDYWxsZXJzIGhhdmUgdG8gdGFrZSBj
YXJlIG9mIGEgbG90IG1vcmUuCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZCA9IDA7CiAgICAgbV9w
ZW5kaW5nRW50cmllcy5jbGVhcigpOwogfSAgICAKQEAgLTM5Nyw3ICszOTgsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmdJCiAgICAgaWYgKGZyYW1lICE9IG1fZnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BMb2FkaW5nKCk7CisgICAgY2FjaGVVcGRh
dGVGYWlsZWQoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldE5ld2VzdENh
Y2hlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0Q2FjaGUpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4NjQ3MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDExLTA1LTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhUTUw1IEFwcGxpY2F0aW9uIENhY2hlIFVwZGF0ZSBGYWlsdXJlcyBvbiBQYWdlIFJlZnJlc2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NDE4NjM5PgorCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9pbnRlcnJ1cHRlZC11cGRhdGUu
bWFuaWZlc3Q6IEFkZGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJl
c291cmNlLXJlZGlyZWN0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24t
aHRtbC54aHRtbDoKKyAgICAgICAgTm93IHRoYXQgd2UgZGlzcGF0Y2ggYW4gZXJyb3IgZXZlbiB3
aGVuIGFib3J0aW5nIGEgbG9hZCBkdWUgdG8gbmF2aWdhdGlvbiwgZXJyb3IgZXZlbnQKKyAgICAg
ICAgaGFuZGxlciB3YXMgZ2V0dGluZyBjYWxsZWQgYWZ0ZXIgbm90aWZ5RG9uZSgpLgorCiAyMDEx
LTA1LTEzICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL2ludGVycnVwdGVkLXVwZGF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1
cHRlZC11cGRhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNDE6IFJlbG9hZGluZy4uLgorVGVzdCB0aGF0IGFuIGFwcGxp
Y2F0aW9uIGNhY2hlIHVwZGF0ZSB3b3JrcyBhZ2FpbiBhZnRlciBpbnRlcnJ1cHRpb24uCisKK1Jl
bG9hZGVkCitDSEVDS0lORworRE9XTkxPQURJTkcKK1BST0dSRVNTIDAvOQorUFJPR1JFU1MgMS85
CitQUk9HUkVTUyAyLzkKK1BST0dSRVNTIDMvOQorUFJPR1JFU1MgNC85CitQUk9HUkVTUyA1LzkK
K1BST0dSRVNTIDYvOQorUFJPR1JFU1MgNy85CitQUk9HUkVTUyA4LzkKK1BST0dSRVNTIDkvOQor
Q0FDSEVECisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9p
bnRlcnJ1cHRlZC11cGRhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9pbnRl
cnJ1cHRlZC11cGRhdGUubWFuaWZlc3QiPgorPHA+VGVzdCB0aGF0IGFuIGFwcGxpY2F0aW9uIGNh
Y2hlIHVwZGF0ZSB3b3JrcyBhZ2FpbiBhZnRlciBpbnRlcnJ1cHRpb24uPC9wPgorPHByZSBpZD1s
b2c+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtc2cgKyAiXG4iOwor
fQorCitpZiAoYXBwbGljYXRpb25DYWNoZS5zdGF0dXMpIHsKKyAgICBhbGVydCgiVGhlIGNhY2hl
IGlzIGFscmVhZHkgcHJlc2VudCwgdGVzdCByZXN1bHRzIHdpbGwgYmUgd3JvbmciKTsKK30KKwor
dmFyIGhhdmVSZWxvYWRlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJhcHBjYWNoZS1pbnRlcnJ1
cHRlZC11cGRhdGUtcmVsb2FkZWQiKSA9PSAiWUVTIjsKK2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVt
KCJhcHBjYWNoZS1pbnRlcnJ1cHRlZC11cGRhdGUtcmVsb2FkZWQiKTsKKworaWYgKGhhdmVSZWxv
YWRlZCkKKyAgICBsb2coIlJlbG9hZGVkIik7CisKK2Z1bmN0aW9uIG9uY2hlY2tpbmcoKQorewor
ICAgIGxvZygiQ0hFQ0tJTkciKTsKK30KKworZnVuY3Rpb24gb25kb3dubG9hZGluZygpCit7Cisg
ICAgbG9nKCJET1dOTE9BRElORyIpOworfQorCitmdW5jdGlvbiBvbnByb2dyZXNzKGV2ZW50KQor
eworICAgIGxvZygiUFJPR1JFU1MgIiArIGV2ZW50LmxvYWRlZCArICIvIiArIGV2ZW50LnRvdGFs
KTsKKworICAgIGlmICghaGF2ZVJlbG9hZGVkICYmIGV2ZW50LmxvYWRlZCA9PSAyKSB7CisgICAg
ICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJhcHBjYWNoZS1pbnRlcnJ1cHRlZC11cGRhdGUtcmVs
b2FkZWQiLCAiWUVTIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJSZWxvYWRpbmcuLi4iKTsKKyAg
ICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOworICAgIH0KK30KKworZnVuY3Rpb24gb25u
b3VwZGF0ZSgpCit7CisgICAgbG9nKCJOT1VQREFURSIpOworICAgIGxvZygiXG5QQVNTIik7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmNhY2hlZCgpCit7CisgICAg
bG9nKCJDQUNIRUQiKTsKKyAgICBsb2coIlxuUEFTUyIpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworZnVuY3Rpb24gb25lcnJvcigpCit7CisgICAgbG9nKCJFUlJPUiIpOworICAgIGxv
ZygiXG5GQUlMIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCisKK2FwcGxpY2F0aW9u
Q2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2hlY2tpbmcnLCBvbmNoZWNraW5nLCBmYWxzZSk7Cith
cHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2Rvd25sb2FkaW5nJywgb25kb3dubG9h
ZGluZywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVz
cycsIG9ucHJvZ3Jlc3MsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5l
cignbm91cGRhdGUnLCBvbm5vdXBkYXRlLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2
ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIG9uY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvciwgZmFsc2UpOworCis8L3NjcmlwdD4K
KworPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJl
c291cmNlLXJlZGlyZWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9tYWluLXJlc291cmNlLXJlZGlyZWN0Lmh0bWwJKHJldmlzaW9uIDg2NDQzKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJlc291cmNlLXJlZGlyZWN0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQog
CiBmdW5jdGlvbiBkb25lKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgYXBwbGlj
YXRpb25DYWNoZS5vbmVycm9yID0gbnVsbDsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KICAgICBzZXROZXR3b3JrRW5hYmxlZCh0cnVlKTsKIH0KIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54aHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL25vbi1odG1sLnhodG1s
CShyZXZpc2lvbiA4NjQ0MykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbm9u
LWh0bWwueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDEwIEBAIGZ1bmN0aW9uIGZy
YW1lQ3JlYXRlZCgpCiAgICAgZWxzZQogICAgICAgICBsb2coIkZBSUw6IEZyYW1lLm9ubG9hZCB3
YXMgY2FsbGVkLCBidXQgdGhlIGltYWdlIGRvZXNuJ3Qgc2VlbSB0byBiZSBsb2FkZWQuIik7CiAg
ICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJv
ciA9IG51bGw7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CiB9CiAKIGZ1bmN0aW9uIGVycm9yKCkKQEAgLTk2LDcgKzk4LDcgQEAgZnVuY3Rpb24gZXJy
b3IoKQogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBjYWNoZWQs
IGZhbHNlKTsKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBj
YWNoZWQsIGZhbHNlKTsKIAotYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdlcnJv
cicsIGVycm9yLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBlcnJvcjsKIAog
PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9pbnRlcnJ1cHRlZC11cGRhdGUubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvaW50ZXJydXB0ZWQtdXBkYXRl
Lm1hbmlmZXN0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvaW50ZXJydXB0ZWQtdXBkYXRlLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwIEBACitDQUNIRSBNQU5JRkVTVAorYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRhdGUt
MQorYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRhdGUtMgorYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRh
dGUtMworYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRhdGUtNAorYWJlLnBuZz9pbnRlcnJ1cHRlZC11
cGRhdGUtNQorYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRhdGUtNgorYWJlLnBuZz9pbnRlcnJ1cHRl
ZC11cGRhdGUtNworYWJlLnBuZz9pbnRlcnJ1cHRlZC11cGRhdGUtOAorYWJlLnBuZz9pbnRlcnJ1
cHRlZC11cGRhdGUtOQo=
</data>
<flag name="review"
          id="86702"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="86710"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93540</attachid>
            <date>2011-05-13 17:38:14 -0700</date>
            <delta_ts>2011-05-13 21:20:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>AppcacheReload.txt</filename>
            <type>text/plain</type>
            <size>8290</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDUtMTMgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgSFRNTDUgQXBwbGljYXRpb24gQ2FjaGUgVXBkYXRlIEZhaWx1cmVz
IG9uIFBhZ2UgUmVmcmVzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjA1OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzk0MTg2Mzk+CisKKyAgICAg
ICAgVGVzdDogaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbAorCisg
ICAgICAgIFRoZSByZWFzb24gd2FzIHR3by1mb2xkOgorICAgICAgICAxKSBDYWNoZSBncm91cCBz
dGF0ZSB3YXNuJ3QgZnVsbHkgcmVzZXQgYWZ0ZXIgYSBmYWlsZWQgY2FjaGUgdXBkYXRlIChvciBh
biBpbml0aWFsIGxvYWQpLgorICAgICAgICAyKSBUaGUgY2FjaGUgZ3JvdXAgaXMgbm90IGRlbGV0
ZWQgdW50aWwgYWZ0ZXIgYWZ0ZXIgdGhlIG5hdmlnYXRpb24gKGZyb20gYXV0b3JlbGVhc2UgcG9v
bCksCisgICAgICAgIHNvIHRoZSBmYWlsZWQgYW5kIHNvcnJ5IG9sZCB2ZXJzaW9uIHdhcyBwaWNr
ZWQgdXAgYnkgY2FjaGUgc2VsZWN0aW9uIGFsZ29yaXRobS4KKworICAgICAgICBUaGUgbGF0dGVy
IGlzIG1vcmUgb2YgYSBzdXJwcmlzaW5nIGJlaGF2aW9yIHRoYW4gYSBwcm9ibGVtIGluIGl0c2Vs
Zi4gS2VlcGluZyBhbiBhcHBjYWNoZSBpbgorICAgICAgICBtZW1vcnkgZm9yIHJlbG9hZCBpcyBn
ZW5lcmFsbHkgYSBnb29kIHRoaW5nIGZvciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzdG9wTG9hZGluZyk6IEFkZGVkIGEgRklYTUUgYWJvdXQg
aGFsZi1iYWtlZCBzdGF0ZSByZXNldHRpbmcKKyAgICAgICAgY29kZSB0aGF0IHNlbnQgbWUgbG9v
a2luZyBmb3IgYSB3cm9uZyBmaXggb3JpZ2luYWxseS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmdJbkZyYW1lKTogU3RvcHBlZCBsb2FkIGlzIGFu
IHVwZGF0ZSBmYWlsdXJlIGxpa2UKKyAgICAgICAgYW55IG90aGVyLCBzbyB3ZSBzaG91bGQgY2Fs
bCBjYWNoZVVwZGF0ZUZhaWxlZCgpLCB3aGljaCBrbm93cyBob3cgdG8gcmVzZXQgc3RhdGUuCisK
IDIwMTEtMDUtMTMgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lv
biA4NjQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsNyArMzQ1LDggQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OnN0b3BMb2FkaW5nKAogICAgICAgICBtX2N1cnJlbnRIYW5kbGUt
PmNhbmNlbCgpOwogICAgICAgICBtX2N1cnJlbnRIYW5kbGUgPSAwOwogICAgIH0gICAgCi0gICAg
CisKKyAgICAvLyBGSVhNRTogUmVzZXR0aW5nIGp1c3QgYSB0aW55IHBhcnQgb2YgdGhlIHN0YXRl
IGluIHRoaXMgZnVuY3Rpb24gaXMgY29uZnVzaW5nLiBDYWxsZXJzIGhhdmUgdG8gdGFrZSBjYXJl
IG9mIGEgbG90IG1vcmUuCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZCA9IDA7CiAgICAgbV9wZW5k
aW5nRW50cmllcy5jbGVhcigpOwogfSAgICAKQEAgLTM5Nyw3ICszOTgsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c3RvcExvYWRpbmdJCiAgICAgaWYgKGZyYW1lICE9IG1fZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BMb2FkaW5nKCk7CisgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldE5ld2VzdENhY2hl
KFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0Q2FjaGUpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4NjQ3MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDExLTA1LTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEhUTUw1
IEFwcGxpY2F0aW9uIENhY2hlIFVwZGF0ZSBGYWlsdXJlcyBvbiBQYWdlIFJlZnJlc2gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85NDE4NjM5PgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9pbnRlcnJ1cHRlZC11cGRhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9pbnRlcnJ1cHRlZC11cGRhdGUubWFuaWZl
c3Q6IEFkZGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJlc291cmNl
LXJlZGlyZWN0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9ub24taHRtbC54
aHRtbDoKKyAgICAgICAgTm93IHRoYXQgd2UgZGlzcGF0Y2ggYW4gZXJyb3IgZXZlbiB3aGVuIGFi
b3J0aW5nIGEgbG9hZCBkdWUgdG8gbmF2aWdhdGlvbiwgZXJyb3IgZXZlbnQKKyAgICAgICAgaGFu
ZGxlciB3YXMgZ2V0dGluZyBjYWxsZWQgYWZ0ZXIgbm90aWZ5RG9uZSgpLgorCiAyMDExLTA1LTEz
ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2lu
dGVycnVwdGVkLXVwZGF0ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11
cGRhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMzc6IFJlbG9hZGluZy4uLgorVGVzdCB0aGF0IGFuIGFwcGxpY2F0aW9u
IGNhY2hlIHVwZGF0ZSB3b3JrcyBhZ2FpbiBhZnRlciBpbnRlcnJ1cHRpb24uCisKK1JlbG9hZGVk
CitDSEVDS0lORworRE9XTkxPQURJTkcKK1BST0dSRVNTIDAvOQorUFJPR1JFU1MgMS85CitQUk9H
UkVTUyAyLzkKK1BST0dSRVNTIDMvOQorUFJPR1JFU1MgNC85CitQUk9HUkVTUyA1LzkKK1BST0dS
RVNTIDYvOQorUFJPR1JFU1MgNy85CitQUk9HUkVTUyA4LzkKK1BST0dSRVNTIDkvOQorQ0FDSEVE
CisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1
cHRlZC11cGRhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NiBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9pbnRlcnJ1cHRl
ZC11cGRhdGUubWFuaWZlc3QiPgorPHA+VGVzdCB0aGF0IGFuIGFwcGxpY2F0aW9uIGNhY2hlIHVw
ZGF0ZSB3b3JrcyBhZ2FpbiBhZnRlciBpbnRlcnJ1cHRpb24uPC9wPgorPHByZSBpZD1sb2c+PC9w
cmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtc2cgKyAiXG4iOworfQorCit2
YXIgaGF2ZVJlbG9hZGVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oImFwcGNhY2hlLWludGVycnVw
dGVkLXVwZGF0ZS1yZWxvYWRlZCIpID09ICJZRVMiOworbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0o
ImFwcGNhY2hlLWludGVycnVwdGVkLXVwZGF0ZS1yZWxvYWRlZCIpOworCitpZiAoaGF2ZVJlbG9h
ZGVkKQorICAgIGxvZygiUmVsb2FkZWQiKTsKKworZnVuY3Rpb24gb25jaGVja2luZygpCit7Cisg
ICAgbG9nKCJDSEVDS0lORyIpOworfQorCitmdW5jdGlvbiBvbmRvd25sb2FkaW5nKCkKK3sKKyAg
ICBsb2coIkRPV05MT0FESU5HIik7Cit9CisKK2Z1bmN0aW9uIG9ucHJvZ3Jlc3MoZXZlbnQpCit7
CisgICAgbG9nKCJQUk9HUkVTUyAiICsgZXZlbnQubG9hZGVkICsgIi8iICsgZXZlbnQudG90YWwp
OworCisgICAgaWYgKCFoYXZlUmVsb2FkZWQgJiYgZXZlbnQubG9hZGVkID09IDIpIHsKKyAgICAg
ICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oImFwcGNhY2hlLWludGVycnVwdGVkLXVwZGF0ZS1yZWxv
YWRlZCIsICJZRVMiKTsKKyAgICAgICAgY29uc29sZS5sb2coIlJlbG9hZGluZy4uLiIpOworICAg
ICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBvbm5v
dXBkYXRlKCkKK3sKKyAgICBsb2coIk5PVVBEQVRFIik7CisgICAgbG9nKCJcbkZBSUwgLSB0aGUg
Y2FjaGUgd2FzIGFscmVhZHkgcHJlc2VudCwgc28gd2UgY291bGRuJ3QgdGVzdCBpbml0aWFsIGxv
YWRpbmciKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uY2FjaGVk
KCkKK3sKKyAgICBsb2coIkNBQ0hFRCIpOworICAgIGxvZygiXG5QQVNTIik7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBvbmVycm9yKCkKK3sKKyAgICBsb2coIkVSUk9S
Iik7CisgICAgbG9nKCJcbkZBSUwiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjaGVja2luZycsIG9uY2hlY2tpbmcs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZG93bmxvYWRpbmcn
LCBvbmRvd25sb2FkaW5nLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVu
ZXIoJ3Byb2dyZXNzJywgb25wcm9ncmVzcywgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRF
dmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG9ubm91cGRhdGUsIGZhbHNlKTsKK2FwcGxpY2F0aW9u
Q2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgb25jYWNoZWQsIGZhbHNlKTsKK2FwcGxp
Y2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yLCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorCis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL21haW4tcmVzb3VyY2UtcmVkaXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21haW4tcmVzb3VyY2UtcmVkaXJlY3QuaHRtbAkocmV2aXNp
b24gODY0NDMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL21haW4tcmVzb3Vy
Y2UtcmVkaXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTAgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKIGZ1bmN0aW9uIGRvbmUoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBhcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBudWxsOwogICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQogICAgIHNldE5ldHdvcmtFbmFibGVkKHRy
dWUpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL25vbi1odG1s
LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvbm9u
LWh0bWwueGh0bWwJKHJldmlzaW9uIDg2NDQzKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9ub24taHRtbC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsMTAgQEAg
ZnVuY3Rpb24gZnJhbWVDcmVhdGVkKCkKICAgICBlbHNlCiAgICAgICAgIGxvZygiRkFJTDogRnJh
bWUub25sb2FkIHdhcyBjYWxsZWQsIGJ1dCB0aGUgaW1hZ2UgZG9lc24ndCBzZWVtIHRvIGJlIGxv
YWRlZC4iKTsKICAgICAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgYXBwbGljYXRpb25D
YWNoZS5vbmVycm9yID0gbnVsbDsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIH0KIH0KIAogZnVuY3Rpb24gZXJyb3IoKQpAQCAtOTYsNyArOTgsNyBAQCBm
dW5jdGlvbiBlcnJvcigpCiBhcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hl
ZCcsIGNhY2hlZCwgZmFsc2UpOwogYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdu
b3VwZGF0ZScsIGNhY2hlZCwgZmFsc2UpOwogCi1hcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlz
dGVuZXIoJ2Vycm9yJywgZXJyb3IsIGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9
IGVycm9yOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL2ludGVycnVwdGVkLXVwZGF0ZS5tYW5pZmVzdAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9pbnRlcnJ1
cHRlZC11cGRhdGUubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9pbnRlcnJ1cHRlZC11cGRhdGUubWFuaWZlc3QJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK0NBQ0hFIE1BTklGRVNUCithYmUucG5nP2ludGVycnVw
dGVkLXVwZGF0ZS0xCithYmUucG5nP2ludGVycnVwdGVkLXVwZGF0ZS0yCithYmUucG5nP2ludGVy
cnVwdGVkLXVwZGF0ZS0zCithYmUucG5nP2ludGVycnVwdGVkLXVwZGF0ZS00CithYmUucG5nP2lu
dGVycnVwdGVkLXVwZGF0ZS01CithYmUucG5nP2ludGVycnVwdGVkLXVwZGF0ZS02CithYmUucG5n
P2ludGVycnVwdGVkLXVwZGF0ZS03CithYmUucG5nP2ludGVycnVwdGVkLXVwZGF0ZS04CithYmUu
cG5nP2ludGVycnVwdGVkLXVwZGF0ZS05Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>