[Pkg-mozext-commits] [firebug] 05/09: Imported Upstream version 2.0.16
David Prévot
taffit at moszumanska.debian.org
Sat Apr 2 01:40:38 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository firebug.
commit 5fd42179d13b9291ab2f9ca5190aefc8dd004357
Merge: 8741367 edf44cd
Author: David Prévot <david at tilapin.org>
Date: Fri Apr 1 21:19:13 2016 -0400
Imported Upstream version 2.0.16
META-INF/manifest.mf | 29 +++++++++++--------
META-INF/mozilla.rsa | Bin 4188 -> 4188 bytes
META-INF/mozilla.sf | 4 +--
content/firebug/branch.properties | 2 +-
content/firebug/firefox/browserOverlay.js | 11 ++-----
content/firebug/lib/channel.js | 46 ++++++++++++++++++++++++++++++
content/firebug/lib/http.js | 14 +++------
content/firebug/net/sourceCache.js | 16 +++--------
content/firebug/net/tabCache.js | 13 +++------
install.rdf | 6 ++--
10 files changed, 84 insertions(+), 57 deletions(-)
diff --cc META-INF/manifest.mf
index 4e39f9f,0000000..4dbc8f6
mode 100644,000000..100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@@ -1,3157 -1,0 +1,3162 @@@
+Manifest-Version: 1.0
+
+Name: install.rdf
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: G592m92RITOyHEIJt/5QDw==
- SHA1-Digest: eYxW8uq/kChYUBGA/X+xy8IQicw=
++MD5-Digest: xRusy5pQyUvlRY7HRawzBw==
++SHA1-Digest: 7YjIi1dfIfXUgjAcGqdfYBGuGGg=
+
+Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bdcjVC3MPhyaQDhDfbOh6A==
+SHA1-Digest: e884HHfJg++1lsgHg/Z+FvYLM+4=
+
+Name: bootstrap.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: w/4lqvFkLBAM88mkSlAfPQ==
+SHA1-Digest: 2VyPyLcNKkp4rqIg4cZf9bL5ciM=
+
+Name: build.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hDscyxUedUWHS3CPE6/fwQ==
+SHA1-Digest: ySlbVIfMcV5XlSvqEME00GAoxNM=
+
+Name: content/firebug/branch.properties
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: AlrMPMU4aBLHq3yahFreWw==
- SHA1-Digest: Yn6359RQQYn9c5aN1sSRm01Wg3g=
++MD5-Digest: nh94sscGsIbPe9TJ0zwimQ==
++SHA1-Digest: J8XBAa297u8g5uw3ERPXCwDEavs=
+
+Name: content/firebug/firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MQUAuUtQ+N0RP9BdiVLeRQ==
+SHA1-Digest: XpMkLp1UY+6GThNZu2cEOmskL2M=
+
+Name: content/firebug/firebug.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: r/QjQ/uJlspfQL2GQcMeiQ==
+SHA1-Digest: pSKqp41rol4yvvXI2WLvbzhifeA=
+
+Name: content/firebug/firebugOverlay.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yz4K2TFMmJplsYA8cAlzFQ==
+SHA1-Digest: A1xja27+mGZOBe79eZLU5ZjFjaY=
+
+Name: content/firebug/legacy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cyOW1DFRc3Va8V/ZkdfMdA==
+SHA1-Digest: XHSukn6s2dd3wD3Mj4MZp09VGpQ=
+
+Name: content/firebug/main.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6jr/9rY8z+Xxeq+IxwrFTQ==
+SHA1-Digest: 81D8MZQ81fOkzqCrMuuOIieUguI=
+
+Name: content/firebug/moduleConfig.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fpoL0QD2LRX4oG+r3w20Vg==
+SHA1-Digest: TedHD9/Ksyia66k9R9fPNqHTVrE=
+
+Name: content/firebug/trace.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kBBL0ffN+Iqbins4CIb+GA==
+SHA1-Digest: gz7eAP1oeWQsIWCAIyz4RZO1rJo=
+
+Name: content/firebug/accessible/a11y.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1GMHJA6cYhlEnJFDBg0STA==
+SHA1-Digest: 1foz3CTUzwqK51J4qVFymaYx0Nk=
+
+Name: content/firebug/bti/inProcess/browser.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2Mj/QRZaqswkbQj1JUaQyA==
+SHA1-Digest: vtk0WnWyDr7NQ++0vvkXRtZkyWM=
+
+Name: content/firebug/bti/inProcess/compilationunit.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: F3Qp980L5CrTY/+kEyWyCA==
+SHA1-Digest: JYzQg5NrV7t7XrccSZUJetB9GlU=
+
+Name: content/firebug/bti/inProcess/javascripttool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MLLmOIMMPK8mirXlkC/Brg==
+SHA1-Digest: 9GhR0RfQ8kmcvFpAiv5Qt9UpGUs=
+
+Name: content/firebug/bti/inProcess/webApp.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZmFYBvLYXa5tdiHyddkz/g==
+SHA1-Digest: HFS7yQCI/Uvv9I1xDTG3zf6Rgbc=
+
+Name: content/firebug/chrome/activableModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pPl+YUw1q6hsMj/1hSigLg==
+SHA1-Digest: igfoscZz+jeC3MCsmFDzSxv0DZQ=
+
+Name: content/firebug/chrome/activablePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: o5t7i1P2w3fjXtj8VphGgA==
+SHA1-Digest: CEPlzQfBTYEuELdxkB8+xT6Y0cM=
+
+Name: content/firebug/chrome/activation.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LjftwhVIyEw3r3xKyBq2CA==
+SHA1-Digest: FOzQ1heSaTLORKD/GXh7QPeqqpA=
+
+Name: content/firebug/chrome/annotations.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Efni1TVUHpCuKEizqEkH4A==
+SHA1-Digest: J19yiDaLSC92GDLzgzR4RUBBIj4=
+
+Name: content/firebug/chrome/balloonNote.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HcbPGUB96cOiodIRoN+SFg==
+SHA1-Digest: SudHI+wA+KO+beL7GLI2XXv/Pt8=
+
+Name: content/firebug/chrome/chrome.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5sCnpBRt9vXcB6jAXno3yg==
+SHA1-Digest: rFqv0piYpfyX9To/aB5474ptKnM=
+
+Name: content/firebug/chrome/domTree.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6eRbKGi/8KpRijTc9x2g7g==
+SHA1-Digest: OrQN54zVTFJpfefxY0f8364k+7s=
+
+Name: content/firebug/chrome/eventSource.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZXjDxxpoC0N0RGtBWYib3w==
+SHA1-Digest: 8qWnSghi0XJxRzEalownN0DedZU=
+
+Name: content/firebug/chrome/firefox.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t8otGbiNLZ3GsXjKOIKvFg==
+SHA1-Digest: r+qp46W0Q6nOUiv4Kv6mATffG7o=
+
+Name: content/firebug/chrome/infotip.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fq2D+/BM72RCBxjX34XpsA==
+SHA1-Digest: w8iUQ1+akBSCuQ4Byf6V3E76pP4=
+
+Name: content/firebug/chrome/knownIssues.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vSjjxd2airNqOr1mRo135w==
+SHA1-Digest: RRk++e99zZnNzIddzbaUZvBgMRc=
+
+Name: content/firebug/chrome/measureBox.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3iONxHzwPF+rt9eCV+bWIQ==
+SHA1-Digest: I3LWwk/gE8JydAKKv5HWrOVUOXU=
+
+Name: content/firebug/chrome/menu.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VT4M9ru0umaWrGpzCgcLMA==
+SHA1-Digest: bN7wZkVCQV1IeNZ/ehb3Ixi496U=
+
+Name: content/firebug/chrome/module.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3k6GA4mkrc3KWoenNLbpuA==
+SHA1-Digest: YgbpguJWvC3+W2ToC2DRVAJ4vxg=
+
+Name: content/firebug/chrome/navigationHistory.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: agIx3H91FeiO20ZnmBwFcQ==
+SHA1-Digest: mvCgwBOHvzBQKft5SdqWlU3HQ/s=
+
+Name: content/firebug/chrome/panel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9QszMBUbPM5H5IlnN7jg5A==
+SHA1-Digest: 8fScKnmdFOdNMw4u6NrpYoYlEBU=
+
+Name: content/firebug/chrome/panelActivation.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8dTdQykizF7/+CzEMAXYoQ==
+SHA1-Digest: uyyj5Ol5ScO5ukWlen3YsTmiQeI=
+
+Name: content/firebug/chrome/panelNotification.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: O+cTZGGqslrssWg4OtIo6g==
+SHA1-Digest: SyPlj/V7BJdMtX2TNuhC+k6Otfs=
+
+Name: content/firebug/chrome/panelSelector.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mIqlVDOyOKNY6z7QRjdFgQ==
+SHA1-Digest: b/Kpg3gYKlzwaA02peeCJlTZHyo=
+
+Name: content/firebug/chrome/plugin.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GuRDXNnJO9WBgccPkRqZTg==
+SHA1-Digest: T3xNIfbpmG228xLM3jDsgkhqdSc=
+
+Name: content/firebug/chrome/privacy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kwR5G8zLWs7lZku0TFfMJQ==
+SHA1-Digest: dUVDhmIlJTpUMm6uNlb6ycVcKwI=
+
+Name: content/firebug/chrome/rep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: T5px3PEYhlQv/7U08Wf0SA==
+SHA1-Digest: 2x6Ktpqn/KUxjVpL1toO5LImRDs=
+
+Name: content/firebug/chrome/reps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SEKAZPSSH/+j6FM81o5JwA==
+SHA1-Digest: 4+LYpBp5wbM6/hxQQX9eqtDUWUw=
+
+Name: content/firebug/chrome/searchBox.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: o5RaYdFLsNxz7b8RIWCdYQ==
+SHA1-Digest: Yqe1to6z7thN3853hhSkhyIt04s=
+
+Name: content/firebug/chrome/shortcuts.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ek8Kw0O0VNudh99qvr8zlg==
+SHA1-Digest: ZIlylR2MHsOPIrSbeeoG7g1GhRo=
+
+Name: content/firebug/chrome/statusPath.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ifiEwstyrFR7gi+ls82VEg==
+SHA1-Digest: AxswfvZhrU5iFcbTzPZ74tnIwn8=
+
+Name: content/firebug/chrome/tabContext.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CQqjQCFDhREXxNxz6zTHug==
+SHA1-Digest: p7ecfjvXu8hZmdsP9ttRf+/5bUE=
+
+Name: content/firebug/chrome/tableRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MHRGhpp/XZqSR+H7NCfmbA==
+SHA1-Digest: W7iK3khdHR8vYO556yrKtuxp9fM=
+
+Name: content/firebug/chrome/tabWatcher.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HDl82NHua+zHRgt5+msErg==
+SHA1-Digest: vZGmak2HlK7LlAkmS16rwQgpzK4=
+
+Name: content/firebug/chrome/toggleSidePanels.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ES6bpjFN5EpKjzkRFN7aug==
+SHA1-Digest: 6GZuQMN+Zk1gHCwaNS2HxHKpe0o=
+
+Name: content/firebug/chrome/tool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NhqAqLh5lYrCFsrWa9rp7g==
+SHA1-Digest: 2Gju+OjFTys6z7jpK9UUsTG7Png=
+
+Name: content/firebug/chrome/toolbar.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lfNbMHYniXPjgNlOfMLJJg==
+SHA1-Digest: t7xjHuJmHYwYf8FppaLoHvz6A90=
+
+Name: content/firebug/chrome/window.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dLuj7T0wPUhwaRKcK1wf5A==
+SHA1-Digest: LB2PZ6J2DZyXQ/SC8rMqBO8IEKQ=
+
+Name: content/firebug/console/autoCompleter.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mMxxyaTrR6iefZSIBE4mpQ==
+SHA1-Digest: hfrpBfgI8gF65jFM/BRaVAat9FA=
+
+Name: content/firebug/console/closureInspector.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FcLSdH54BABNk0+LZfSjMg==
+SHA1-Digest: DGbwFkIo0BoJGKJiTLjeBK2z438=
+
+Name: content/firebug/console/commandEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qUMZrYah8SrHnHY3Pbo4fg==
+SHA1-Digest: +g3HoqMwzPgLGHyatWArhlAw4ss=
+
+Name: content/firebug/console/commandHistory.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FfnqJsgQ3rftXr+QEd8Aog==
+SHA1-Digest: T8XS6RXU7uLWYpiOmgEgvDCBNsk=
+
+Name: content/firebug/console/commandLine.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4v5EME+X1YUkbVwPUqQDJQ==
+SHA1-Digest: DT6Me54v0Qn1mQ+Zoamfzgxoovs=
+
+Name: content/firebug/console/commandLineAPI.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4UADeSvsxDSEN4cmTtOOiA==
+SHA1-Digest: 3fpcB05PTrUniKyofollHAA+v8A=
+
+Name: content/firebug/console/commandLineExposed.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vAU58xiSWbyu/scBWXRhRA==
+SHA1-Digest: FP+P85XiqQymQOlkoCYBIukcCaA=
+
+Name: content/firebug/console/commandLinePopup.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: THhlFARwA0dU4bUhGVgVIA==
+SHA1-Digest: I8ChsVIM1lUf6lFPpMStBAG3IJc=
+
+Name: content/firebug/console/console.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5v7uFz05eVHHXqdyYlCayA==
+SHA1-Digest: wsKDx1BYOkgPTp/a5xzPHIe0Kto=
+
+Name: content/firebug/console/consoleBase.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XxKBPyceMrD1abacIfuk4g==
+SHA1-Digest: 0CvgbEzchC2nbYyi/mw5J8Ttef0=
+
+Name: content/firebug/console/consoleExposed.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: M2rY8Uj2Eun8SCK0mqplLA==
+SHA1-Digest: JW/fNJRpWKT94PO2rVIoUKQMKVU=
+
+Name: content/firebug/console/consoleInjector.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: frUTZEcGBBUUSwfjgmdrAg==
+SHA1-Digest: D+4Nla0el6vLT1nBGXA3MdOc7HI=
+
+Name: content/firebug/console/consolePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 14OzKPcN4BwDpsBrIBl88Q==
+SHA1-Digest: C/URVuUwCszOj1XW8t0BYb+l5kA=
+
+Name: content/firebug/console/errorCopy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: g0WHqyRu2a81fLLcf5DyTA==
+SHA1-Digest: fluPTGkAR7Hn6ickgTpvOMnhCE8=
+
+Name: content/firebug/console/errorMessageObj.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Gcxuew98nvIrgnyzx0VyYg==
+SHA1-Digest: qEpB5j+yBZh4K0U72PXhCImzM9o=
+
+Name: content/firebug/console/errorMessageRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hZnrZDxEY06V7oCyHof8HQ==
+SHA1-Digest: yO6hKCZE0Zte30Ud9wwCn2F861Y=
+
+Name: content/firebug/console/errors.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dJ07bvcSFJvbztrl2nHl/w==
+SHA1-Digest: 2TWxBLQZMQZcg5bcfswlhvY+ZaA=
+
+Name: content/firebug/console/errorStackTraceObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9Gc+sw4GDe/0csVBE9bAiA==
+SHA1-Digest: IjzDWM8EJ9Cqkgp13Gtir3UqaMY=
+
+Name: content/firebug/console/exceptionRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SaDu1rIDzYX1NPPSattqrw==
+SHA1-Digest: 3uWxFRXfNOzOBQ5oq0yZ+kUgu6U=
+
+Name: content/firebug/console/functionMonitor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: g8k+3oGn1m1vNkaf3LYH+A==
+SHA1-Digest: KEnJ/TxBEK6zzDtq+RVOk3WZ5Pg=
+
+Name: content/firebug/console/inlineJSEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LA4+dyhBn/1o6elTJ63YoQ==
+SHA1-Digest: sAh6B99EBXBbNWZ+pj+XoaIijaI=
+
+Name: content/firebug/console/performanceTiming.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: biGPATlsVgese6+d6hHaVQ==
+SHA1-Digest: HfqCrdF0Ycicw1yNxoCAPAYLGjk=
+
+Name: content/firebug/console/profilerEngine.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NqiwkaKuuzp3eVLeRo5PiA==
+SHA1-Digest: lMabs7scnoztr7fwcb2lbDPYaOw=
+
+Name: content/firebug/console/toggleCommandEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mMIEa3vAWoiPoclM6mf83g==
+SHA1-Digest: sg7CVWpI6r7JdwiEB06MGpAZC/o=
+
+Name: content/firebug/console/commands/commandLineHelp.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SwZ0+hc695auKqMh0FysCg==
+SHA1-Digest: paEmsvg2cXflb20+/HyfInnBBvs=
+
+Name: content/firebug/console/commands/commandLineInclude.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ydr+icJ2WiRle5EMY7AQvg==
+SHA1-Digest: FBEgBlDxvO9zPi/Pfu9C6l4blmc=
+
+Name: content/firebug/console/commands/eventMonitor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rDb6YTD84YMsmVF+/DEmsw==
+SHA1-Digest: sCMVWQudiNxv4C5VFrdycsE9KE0=
+
+Name: content/firebug/console/commands/getEventListeners.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0/U6g6gXTm3YuysZcVRObw==
+SHA1-Digest: gVEX4SGMvFF4N15H4gT/UZN5y3Q=
+
+Name: content/firebug/console/commands/lastCommandLineResult.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mAOGyFU3c6EYJHrD78MHzg==
+SHA1-Digest: Yew6aNCC30yNb2HpSy9jcClld94=
+
+Name: content/firebug/console/commands/profiler.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: a5KgtDOa/jzRXUKHnQXvZQ==
+SHA1-Digest: fHzxH/mXOQIRsnLybKn7I13QKzA=
+
+Name: content/firebug/console/commands/useInCommandLine.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AJrh6rv2jTUJrloWgyuClA==
+SHA1-Digest: e0RquhNhq72Mfz1ylBAXEg2FSkE=
+
+Name: content/firebug/cookies/baseObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2gR0Ly27h0/9akTEZo576A==
+SHA1-Digest: rj3GoVWziv/RxoBVHix733NpRJc=
+
+Name: content/firebug/cookies/breakpoints.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qgGzOP9Rv1hYkEz27WtG+w==
+SHA1-Digest: GpYZr4Uv6p30jV6kaNADMyCnsNI=
+
+Name: content/firebug/cookies/cookie.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JG7T4oGdstrRUTwRygHsWQ==
+SHA1-Digest: nCdHpYBrrR4ITdN/8LsLRDEeT4U=
+
+Name: content/firebug/cookies/cookieClipboard.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GICei1DzjUfnDYdZNwWKyg==
+SHA1-Digest: 8MDIJekCsEYnR0KbV6as7JzLuWU=
+
+Name: content/firebug/cookies/cookieEvents.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ksu7L13yLxJny7Uqsio8Vw==
+SHA1-Digest: LCXdLfvMoptd3Oftycv5vcoqSvI=
+
+Name: content/firebug/cookies/cookieModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: a3hZ2YLHwFprClhWYOCNTA==
+SHA1-Digest: P+LLPyPSQwE2wwF8nOkule1k67g=
+
+Name: content/firebug/cookies/cookieObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tD/okH6S5j8Efv/Ic9I4cA==
+SHA1-Digest: ir+/CRPVnKJBRHBUvFYrAk7ridY=
+
+Name: content/firebug/cookies/cookiePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qLMHtssSiEhBhKeko1WlBg==
+SHA1-Digest: KSmZGNwjglfIKCSaZDPf+QAlWD8=
+
+Name: content/firebug/cookies/cookiePanel.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6fRG9WEJaUF9dZiURWKwrw==
+SHA1-Digest: woYy8y+XMb+d5Gns0AYwb41swEg=
+
+Name: content/firebug/cookies/cookiePermissions.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PD6yz53Byismd3TFnfTolw==
+SHA1-Digest: jzr3GORI4I3wdy6q0Pa4YDbZ0aI=
+
+Name: content/firebug/cookies/cookieReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: H5bX/taDSaRIWHnjvdALxA==
+SHA1-Digest: /BR9D0/UyyzspSZFr2BxC/MVD00=
+
+Name: content/firebug/cookies/cookies.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 543ZGbnpZKrGG2eOM61w9A==
+SHA1-Digest: V9vJEg6iHn+wQOxleELu3B+z27o=
+
+Name: content/firebug/cookies/cookieUtils.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LQhPY8Ripb2DfTB36rWkIw==
+SHA1-Digest: ajy1ZNBPU1oHJpn81BOU1KvYuj4=
+
+Name: content/firebug/cookies/dateTimePicker.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1onma4s13lMt3dX9zqE6sg==
+SHA1-Digest: 6pZw26RXutE+OLZkPjrVMVVqcac=
+
+Name: content/firebug/cookies/editCookie.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fxlZVS+v/qP8jsOsm1yl1Q==
+SHA1-Digest: 63IdJtVfGdFMUBceGk0nkZJrTPY=
+
+Name: content/firebug/cookies/editCookie.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dxBCq+5RfuExjNaid2K4pA==
+SHA1-Digest: tYObghcYWWa/bP/tIW4/e8DawV4=
+
+Name: content/firebug/cookies/editCookie.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9EPHPzT8/DetOLEsi22Qnw==
+SHA1-Digest: lCWX2Q8iNrNiQCGkz+LXtKqhpus=
+
+Name: content/firebug/cookies/headerResizer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TZ6K9/C8MOIIlA0Q4qrDrA==
+SHA1-Digest: mmYYES9ZyjEEG6OiliAZ6wivonU=
+
+Name: content/firebug/cookies/httpObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zNMTjNzMkpEg33BkYQ2dGw==
+SHA1-Digest: 2ox3XVKDP3SEw9obWXfX9I8aru0=
+
+Name: content/firebug/cookies/legacy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: l67sr/87QYikaDOvuMvBUg==
+SHA1-Digest: UAIyncRorgrWWylVu1wOhFOO1G0=
+
+Name: content/firebug/cookies/menuUtils.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rwb0RSH9acr504vMAc7rCg==
+SHA1-Digest: zW/sdqG9qpZhytGkTgHDjai/Zp4=
+
+Name: content/firebug/cookies/popupFilterPanel.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JU/ejY09fhZ4wz7cu+obVg==
+SHA1-Digest: 9PCqgo81sMl26Fwxg0SZg/0lKLE=
+
+Name: content/firebug/css/autoCompleter.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vb55QChxkhxluPkhyFJmHg==
+SHA1-Digest: hdHQc4eqIVezaZpFZesIdYNeHgE=
+
+Name: content/firebug/css/computedPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nLdeScK9hayrLYZwYKAuLg==
+SHA1-Digest: 0rFd95THTnBLExRCqt2leJkrRRI=
+
+Name: content/firebug/css/cssDirtyListener.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vuUygix3nyVIu+QB0/LNMg==
+SHA1-Digest: uQUCmMo2kE2dc6UC9tXQUqxAQps=
+
+Name: content/firebug/css/cssEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hB37Fv1MZG3tINES0cQrlA==
+SHA1-Digest: obBM3fZ+zId3tCENnHDSSTCtQvg=
+
+Name: content/firebug/css/cssModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: I/l0OHKw+DSHfidPkV8stQ==
+SHA1-Digest: 5CHP4k0+gJXGW06o9KsG0TVm5Xg=
+
+Name: content/firebug/css/cssPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IaImERV/rdRvfCPrrlyJXQ==
+SHA1-Digest: QBjIzzw8T3OQ+z977hK3ZIH93Sk=
+
+Name: content/firebug/css/cssPanelMutationObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: W5VS3gBcz5dm83UZHJ76yg==
+SHA1-Digest: LNPkq9tECH+niKe+T+u9XfhmdSo=
+
+Name: content/firebug/css/cssPanelUpdater.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qYDETXFkKb/VowtgxKRsng==
+SHA1-Digest: PL+OALjH6xy0rZspVr22YHLs8vs=
+
+Name: content/firebug/css/cssReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 13rf6zFQWtQL7t/9VgDzVQ==
+SHA1-Digest: ACep+cO4NaJcqcG60RRUci7Nu2o=
+
+Name: content/firebug/css/cssRuleEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NmqX1kDYBWdHl2quTyrr5g==
+SHA1-Digest: Jj8GOK1+BWm9/7JF4iG7ctQB9F4=
+
+Name: content/firebug/css/loadHandler.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BAB3tcdDd5Er/KjXgCXT2A==
+SHA1-Digest: s4JgGBh6uAx3kWSxxoOdoI1VOOY=
+
+Name: content/firebug/css/selectorEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: r33k8QUa7oaQGgthQm/8DQ==
+SHA1-Digest: vDtX2qYo+bdJnI58GkzdYAbCTPI=
+
+Name: content/firebug/css/selectorModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Hfa1pdkd/PlTXSv7NwxCIA==
+SHA1-Digest: oL6YU/o+656ZsKbJZcZiakUWaCo=
+
+Name: content/firebug/css/selectorPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: s3ZFQA/dO/6OxXtm7uJlFw==
+SHA1-Digest: wxujNtvezemNpBlvIzbgu1b57+I=
+
+Name: content/firebug/css/stylePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uCsxnMnBrYKYKNsG7OE8tQ==
+SHA1-Digest: ydCShYfVFVc6KWgfY7dc17BPc0E=
+
+Name: content/firebug/css/styleSheetEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: x5uhY3UV2bsC7GuSVYSzMg==
+SHA1-Digest: 1pfwNsHPo2X9hyrrPNsWTMO+HvE=
+
+Name: content/firebug/debugger/commands.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BpbzwOCK3IrAX1xtBNbVvw==
+SHA1-Digest: fZKfvVqi2xCUMOJrutz/F3LhCwE=
+
+Name: content/firebug/debugger/debugger.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: B68XNsaRMMyY6bJZopN/6g==
+SHA1-Digest: LfYUpkt4zEllFxrfu5mpcViftmE=
+
+Name: content/firebug/debugger/debuggerHalter.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ese0ZF+LwcrD5oPFaEeI7w==
+SHA1-Digest: aTwFVb418R3Od08obFsBqqEdASQ=
+
+Name: content/firebug/debugger/debuggerLib.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gs1IH+6MMHld9RGUYmbkCA==
+SHA1-Digest: wxJgdWxw7IMstbe10xJqxCTuBvc=
+
+Name: content/firebug/debugger/debuggerTool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iRSK02MKBEEHIsOJE+WFoQ==
+SHA1-Digest: xv2NQao537zbs1Sar35quFJk9vE=
+
+Name: content/firebug/debugger/main.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZkL6JXdxDL15dNs8hRrwGg==
+SHA1-Digest: D7F9vqSGEFsthSgq9ji0xgKd+xI=
+
+Name: content/firebug/debugger/rdp.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5Eo+KqpBRsT7yECOgA8rqQ==
+SHA1-Digest: ac4gIaBPSX8BPLz3qK3FYuC2xmg=
+
+Name: content/firebug/debugger/actors/breakpointActor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xzIRFdVR7OFoMxTMzYGOpA==
+SHA1-Digest: 8tzbIyvHI3SgOpQBpgxVhHo6jHQ=
+
+Name: content/firebug/debugger/actors/elementActor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UC3qb9vBea8V3fOfxhYMwQ==
+SHA1-Digest: iBVZcVeYo1pG223ZTfkp/LqjUFc=
+
+Name: content/firebug/debugger/actors/objectActor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RgHhHGW7UFNkBOfvjCYg2w==
+SHA1-Digest: I+sE6SrQG+opbz1nOT+1+loBXtU=
+
+Name: content/firebug/debugger/actors/threadActor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jAdle0p0+3xRG3vEYeRpVw==
+SHA1-Digest: 9xfoZU1B1x7lo5hQgmHdiv5qjSM=
+
+Name: content/firebug/debugger/breakpoints/breakOnError.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dvm7+x4eh09Hej20OxfqFw==
+SHA1-Digest: xl8Ax81xREdxyLeWz0agGKrN+Rk=
+
+Name: content/firebug/debugger/breakpoints/breakOnNext.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qhLxckaVC35yUrnX086g4Q==
+SHA1-Digest: vkYB/9VRfgxJq1Gps/E8aYSNMIM=
+
+Name: content/firebug/debugger/breakpoints/breakpoint.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C7VZ7xWR5c23wilBH54ueA==
+SHA1-Digest: PYBtI2Xhyrf344eYkAiN1SsU7b8=
+
+Name: content/firebug/debugger/breakpoints/breakpointConditionEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Atob6ArNYcoyLYAmbqz6Tg==
+SHA1-Digest: te3dSb/0sEXwvX47O5V2hUNkSmk=
+
+Name: content/firebug/debugger/breakpoints/breakpointGroup.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qBVLaEBaEehMrhX12R84ng==
+SHA1-Digest: iBu2sV9x4QFl/R4VbRPmYnVGEkg=
+
+Name: content/firebug/debugger/breakpoints/breakpointModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xciGCDmlAPXQAT83+FZg4A==
+SHA1-Digest: 1P2BFTXUF6VU0umZa5OKdQ2uoJk=
+
+Name: content/firebug/debugger/breakpoints/breakpointPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rEj4gJeVrq6W0x4eBWWdkA==
+SHA1-Digest: j46RCOQTPVLh34EnjT5Jf50SDvU=
+
+Name: content/firebug/debugger/breakpoints/breakpointReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4z/EW8/P9QY1VYJm+hEOqg==
+SHA1-Digest: W2XMapUC854NCRrJ+8ekhLNy0dg=
+
+Name: content/firebug/debugger/breakpoints/breakpointStore.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oXm06sh2KKabSnJkxRi9kA==
+SHA1-Digest: dU2cY5Bg+3pLdLlj53uvIQXFmHY=
+
+Name: content/firebug/debugger/breakpoints/breakpointTool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EQFPiQEISolcAJBDWK7y3w==
+SHA1-Digest: yapMtTnwaP+H3DVVjEeAx77NM4s=
+
+Name: content/firebug/debugger/breakpoints/debuggerKeyword.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AsIKvH9VqG+75zxB2ITXWA==
+SHA1-Digest: RKYyzLFNJOMOU/LPhCWN/l+95cw=
+
+Name: content/firebug/debugger/clients/clientCache.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6E4WtACirBpdoTfkAtOXpA==
+SHA1-Digest: IdiK+r8sQPvmYdLRyUXHC7BefeQ=
+
+Name: content/firebug/debugger/clients/clientFactory.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lBJmxuh4pa/5QgftS+3Sdw==
+SHA1-Digest: Utn4Y1ZfEhQp7vUtNc/ejkwZrSQ=
+
+Name: content/firebug/debugger/clients/clientProvider.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kzyUSM2BZKLd39aFYLNXig==
+SHA1-Digest: +PPPJFkeXoH/qvBAD5xjq946hZE=
+
+Name: content/firebug/debugger/clients/functionClient.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nlHGRLhmaCxvFZJu9V4jew==
+SHA1-Digest: rwvgFveb/vfYKzuVXB/QxfqBZRU=
+
+Name: content/firebug/debugger/clients/grip.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SYRsgZA1Nc5md+gQOiS4Gw==
+SHA1-Digest: FZoRuBGCVtoJRJxY1TWCpgpJEdY=
+
+Name: content/firebug/debugger/clients/objectClient.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lKHGplOJPk3kbX6q/uCHkQ==
+SHA1-Digest: zxkPhh9/Cu5rRF3GNd2D3G1ole8=
+
+Name: content/firebug/debugger/clients/remoteNodeListRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Rz++YU1yXL7jKtfONJQFgg==
+SHA1-Digest: PagbMO4RohjvYjQWV6DHysBT/cw=
+
+Name: content/firebug/debugger/clients/scopeClient.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VDrV1lWAkpRy4J0v783AlQ==
+SHA1-Digest: m3UKAsvfZAqqEbPE/XsOFtaYTpc=
+
+Name: content/firebug/debugger/script/breakNotification.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rSOUGI+uGetl0yRIg4IWdA==
+SHA1-Digest: HGrMkQc/Nru6fgUnp6u2sZIUPNY=
+
+Name: content/firebug/debugger/script/scriptPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zXbgk5FnQFymm0voARHfMA==
+SHA1-Digest: idYuzjc4VJEt8qmijXuM9hGeIOs=
+
+Name: content/firebug/debugger/script/scriptPanelLineUpdater.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dEAl+tAYGRqsxYjoJzTDrg==
+SHA1-Digest: k0yA0C9m6cuNKB7VBunhSHmcK58=
+
+Name: content/firebug/debugger/script/scriptPanelWarning.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lZRnLCtNxPtU9djYpOccww==
+SHA1-Digest: XfyIRXZl48o20FeO3m+yWsaLq7Q=
+
+Name: content/firebug/debugger/script/scriptView.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oTyw2ihoNhoO5QcDhN1h2w==
+SHA1-Digest: VLCLtsjriQ8nJf1346x6JtGqEEg=
+
+Name: content/firebug/debugger/script/sourceFile.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rM/295lviCm8bbHgPjDWqw==
+SHA1-Digest: hAF1bezPSvz4sPj5P60D6xMBJXs=
+
+Name: content/firebug/debugger/script/sourceLink.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Jn13Cud2wHZlFWAjwnekvQ==
+SHA1-Digest: rMa08mqqTj8n8hu8GkjGSwMneJ4=
+
+Name: content/firebug/debugger/script/sourceTool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DCzKAzSP377r5Kg0E0qc3w==
+SHA1-Digest: NcOMcr5H+lcIQYJYZZ08LPEIevQ=
+
+Name: content/firebug/debugger/stack/callstackPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C1BDO1cXcEyA7GikqXYB4Q==
+SHA1-Digest: t3CRf/SfrARRF4vJiddQd2Ix6Rg=
+
+Name: content/firebug/debugger/stack/stackFrame.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GY0P8WT6u+pZwrEOOhG+qg==
+SHA1-Digest: 5Z7HhzjNFO3CmmHw7Wh5RTT+MbY=
+
+Name: content/firebug/debugger/stack/stackFrameRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HrrOAWnrMjBQPNueuqNrvA==
+SHA1-Digest: 2LQH1RqZJxmDi9ajxaXwL1PIBuw=
+
+Name: content/firebug/debugger/stack/stackTrace.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Z65z/sFW9J7u4D2UaWKgNQ==
+SHA1-Digest: xWzycxH7Ox/Eqnmyba9ArCHiW5Y=
+
+Name: content/firebug/debugger/stack/stackTraceRep.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nhLaFy4B6o7eOPKxNiLymQ==
+SHA1-Digest: K0t583qqzGbm7Xwzkz+079tIG3o=
+
+Name: content/firebug/debugger/watch/returnValueModifier.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Fr5q+4wkizDFHCVqUBYnpg==
+SHA1-Digest: HOUvT71P3DNFvNGWyDjDi0otSes=
+
+Name: content/firebug/debugger/watch/watchEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fTSaHKG3MgA+8tdz8Tasew==
+SHA1-Digest: yljn9nE6JOmuxl2pRZky2rDZPAE=
+
+Name: content/firebug/debugger/watch/watchExpression.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +Z7z4mFj7V97ZHTELafzTw==
+SHA1-Digest: e9kinvB6pK3JxZ+S5xN+MFrjSXg=
+
+Name: content/firebug/debugger/watch/watchPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X9O95wmwTnMUez34R15Kpg==
+SHA1-Digest: quJloGQu1kFcastRUN/kEio8qzU=
+
+Name: content/firebug/debugger/watch/watchProvider.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ne6LbLAymTXQncmxH2Oa1Q==
+SHA1-Digest: vAOW5mAi2ZisfS2NBEog71dlC80=
+
+Name: content/firebug/debugger/watch/watchTree.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: O7EWZhFPVN3377bwHN+ojg==
+SHA1-Digest: jCoIVtLAyR1ghMf59811jdxkm4w=
+
+Name: content/firebug/dom/domBasePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: x6FQ6nq0GgLgEp72e82NTQ==
+SHA1-Digest: gaHR6+F8j3D/CLpXIXk8FBfSVno=
+
+Name: content/firebug/dom/domBaseTree.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: D2EjShIa1aCvL1EmQfjDiA==
+SHA1-Digest: PWLgplHLwNSwg476hzZo95KQ+90=
+
+Name: content/firebug/dom/domBreakpoint.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nZYEzfMO1zwK0vmKZT4ZfQ==
+SHA1-Digest: eBX+0rkcR01Mcxf9OOkqSuiwBcI=
+
+Name: content/firebug/dom/domBreakpointGroup.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z5bbR29HP/dKGVY/obX4Bg==
+SHA1-Digest: OErD0Bg+Mp2ktllPt+cLEvlPvgc=
+
+Name: content/firebug/dom/domEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pRs2Bx9wwOe6GFGtQ2djHg==
+SHA1-Digest: xdSuDoTd93jOi/bcSWMhO3GvmkY=
+
+Name: content/firebug/dom/domMemberProvider.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ehf3uZ3AlnEbqbgQuppTyA==
+SHA1-Digest: 1MzJNans/rjAK1LQGLWxW3fS8qM=
+
+Name: content/firebug/dom/domModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oZ5peQN/6Vcc/QX+FcmRxQ==
+SHA1-Digest: PPH6EL40bhtPpZrKtNqkxJtWCy0=
+
+Name: content/firebug/dom/domPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kUnbAZqTyIqlQx0zmKb4HA==
+SHA1-Digest: QtgIzAdO3G8xJNyjaI4+Oz9Lmsc=
+
+Name: content/firebug/dom/domPanelTree.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xq9KnuQBkkagi5Lsa+UZ0Q==
+SHA1-Digest: f+9TwR/uSn+MDESY+Ubqcg/3NhQ=
+
+Name: content/firebug/dom/domProvider.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1qXcP/WdZoTLuTQm1ptBAA==
+SHA1-Digest: M07KoUrIyXPBAUd1679op9nijVc=
+
+Name: content/firebug/dom/domReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Fx4vPCzHRlrSHOmO3i1dDg==
+SHA1-Digest: Uk8Ll7aa9yJoIqP1JcPSJB+M1Xc=
+
+Name: content/firebug/dom/domSidePanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: i+TgkA4Po937UrPxorUeFw==
+SHA1-Digest: XoGAqSGqmf0Z9kSUweGWwFsSHdA=
+
+Name: content/firebug/dom/toggleBranch.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mvQLKNHQ4oLZ8CPwZFEMxQ==
+SHA1-Digest: jPzuKD53u/9WehQ1F6QqxKctkVE=
+
+Name: content/firebug/editor/baseEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UxspthyOUJ/m+/7S7vRaqg==
+SHA1-Digest: Ik1hPhNk1KgFa+pOE34+uo/L1rA=
+
+Name: content/firebug/editor/editor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7etXJ1h1t/gQ0+k8T2jPoQ==
+SHA1-Digest: 7l350fx3Uhl/AcVK63MsQk4N1ME=
+
+Name: content/firebug/editor/editorSelector.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hwpDAtw9sWqJVb+IvW9Ubg==
+SHA1-Digest: nctZkWyJgsp9NbrwyJq/82zjjxw=
+
+Name: content/firebug/editor/inlineEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: H1YfTVawgOxKmbtweoFPuw==
+SHA1-Digest: ijchCMpayd+FofZN0WrTtFZl8Ik=
+
+Name: content/firebug/editor/sourceEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: D7bKxzUhRVr6YJsEgkQ4ZQ==
+SHA1-Digest: d0MPJQoe4RxD5s4WCixjfCUlG9w=
+
+Name: content/firebug/editor/sourceSearch.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cKr/wHqshBl69SFWawXJxw==
+SHA1-Digest: DQekC6BTACMJcy0ssGXRm9QpC8g=
+
+Name: content/firebug/editor/codemirror/codemirror.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gE628u3RvPz2TQ0w+QktTQ==
+SHA1-Digest: /EQRXrMmLt+H+ILqQY65wjUu7to=
+
+Name: content/firebug/editor/codemirror/html-hint-data.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: odBNcZCF06BhhxxA1eaQjg==
+SHA1-Digest: 9lM+A53rIncXimO0nIRu/cPJ5KA=
+
+Name: content/firebug/editor/codemirror/LICENSE.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 26MnU3xeMstQWSa7bZZ79Q==
+SHA1-Digest: oRTQUnAg/oiUesqa11pQdx0UR1Q=
+
+Name: content/firebug/editor/codemirror/addon/show-hint.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: e2XAU2v0DQw9ItnipzoZOg==
+SHA1-Digest: ZiufavWq7bWri4v6OCeCMxsHOdk=
+
+Name: content/firebug/editor/codemirror/addon/search/searchcursor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S+8jlGS3qdFl2/C9BJQzdg==
+SHA1-Digest: ZIVIOilyPUhjM889FcMT2dF5BwQ=
+
+Name: content/firebug/editor/codemirror/mode/css.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Liokkw3lQVGtx//C9khlkA==
+SHA1-Digest: U+/6jKwx2ndy+RhFzOkqBOqgMwA=
+
+Name: content/firebug/editor/codemirror/mode/htmlmixed.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YV9kUeuaYXWFz2s/Pp55yQ==
+SHA1-Digest: 2fhuYOBy4uInUEfV1YBesaQoR8U=
+
+Name: content/firebug/editor/codemirror/mode/javascript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: REarX0obfKLah6jIKjP42Q==
+SHA1-Digest: NN8HToKK0k8YEj42R0oNau11eeg=
+
+Name: content/firebug/editor/codemirror/mode/xml.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2hjcO4QSnd3nB4rIJttDig==
+SHA1-Digest: pNY5b4VJAVnrTWKV4U41Mq/ZMWw=
+
+Name: content/firebug/firebugui/blank.gif
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mT/Cyl/sFEhojbwyvrX3oQ==
+SHA1-Digest: z6C4LpYW5bemhNyExp0cVFO/164=
+
+Name: content/firebug/firebugui/codemirror-firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MDkZxTqPS8u6gQpXp7e7qQ==
+SHA1-Digest: igOrIxVKsMHDRq83eB1MOPvvN7c=
+
+Name: content/firebug/firebugui/codemirror-showhint.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WD7LUeJnh8WtVdfJZ5ORYQ==
+SHA1-Digest: hncLYSKfOC1zRQQ5KKJV4x8jvYc=
+
+Name: content/firebug/firebugui/codemirror.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: c03j79nN/P7Bsr2oGyDSSg==
+SHA1-Digest: rooF5X3Sa2r1EPtmZxkQmqPYHDo=
+
+Name: content/firebug/firebugui/commandEditor.html
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: G5wMNcFi9u8a2++tQSZwrg==
+SHA1-Digest: DDhKeAvlDiny7ATTBXXW7g8Fx30=
+
+Name: content/firebug/firebugui/filters.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: opHcWcpECzjpTQWJbX3uqg==
+SHA1-Digest: +z9rbeXt4V33cHpZ3dxshMMFfaI=
+
+Name: content/firebug/firebugui/panel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: drHQa51GGPdfPOsoP8GCsg==
+SHA1-Digest: 9yxEZDMBXLergpBztwlBoZhDgjQ=
+
+Name: content/firebug/firebugui/panel.html
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C/DzU9z8JPtSH1DoVK8+hQ==
+SHA1-Digest: qEsXddDTmAxS4rFmoM6lD017QYI=
+
+Name: content/firebug/firefox/auroraNotificationPanel.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /3X9NUCl2x8FGMJ6ZEcJ3g==
+SHA1-Digest: g//uthVvPwfF/c57ZgNNETGMEm4=
+
+Name: content/firebug/firefox/bindings.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9HJr21HDQ/wX6yxjnWGzRg==
+SHA1-Digest: ycVMAYpS5vYMNOyrb9+04UdPD+I=
+
+Name: content/firebug/firefox/browserCommands.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /y5ifRCWPyJNYRLy/rmq9Q==
+SHA1-Digest: BC6I0g3LxAjVc8zSQjWex7c7gGQ=
+
+Name: content/firebug/firefox/browserMenu.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ftvBUdJNLcUdY0PFyx8evA==
+SHA1-Digest: KPvObxUQqe7cz83xRq4wIrmP0+0=
+
+Name: content/firebug/firefox/browserOverlay.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ev9dUUEMghgvqMVMCorjAQ==
+SHA1-Digest: VEcUgqJR5uffopVZ2bWXBpHQE5U=
+
+Name: content/firebug/firefox/browserOverlay.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: mKjrm9KK0rlzA9o62pU4Lw==
- SHA1-Digest: ijf+ea19It3QTeV/BA01mx+tgqM=
++MD5-Digest: Xs64+vHRt4IHwZbDVe2vwQ==
++SHA1-Digest: 8sYIuHF/jMT6WgeE0Sa+mOMJO+c=
+
+Name: content/firebug/firefox/browserOverlayLib.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /YHVS3H5fUUj4qSRPQuIuw==
+SHA1-Digest: eOm89ZN5zzSpK1fBEdYNL5yb9uA=
+
+Name: content/firebug/firefox/browserToolbar.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EuCBDyy3z64ZIB2wnZjqvg==
+SHA1-Digest: i/W664I5SsNg6SytQkShGp43Ljc=
+
+Name: content/firebug/firefox/customizeShortcuts.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: B9ayJwTonCHV2+pg66OOqQ==
+SHA1-Digest: CI1zxNUd01Qwsj+NYq+HOJ9QLrI=
+
+Name: content/firebug/firefox/customizeShortcuts.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fDfEUKLLxwcQAhgibzBQRg==
+SHA1-Digest: OACt1y7S8G2hih0YP0a952qTxg0=
+
+Name: content/firebug/firefox/firebug.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VCgTXEOFXozBqiwQ74GEmA==
+SHA1-Digest: vy0HhriSSWF0OaNR+1q88+3mZGQ=
+
+Name: content/firebug/firefox/firebugFrame.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: c2kt2Jdu6Vc+aV2qxtwA/w==
+SHA1-Digest: DUeIco5kxtWWyHhthYAyK5yDsCw=
+
+Name: content/firebug/firefox/firebugMenuOverlay.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /vcFdOcIWsoFTPTV4pDYjg==
+SHA1-Digest: 3f7DdE7fak1peMkxNpKYnTE3QiU=
+
+Name: content/firebug/firefox/macBrowserOverlay.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: T2lbezOvCO1+2g8rK+eKVg==
+SHA1-Digest: bLKhdzNtbreRev4hiXGxleLSQ38=
+
+Name: content/firebug/firefox/multiprocessNotificationPanel.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XQDYaH6CfRuZTijD7+4mwg==
+SHA1-Digest: LNvX0VgiFQD3WgrmmSSjVJGADNo=
+
+Name: content/firebug/firefox/newMultiprocessNotificationPanel.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: B0IIJ/srQkGFxPDQdGoENA==
+SHA1-Digest: xBgH0uB6xYHln8MCneCBV9265TQ=
+
+Name: content/firebug/firefox/panelBarWaiter.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nlrLJcio+tymUxnYS69T+g==
+SHA1-Digest: AfX4NFLKU5EMngxQTW+7L7ehhhk=
+
+Name: content/firebug/firefox/searchBox.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iZWaxfqIfZs4f29pHr24Cw==
+SHA1-Digest: l8wA+/cBO45/+D4bAEo9valR95E=
+
+Name: content/firebug/firefox/upgradeFirebugPanel.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7CtQ47hjbbWbpci8gt7Dbg==
+SHA1-Digest: OVT8hrZfxpKcoo3vm7hbVNrrfyc=
+
+Name: content/firebug/firefox/external-editors/changeeditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dSDfR7EqOzhrmKM17U6KWA==
+SHA1-Digest: Y3oMiaCegASlMbP1qQvoQ1opDng=
+
+Name: content/firebug/firefox/external-editors/changeeditor.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KTUDFa0+jDhIRebcFg0mpQ==
+SHA1-Digest: A7PDuha2lyVn1q2ZRCkCerj74WY=
+
+Name: content/firebug/firefox/external-editors/editors.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8PNM7Fs9zxUDFuW4CXthHg==
+SHA1-Digest: z7vTFHyfk5KwLpELgySO9jzBOyM=
+
+Name: content/firebug/firefox/external-editors/editors.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FV7MrXvZV98mytPIsK+WfA==
+SHA1-Digest: 5qQWETRlcHDk1EWzPtT7Wga2lX0=
+
+Name: content/firebug/firefox/external-editors/externalEditors.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wBgcH4qXxUjYUZQgPtZonQ==
+SHA1-Digest: 7g8YzKigNxqV75h23eI4c7kTYs4=
+
+Name: content/firebug/firefox/start-button/startButton.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Qr4B95pXfRk+F8HP23AYpQ==
+SHA1-Digest: lHqjuJdcqfo0eQp8Ap6Rmd3j4LQ=
+
+Name: content/firebug/firefox/start-button/startButtonOverlay.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Kk6P60eC78G6thxntMAnaQ==
+SHA1-Digest: jgGlhWcwkESjStppQRjXdxOPTbE=
+
+Name: content/firebug/html/attributeEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4SV0aLpCC7WWReK+PtGTAA==
+SHA1-Digest: zrzqPz/t/rtMaRyA0laVPKldw/A=
+
+Name: content/firebug/html/eventsPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vmapVDxXdaaWkS052d/4EA==
+SHA1-Digest: qJLi/f5wasVtOrfiV+uYcTJddFo=
+
+Name: content/firebug/html/highlighter.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: V6/6HZoPvN3V5vDNa/yVjg==
+SHA1-Digest: Np1PqGiBhHVL7YE254KlNZgqi4Y=
+
+Name: content/firebug/html/highlighterCache.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IOY5UySg2c0vETFskkiXTg==
+SHA1-Digest: DR6fSQ03LKWygajjPN4/M14HhFA=
+
+Name: content/firebug/html/htmlEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sKgQuWo97DbXKY//fvT/Qw==
+SHA1-Digest: KAiS+q5eGnkZkpj8x87asoHh/4A=
+
+Name: content/firebug/html/htmlEditorSearch.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hn99+y+0SNyvVNLlJsYHdA==
+SHA1-Digest: 0ZK336QUuT2u2yIUv7aMvE/G+oU=
+
+Name: content/firebug/html/htmlLib.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t+Y0viD04M1j0dXJUwxIZQ==
+SHA1-Digest: /hh1wHyi+hH4gVitGACYoTeebrQ=
+
+Name: content/firebug/html/htmlModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wW98NhRIjs/1fIOksmKJfQ==
+SHA1-Digest: DOsqNR6yKs7Nl8r5jSEw8RVJ5bQ=
+
+Name: content/firebug/html/htmlPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wYXUYHTpZY/yp11HLF5AsA==
+SHA1-Digest: QJ7VVt3uIENxk84s2mTx59aVtnY=
+
+Name: content/firebug/html/htmlReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yyosCVfdtl9k++urlZ04vA==
+SHA1-Digest: Vi1I1K2hWDa0ixuuGUsc861nLj4=
+
+Name: content/firebug/html/insideOutBox.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +Egr6bD3M841TIVwRuAUAw==
+SHA1-Digest: PM9qr/D0JJzEp5+wtA60bhiEXi4=
+
+Name: content/firebug/html/inspector.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Qs+bMYc8YT1s7c3bN6xKsQ==
+SHA1-Digest: 0FtRTRa0iexk6/OYa8Fa+QBKpZs=
+
+Name: content/firebug/html/layout.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oWB+RcTsg1kIthE3sEFN6A==
+SHA1-Digest: lPkxrW9N2wNaUfwDLHSMRTUvvgE=
+
+Name: content/firebug/html/quickInfoBox.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TwAl+4GCcFffv5yGPK+wqw==
+SHA1-Digest: CApl2w7UE2WT+t5Z8+wYWPN0jKg=
+
+Name: content/firebug/html/quickInfoBox.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IQ4xknkE75a4Y6qfUDux+w==
+SHA1-Digest: HsTgoxke9JptSzOb3Tcxk91SFhY=
+
+Name: content/firebug/html/textDataEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MrCWTXb0+Vp9nazZLjmd9g==
+SHA1-Digest: VZezaNqdVP6eexUgg44VOajDKWA=
+
+Name: content/firebug/html/textNodeEditor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EEZK2ohIN/WDxWHcjL7qPg==
+SHA1-Digest: p4uevcns4SkNowlko/fQPngi5eI=
+
+Name: content/firebug/lib/array.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qAEgJviwnazzflw8hgh/Gg==
+SHA1-Digest: As2vJphrKp4CsIlqdVP8e8B/vTk=
+
++Name: content/firebug/lib/channel.js
++Digest-Algorithms: MD5 SHA1
++MD5-Digest: jCZmzuD219CqPvJkLvSynA==
++SHA1-Digest: WJ65ywdTbQ5zZC+yidjQVfv3+Q8=
++
+Name: content/firebug/lib/css.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WonlTDlrHNkF1EJ9wrKUqA==
+SHA1-Digest: NQZ81ndHML4EvWdJkbl9slWhUO4=
+
+Name: content/firebug/lib/deprecated.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3ie4NZ4z+VrzC2LkM5k8Ug==
+SHA1-Digest: N+hhkfo3bu/yelk7UT+5GygWvow=
+
+Name: content/firebug/lib/devtools.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +M+RVzdosvXlWWgZk4Uz0w==
+SHA1-Digest: huMfsmm1QhYV/diclBmzT3YA3lM=
+
+Name: content/firebug/lib/dom.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: p6LN/MnOdqkMwWBSdxLhPw==
+SHA1-Digest: x4MPLSCbXIf1eEriKbzLuwfXtoI=
+
+Name: content/firebug/lib/domplate.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lZODMSB1qFcQwUhzKdAlKA==
+SHA1-Digest: GCmwFeGNrME0vom2sUwJK9sW9/4=
+
+Name: content/firebug/lib/dragdrop.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ar9qIUviNap9z6SxqCr15A==
+SHA1-Digest: z5MgCOjElOabAI4HpCK1e0rYIoY=
+
+Name: content/firebug/lib/events.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZrTkp/GvPzkTgnGjCV02GA==
+SHA1-Digest: u1LxYLA3swFu/Zz3x6wuWQh95FI=
+
+Name: content/firebug/lib/fonts.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gX+3uJPBVpd6xJIhhUpKKQ==
+SHA1-Digest: r9vK1e4yLSHvhvNHQH+mohkTQuE=
+
+Name: content/firebug/lib/http.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: OkwzxXak5hteo5VUSaGs/Q==
- SHA1-Digest: kS2EQnXr7Jx5i+zOh2ujI1GDT+E=
++MD5-Digest: omiLqkHXDfYCOwsLeHcuBg==
++SHA1-Digest: jIKVAdrES5uuV9ipWLOELWQ4Gyo=
+
+Name: content/firebug/lib/json.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 32tgRRclahr2E6onx5nbMw==
+SHA1-Digest: nv3mwJOCFvBPr6qRU1AGmc2KnSs=
+
+Name: content/firebug/lib/keywords.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: toErtEhdLAH9v2CKkLxTxg==
+SHA1-Digest: XV7OT5hNLEpckrT/NDzh5/goAsY=
+
+Name: content/firebug/lib/lib.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xhzd1qSBU4brVuFk9J5v1g==
+SHA1-Digest: wDoUFivGi/W+o4KOKJKWGU3THns=
+
+Name: content/firebug/lib/locale.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nzd2BAU/ul718Y+vctK2Vw==
+SHA1-Digest: nXm0d03fFkST1ypnePrTCTcnJfo=
+
+Name: content/firebug/lib/object.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uQ5c+0/w0Te3rbIeIbhY5Q==
+SHA1-Digest: a6V3h1y5+sejFTFjBDDY/FJsBBc=
+
+Name: content/firebug/lib/options.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vB92K749KOekOWjvgB9Hdg==
+SHA1-Digest: KHHG0F6ERvFrgB9es9uHurhWFF8=
+
+Name: content/firebug/lib/persist.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vO91YITDRedCI/vvY1mdGA==
+SHA1-Digest: j20ZISrXqw7ne2olwjVco/xxZes=
+
+Name: content/firebug/lib/promise.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Y7txepiz/p+y/FRj6A6lxg==
+SHA1-Digest: ZaANkRa0yRO0rB9rBBPllix5kS0=
+
+Name: content/firebug/lib/search.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: liDvvZtiwiIHt6sYVUiLyw==
+SHA1-Digest: FURevgDks+1C0QcsaNT21qy5zjc=
+
+Name: content/firebug/lib/string.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EJi1nogoRKnTTdFW/oXLeA==
+SHA1-Digest: XasJEBU4ldLlSXkZtS1LdGUdmOw=
+
+Name: content/firebug/lib/system.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BffUgoH9AoH6HH0Ink3jlw==
+SHA1-Digest: OpN7qGnEtsB7UQ7tO2ygRNG3+Tw=
+
+Name: content/firebug/lib/tool.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FZF0qZ1NlRflLm8LlNApLg==
+SHA1-Digest: 4pCcCCvlBYOPQFZMLxo7TQIVnUw=
+
+Name: content/firebug/lib/trace.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mbgMUI+sHCLRbSl15iXztQ==
+SHA1-Digest: lw+dI/HMVCKygEF4INUiS5qlzkE=
+
+Name: content/firebug/lib/url.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZCHWhFGRmWK1lOBeUtYNVg==
+SHA1-Digest: L4I2xDJZNpFPWMK/qf36A30aIDg=
+
+Name: content/firebug/lib/wrapper.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AlI94gW2VJTQjaVkyFSNUg==
+SHA1-Digest: IJYXQWVCvGTURffA++TVDUfzZC8=
+
+Name: content/firebug/lib/xml.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pit4ewUqlkANyo4blOW4Og==
+SHA1-Digest: 5O+HOLrH1uyxwhndiWmlZvjhGT8=
+
+Name: content/firebug/lib/xpath.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VGqm9uRCLOIj7tQnbCUNKw==
+SHA1-Digest: dGyYtiOO5rTyLrmZ/eu0HMHwKKE=
+
+Name: content/firebug/lib/xpcom.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oB8tv/eFS97zZtdu10HIEw==
+SHA1-Digest: YRdnJuLIw0L73qUixQA49FoT1Uo=
+
+Name: content/firebug/net/fontViewer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: msU8WjIqks+fd0smsPh9hg==
+SHA1-Digest: 2SlRuIFBTh2tlPJqCbd625wCzzY=
+
+Name: content/firebug/net/httpActivityObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sbsqpPCmQnSG7g4YPJbw9Q==
+SHA1-Digest: /PdYB5d3fOiB5zVKrONJhE86Af0=
+
+Name: content/firebug/net/jsonViewer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qSiGdJ0DmfSZcv8na/vD/w==
+SHA1-Digest: kQ01KoT8S2jtd+Rg/CTs9orPmiA=
+
+Name: content/firebug/net/netCacheReader.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pDtxl2znJ+xFvsD/bYL0TA==
+SHA1-Digest: 5PcMP7hPq8X+ffhskdpFNCex/y0=
+
+Name: content/firebug/net/netDebugger.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MwOGZnjZT/jA6I53uiV04Q==
+SHA1-Digest: +kRhVGeFudd/Egyu0p2hLXDaYrI=
+
+Name: content/firebug/net/netMonitor.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Q1+piMoKZfEjmn89CTcpJQ==
+SHA1-Digest: jCGQ3XqdWONm6Kaif6hDRQYZUyg=
+
+Name: content/firebug/net/netPanel.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bOGavUqFYzOUBcKKVhztIw==
+SHA1-Digest: DzW0U5Nd4j9SCoIROs15wLrileo=
+
+Name: content/firebug/net/netProgress.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LHlV+Z7xsqXIMUTiGFJVVg==
+SHA1-Digest: bi/+CwyNG7Dy5Sn5/6qqswrtYAg=
+
+Name: content/firebug/net/netReps.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 91y8gqAdFNqJV6q1SYlMkA==
+SHA1-Digest: BbBfjRrUJTHkIvgpdsosVRWrebg=
+
+Name: content/firebug/net/netUtils.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +9IsxDdvL/08nxtGij3Abw==
+SHA1-Digest: 7vUp2UpS+wHs5eH+XQFUvEzZzVQ=
+
+Name: content/firebug/net/requestObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sZyasnbT9fLpxz9/sewS6Q==
+SHA1-Digest: e/a8BoFvr8aHaJ22YZ1jJ3LbF9Y=
+
+Name: content/firebug/net/responseObserver.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PBKkV92E1q8v6Ulrrb9fGw==
+SHA1-Digest: pnuXXrn3oRY6fU0kOKzdwg3SBSw=
+
+Name: content/firebug/net/sourceCache.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: KgN3qK7zGVaqf+0pi4jeyQ==
- SHA1-Digest: 94IX9DqfNRWqiSjb6PHpOmBDEUM=
++MD5-Digest: mwpPc0eEk/SQ5bI7etY1vQ==
++SHA1-Digest: 04Dw9s6Yyhn5ws0Ev4psCBWgDRc=
+
+Name: content/firebug/net/spy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RxR2bA0s9TmlebpZ4iJviA==
+SHA1-Digest: Jyy9xec71itZLxaEyUNDSR2wmkw=
+
+Name: content/firebug/net/svgViewer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /sPAHayRHOgo+KnsoJLbEA==
+SHA1-Digest: rEaU60QQktgONA1Pte+PWvHMfcE=
+
+Name: content/firebug/net/tabCache.js
+Digest-Algorithms: MD5 SHA1
- MD5-Digest: oHKFu17doAsChfHJyjicgg==
- SHA1-Digest: GPE8ZYEtiRbaciK/+UaofNZqmpE=
++MD5-Digest: P4s85h57lWLZrZKYWLamag==
++SHA1-Digest: 6eJblcjgutjnMpndn2SCvCvi1hA=
+
+Name: content/firebug/net/timeInfoTip.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YWSld+I39RIRZR6BZVHTSw==
+SHA1-Digest: 5GHKQ3GXa6dXcYO7rb4Y24ahQFw=
+
+Name: content/firebug/net/xmlViewer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iGhgr7oCcxjl8MAc/wmQow==
+SHA1-Digest: pUFj+aTH5BQeEmx4runa/teyVg8=
+
+Name: content/firebug/remoting/connectionMenu.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: eg7QLg9QhV2jaAGT7FfNaQ==
+SHA1-Digest: Q6yMbCMB+pqU8sGSiPN8tercj1w=
+
+Name: content/firebug/remoting/connectionMenu.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZopdkMeFn8tGGdh0G3jziQ==
+SHA1-Digest: Clevk0lS/Byz9aCMAzBFvJVYBwg=
+
+Name: content/firebug/remoting/connectionMenu.xul
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GHmNJ9GlcaXrEV/mQp3CYQ==
+SHA1-Digest: DdfSoykv7YNs4qoTM7bzF2fHk54=
+
+Name: content/firebug/remoting/debuggerClient.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kB6HMV3rwszwLuxdDyPBPQ==
+SHA1-Digest: Z3A0mP5p/ZyISJdnkpRPHrUBT0U=
+
+Name: content/firebug/remoting/tabClient.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +KNzp5A5siySY10c+35J4w==
+SHA1-Digest: Rl/ZUtBkVoSp05NpEcFWowlEu5k=
+
+Name: content/firebug/remoting/tabListMenu.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SaNKYYHJr7C9BT6ibTy5Zg==
+SHA1-Digest: 4oBSjo1ElubUrcCgpxtdNvZKaUA=
+
+Name: content/firebug/remoting/tabWatcherProxy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZwZRDWRa1VhhQWlgJLIJzw==
+SHA1-Digest: VceVpZpcISjVeaQmY31rJQGNpsE=
+
+Name: content/firebug/server/main.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vNpE2RG/8AYyicePiDZ2XQ==
+SHA1-Digest: yYP4SAjfWxcBNJ949xbVps/+8ME=
+
+Name: content/firebug/server/server.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PXGFikwG/0AKXYNNOfmItQ==
+SHA1-Digest: O3WTU2UUVtxaUAqu1fWcXcWVq6s=
+
+Name: content/firebug/trace/debug.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TegX7xoKTgbf97Bc12DoTQ==
+SHA1-Digest: L9f7Cb08z+TzDO6wCNSqmr9+QBI=
+
+Name: content/firebug/trace/traceListener.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0Ogkmk23U3+EfQztD3Zlpg==
+SHA1-Digest: HFRwXtie674wQdosLgxV2ookKlM=
+
+Name: content/firebug/trace/traceModule.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OFy7yhQvxtHL8ZXLaEHkow==
+SHA1-Digest: p3srnKKF5g34cXZwE1KOwuAQBwc=
+
+Name: defaults/preferences/cookies.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VWlaDLikaW0MjRz+Hgpq6g==
+SHA1-Digest: 7X+GlQUQUp25aNtwGq3m4cJhfXs=
+
+Name: defaults/preferences/firebug.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: y6aTX3ET+bc7tRYCVTNfnA==
+SHA1-Digest: oTKp5eFPHsu8RQBwZf6V0nvCneY=
+
+Name: defaults/preferences/tracingConsole.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WR/PYbj7EIWnmgHyHJ49Sw==
+SHA1-Digest: +yNE6mQ3quU4nIaU0B2CPVF7/go=
+
+Name: icons/default/firebug.ico
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WgnXzDizNuDIcs8X4PCihw==
+SHA1-Digest: WRKQFDt7R/E782K3AnsTjJdariE=
+
+Name: locale/bg/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rXgWnJnl7vSg3wzeikXyEg==
+SHA1-Digest: cEjPDwRIC/OQ/kuRH4uwdMT6JRo=
+
+Name: locale/bg/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SECRtamqQ8bxgD900UOPHA==
+SHA1-Digest: aFiZTAWWg0j42uXyZlemYL8VFjE=
+
+Name: locale/bg/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WjlPLs8Ma0+6AaHohD6lpQ==
+SHA1-Digest: OExJeMF0AZYQil/TQ/HqY868H6U=
+
+Name: locale/bg/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yEpwLn+bYEyWk3OBx7dbdA==
+SHA1-Digest: n5Wu77XEIat0ZiCP9rNVmqHQNck=
+
+Name: locale/bg/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sJ4qw+tsLXLofTZjcoA46Q==
+SHA1-Digest: N5eeaAAAeHWPaOqQIq9P8HM58RE=
+
+Name: locale/bg/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nP97ysYG4wRxleXZNW65Ag==
+SHA1-Digest: kqU3DtBH69QgP+07k/lGHcV62PQ=
+
+Name: locale/ca-AD/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9XnTENM//Ey/HNNXfmGJBQ==
+SHA1-Digest: 3ijeJjOfw97P6t86E7kJE/EuE6U=
+
+Name: locale/ca-AD/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iGa+UK601QYef/iefwDDmA==
+SHA1-Digest: Z+cAHxnLxaS75ehA2fZalvqk2Tk=
+
+Name: locale/ca-AD/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zYNVGD6A6VLuc8YZ9t5M+Q==
+SHA1-Digest: UApsfsF7cIkA+rIpAlu4WXMdsF8=
+
+Name: locale/ca-AD/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BcQuxWt9o/WTsHQTfC/Y5g==
+SHA1-Digest: AYwIToyZOdEcAQ4L3QiDif8VI8g=
+
+Name: locale/cs/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bW1Bi4Sw1hcjVqkBQ8n58g==
+SHA1-Digest: VfruYOa4jGqmAPMJan6o4OaXN6Y=
+
+Name: locale/cs/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qSgGj7/1m5YI/ZXwtgdL2A==
+SHA1-Digest: HOQJ9r8uoCRKMpYQejw1RK79ni0=
+
+Name: locale/cs/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gb3mXOy6ewOy/1khf1aRCw==
+SHA1-Digest: sbunlylGsc/FmZKUYmL8wEslj0k=
+
+Name: locale/cs/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BcevMkJbOjIow29BXRf9gA==
+SHA1-Digest: Bbm6uYyQTKGD/sTJSpY9djcHWFM=
+
+Name: locale/da/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/da/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 57//Ath8EdG2IJTUknuleQ==
+SHA1-Digest: 9EIMZ//xuAPQ32WHVe6BNJFQsKM=
+
+Name: locale/da/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9vJqXoS4T6ObPDn8qZarGQ==
+SHA1-Digest: xXpY4YgeRNXbtOobcP6VgzLoGRM=
+
+Name: locale/da/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ErnL8BXPRmMJsfhiWo/qSg==
+SHA1-Digest: 40A2l69TglvSHJZAsM5KLB15iAI=
+
+Name: locale/de/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WFoqK3tZHOSxfQvhrisxbw==
+SHA1-Digest: mGCHsMS/Xnafe3+d70uR631t0qw=
+
+Name: locale/de/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: o3qF0CfCaGpx4Bsog/Z9uQ==
+SHA1-Digest: lOcbC9MHRF4lzMFMgQ0ntvWLkRo=
+
+Name: locale/de/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5mTiaUT1O/xTdjL69hVcCA==
+SHA1-Digest: H22iTw0HcOV6rebGc79PzB2riHQ=
+
+Name: locale/de/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Vvy9MCtM7FHEoCmm18uVPg==
+SHA1-Digest: CS2Sg1rUT9G028x56LPCjvIUbYE=
+
+Name: locale/de/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7OuEMCOgBi0rKB7nUPguXQ==
+SHA1-Digest: XIBALSFzBNoqIVnuVUnBXLp+wfo=
+
+Name: locale/de/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: a4WtfAVkEpqIZgwn3hAYUQ==
+SHA1-Digest: JMEGS51lWSS4Vsw3wYfSWQ6if00=
+
+Name: locale/el/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1LVdw0xKYrFck+2haDRpMQ==
+SHA1-Digest: CdNbwzAtR4rx+o7AI3SqH8GhlrE=
+
+Name: locale/el/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 75k2K+My7wacgKkK3RyWgA==
+SHA1-Digest: vSI9AYh+v/IQf5mD/mbAhfQVGz4=
+
+Name: locale/el/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: R53yStFcRXZU72SRpcEhCw==
+SHA1-Digest: V5RAx7EOo6Vryb9Ha7Yc0Ju6YcQ=
+
+Name: locale/el/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PB1RbZ1HbvNOmqmb1bxyfg==
+SHA1-Digest: hAJ+sQ4qSyUkkiDQaQh0r1oWHP8=
+
+Name: locale/en-US/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 14us+sy+DJcf6s9Kq8uFGw==
+SHA1-Digest: GS9fmheOtB7qcX1d35lupYfic8w=
+
+Name: locale/en-US/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cNh9wY6oW3eN0bZR1+usbw==
+SHA1-Digest: Xnf3i/Sj0g5vqRiSpo826x9d6Uc=
+
+Name: locale/en-US/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: dQ8KI57G9qFHKQtAsWj2qA==
+SHA1-Digest: VFsYe437rwgYLJFDcjBPiYUG0zE=
+
+Name: locale/en-US/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wfgrzqK9ukoDWSHegY0veA==
+SHA1-Digest: Xmn/jT1tjchvcThKj9f0mlmODI4=
+
+Name: locale/en-US/multiprocess-notification.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qpA+OHCEUbIL9JLnM25Q9w==
+SHA1-Digest: JKM4iEqUCqc36wxAODo6tUPIGZ0=
+
+Name: locale/en-US/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: i+AIR+15HqS+r9McB0qJrg==
+SHA1-Digest: 1tj5Da+Z08Tj5BLIzMcY1MfLC+8=
+
+Name: locale/es-AR/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mZGKtBVUnkz8+vNuHRCeng==
+SHA1-Digest: G7QX/8H60sMKmXdP8G5jlS9h4Og=
+
+Name: locale/es-AR/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SoWYiXT5o3GrRCU/RfzdBQ==
+SHA1-Digest: +7tJYw54JwiVWFXCEhmC/nQap+A=
+
+Name: locale/es-AR/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tmiC+pAARQJcY2CT4cI4fA==
+SHA1-Digest: bTl8xuwvGxAg132wlr26b4SWU9U=
+
+Name: locale/es-AR/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6p8pR6/apsNNMIuZjLTMLg==
+SHA1-Digest: r0qDcL0KJYyIc9JSBa0WYEjJPJQ=
+
+Name: locale/es-AR/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J+OdFzYebBjNPCwdQ8VwRg==
+SHA1-Digest: RX8CvWimF2fdyw7i+J3B1EsyGig=
+
+Name: locale/es-AR/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 16zhKIZfpryv99GExutCLA==
+SHA1-Digest: UPegNAuE1ID8yyAr8wRGdWqCRZw=
+
+Name: locale/es/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ifWNLXrw+QeACKoxebEd4A==
+SHA1-Digest: gOZH4t190cClaNzWt745xi8oYrw=
+
+Name: locale/es-ES/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +zwD0qgtRXsTK2D6RJSA1A==
+SHA1-Digest: RNjdiN8clS/G7ehcjftv6UiPVHU=
+
+Name: locale/es-ES/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MYcrk+oex76ZUOdpMSaBxw==
+SHA1-Digest: IovLgTqT3HS00Xx1dn2XvKSNkJI=
+
+Name: locale/es-ES/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lPcxscq248G6uXFZeOPLLw==
+SHA1-Digest: yEkFvxYTKhfvRbwSfrBmR8b8zqI=
+
+Name: locale/es-ES/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3vyf3xnZSyGxopAwaDPijg==
+SHA1-Digest: wz+q6tj2onFk1T/T0wuRoDrOxdo=
+
+Name: locale/es-ES/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rRL5WearUBxafo0mZ3MUCw==
+SHA1-Digest: s22mPglN+SAfe/c4kAot/81u5VM=
+
+Name: locale/es-ES/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nGzo135ppbQulqGkKAJC/Q==
+SHA1-Digest: JwCiUnwJqXWN89nAQkqznTxfBx0=
+
+Name: locale/es/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rzreeKxntFTiH+swFYBGwg==
+SHA1-Digest: zju3gJXTXssADwbS02C8INozH10=
+
+Name: locale/es/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NBLIdLJfNBHufT9ssPJaJA==
+SHA1-Digest: k4kVBwpd1iq+PCuuPm0kXstwHaM=
+
+Name: locale/es/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9gTGnYoLivQcTSg/chhnxQ==
+SHA1-Digest: cIIui1BkG+ODGeWQ4kDa+1O4IXo=
+
+Name: locale/eu/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sHUAEdli7igTBnInZybHzA==
+SHA1-Digest: sQyL4vFJiQ7kAI+eXTJN5ubHHxQ=
+
+Name: locale/eu/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: r4LDyWdJv2qGKW6YjBrp+w==
+SHA1-Digest: S6e/5TqVM4/FY91ehsKGz81gWN4=
+
+Name: locale/eu/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vyF4ig8o4ZIfKWavUO6uzQ==
+SHA1-Digest: J7r3qBKPX6IRoDTF0NRlVIo1iXE=
+
+Name: locale/eu/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jYG21+1F7RzRNx10A2LM2g==
+SHA1-Digest: vX5nl9LVZMc9AT5QCxO8b+JzDgM=
+
+Name: locale/fa/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/fa/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nU24py57gfzN7/3D9HrYgA==
+SHA1-Digest: 63BInKs8/DhkaJDWoUiYYT6r7bw=
+
+Name: locale/fa/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aGaJ2ygIBPIJpuTBzkDYMQ==
+SHA1-Digest: 0MNGHJO6ITi+K+Ikb7XgQxm+3mg=
+
+Name: locale/fa/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hvzi7OoAiikmm03F9YC84A==
+SHA1-Digest: ai576Awm/B7jddt6YM+GCzTRwsw=
+
+Name: locale/fr/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wl0RyXUP6qDdoCed7M1oeQ==
+SHA1-Digest: nUU33gpw71vqxs6Px/U7YoZKpTU=
+
+Name: locale/fr/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 07hj9W0gOVE7F6TnKzMqIw==
+SHA1-Digest: 9pvcFJeZMfLGp/cI53U6DUCeHt8=
+
+Name: locale/fr/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9ViJCh6vyfJ4aCVbHkURxQ==
+SHA1-Digest: WOCB+tvGXa53CBtwOldLOgSWios=
+
+Name: locale/fr/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KjnO4j+0Dq5f16ue1hgLXg==
+SHA1-Digest: kb/4kVFcdzRhH7V3PWWUFBFvE1s=
+
+Name: locale/fr/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iCt4WZggcRPTdv7yFyrWcQ==
+SHA1-Digest: Twdm52MLw3WpJmjF00CBJyp2c7s=
+
+Name: locale/fr/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: q+ArEa9DdlOfZ/4EzQH/BQ==
+SHA1-Digest: ruPdeZN60gMRMBF2Vawr+NcDVyc=
+
+Name: locale/he/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/he/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mIbIlE8o3kS0SINIcJZ5hQ==
+SHA1-Digest: BqFVd/oRE/wkyjrOKJ7qDR3PoYk=
+
+Name: locale/he/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gWgYC9OeNan+6aFoFnB7Tg==
+SHA1-Digest: LKdMiLL0E8YWNfHb0d+qP3xCngQ=
+
+Name: locale/he/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pjmHywSeVNlMA81ZBvcqCw==
+SHA1-Digest: PJHlKb0z5zR8Z7SiwFWuolAu/rw=
+
+Name: locale/hr-HR/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/hr-HR/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X8EKQts6HF/ej19KWUKqPw==
+SHA1-Digest: XaCXHxp7CFjEy/mCSNt3s17XlIk=
+
+Name: locale/hr-HR/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Yd3FYYPCslsxbK5NcvCXsA==
+SHA1-Digest: ttgUWQhDIxJ1ZUwQfyWFpBzxsUs=
+
+Name: locale/hr-HR/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JXyJ5pvOMbq7m0sJYnQeTw==
+SHA1-Digest: 34bljLxiuo9xKC0ccFsgYr6QLyo=
+
+Name: locale/hu-HU/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TKU8JfUiwmF1h6+fXvnf6w==
+SHA1-Digest: /ZRDcM8El/koFFDvIXxZNyK1C3M=
+
+Name: locale/hu-HU/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iwF+Qb0gBQ8IHzPcBBILuQ==
+SHA1-Digest: O0uPDAy569Q8biJHesRAV1lBBQk=
+
+Name: locale/hu-HU/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8Eg1fMy3gC22GNP7zkwrzg==
+SHA1-Digest: b9ZGhu2U5utn1mvoveuZJypeu7k=
+
+Name: locale/hu-HU/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iSu36KXhskGl5+bADXBVJw==
+SHA1-Digest: 96jRuorWLU7DumsxIDJuD8VCVYk=
+
+Name: locale/hu-HU/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bp1nMOu3BLuwLRH7aqTf3Q==
+SHA1-Digest: uRXAm+kmjbPYM6chnEj+3AMizrI=
+
+Name: locale/hu-HU/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gTlCOf7q0JXL4BnBNImO7g==
+SHA1-Digest: LgcBDLlVcmQyFX4ygxJZ+pVrjAw=
+
+Name: locale/hy-AM/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/hy-AM/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X81FjeCquWMfdjZf09SRng==
+SHA1-Digest: 9s8tpB+YzVFNhsxIcFVGX5MQ5Go=
+
+Name: locale/hy-AM/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: n+uHD3l6yH9j1s1k+Bne9Q==
+SHA1-Digest: YEU0oJ8w38K/AXcyXcxN993zokA=
+
+Name: locale/hy-AM/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rc7OvKriO2cdMM0TV5Kl9w==
+SHA1-Digest: AogvGl7bhOPTX2N1Tm+HUtjq0qE=
+
+Name: locale/is-IS/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/is-IS/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z8O3+1VN2nm1+e1W+/jZEw==
+SHA1-Digest: 153ALT3YTVyvejtubZuQ3H/yX8g=
+
+Name: locale/is-IS/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xdb/MnWwkGSXVqrIpd+ZUQ==
+SHA1-Digest: aWF+0+oUxuMMFyIZvo/qC9+xIUg=
+
+Name: locale/is-IS/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: NOiImBdaSDBGNWQFjkfMLg==
+SHA1-Digest: Qm6J+vD4HcG116LhB3dYndLvR1E=
+
+Name: locale/it/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HCy/POFwpVFYk9Qtmt/S4w==
+SHA1-Digest: NLyzqSxuRsg2yEsguNatKuvA/sY=
+
+Name: locale/it/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zpLZfvBY4O9htto3/EOJpA==
+SHA1-Digest: KLlCmUkF9pzNEN5XurQD3lleQDo=
+
+Name: locale/it/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0KHtBEVX1ZC7vx72Nfct9w==
+SHA1-Digest: cOkLwALOzLeuNmCVp8RT+McTOt4=
+
+Name: locale/it/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6Q/qSf51AGP2XGY7tPBuww==
+SHA1-Digest: HMy93YvIVZjV8SUF5P0BznE3iS8=
+
+Name: locale/ja-JP/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S6nBygaeGU51nBH/Ll5g5A==
+SHA1-Digest: KG+NqNLM4Kux6b57P/J2EDhmuAw=
+
+Name: locale/ja-JP/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8bkepBFi6QjtacFvdCWT6g==
+SHA1-Digest: SAh27FmX552QxyYBMylWq++4PWY=
+
+Name: locale/ja-JP/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: O+TgA/X9VdloipNUneKpmg==
+SHA1-Digest: ynD/2YfcMyLyNfE1Og77FA39SFU=
+
+Name: locale/ja-JP/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1DCo83nkrI2IFFz0rFIyaQ==
+SHA1-Digest: H0yCYNQZTiSM9VrBQairZWMDpfA=
+
+Name: locale/ja-JP/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uyYf36DpQ3WKYevSO3cZJQ==
+SHA1-Digest: n7eNolrCpcGCifJ3jRgP0xw7fEg=
+
+Name: locale/ja-JP/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: k0csLrtxIqrY9ql03wtamw==
+SHA1-Digest: 9hoTwjpicOHkGxspsv6SbpCUGXs=
+
+Name: locale/ko-KR/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XrKnrNy1B7cLMQvoLkJrpQ==
+SHA1-Digest: IJ0ND3mZlJ1uGVdF9YAaMlJBBzI=
+
+Name: locale/ko-KR/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cBEv2Y9gVzKItFPNr/2vOQ==
+SHA1-Digest: /lG/LHEwJVZbZrAD+VTZqrbp2gs=
+
+Name: locale/ko-KR/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aGaJ2ygIBPIJpuTBzkDYMQ==
+SHA1-Digest: 0MNGHJO6ITi+K+Ikb7XgQxm+3mg=
+
+Name: locale/ko-KR/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0X2g/EBHM2xrlqd+8TrGSg==
+SHA1-Digest: LRLmevKYbSNUrWTG4nfK+qZ0yLw=
+
+Name: locale/nl/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: pe8xQBQrx2KRA7aVo09qqQ==
+SHA1-Digest: mQw1sf/HuOfrOgCAFW5QasK4eIU=
+
+Name: locale/nl/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vT877GmO0cYQjSmWvFq95Q==
+SHA1-Digest: co/gn75CFRvtngOEfpxMs78Rrh8=
+
+Name: locale/nl/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: S7KqqLVZ47bXznAIEOZrXQ==
+SHA1-Digest: YRFQlTscos+yxwfDijKuaLMuyoA=
+
+Name: locale/nl/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wVAjgmC14Qbd1/0j9siTBA==
+SHA1-Digest: CjztlbM1XwHicBT9skla3dZAVJ8=
+
+Name: locale/nl/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rE9EQcGROimnSoR2QrNtwA==
+SHA1-Digest: wOZY5Qg0xyKU9ivwMNVdR4nA28U=
+
+Name: locale/nl/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nt3rqQgkNhnO5Kjn9stBDA==
+SHA1-Digest: xNfdrGtvuQO9XDOi0EZVtqFUGNw=
+
+Name: locale/pl/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OuG3wYAMl/MZEiNI3vCbLA==
+SHA1-Digest: 0NFqFUnhNjCWUoxShi2nFoVum/A=
+
+Name: locale/pl/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aKYRegGT1bYH7frKR95JKA==
+SHA1-Digest: hU58hWBSR6dvVaL2xxWhwRHMF24=
+
+Name: locale/pl/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4BVDxE6LMfgefVEScCiwgA==
+SHA1-Digest: WvThaN3JyKJ1348Y88NRMIZCCOM=
+
+Name: locale/pl/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FoIYZJbbi9kQcWDr5BQW/w==
+SHA1-Digest: MBsCbggo8UZ6YzkwIrWO4C3pLG8=
+
+Name: locale/pl/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5Aw3rVEIJOrTDF7vK+HIWg==
+SHA1-Digest: jTt0+cqvXW0GlaCmaJ/J0pmXM1Q=
+
+Name: locale/pl/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: snmJuZ7hptpZY5WS91ecbQ==
+SHA1-Digest: SGpXvGi0ZaZggjWvugtkR/+RWJA=
+
+Name: locale/pt-BR/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3lX4w4cHZ8dsuaSzJIQoBg==
+SHA1-Digest: 2fkUumYPTXDF/78ytZNSetjvzCA=
+
+Name: locale/pt-BR/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EeGN9+3RSVd8ujc32WfsWg==
+SHA1-Digest: 0F0Ekq+CeCFfn3mEwTx4QSk2nh0=
+
+Name: locale/pt-BR/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aM86Zc1B8TDF2l0QnLG1Eg==
+SHA1-Digest: Yi7hGq0TaH5UNRLiddoxaAeutWU=
+
+Name: locale/pt-BR/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: HOH+VagYw+J8mzj/DScT2A==
+SHA1-Digest: xwTJhMNVEGRPJrQSj2n+NPtfQwo=
+
+Name: locale/pt-PT/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OSAqzIXSsXyFE5gZ/r03RA==
+SHA1-Digest: Co+oDRu8mJZ2bmNBJcZR3bXWmm4=
+
+Name: locale/pt-PT/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: hu1aQ+mcNMKorgrmPOhVzw==
+SHA1-Digest: oWd5m3Slh2esl+ZycWdxiY/AgRE=
+
+Name: locale/pt-PT/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: PXEifwfr3kjYK3lkEDjiKw==
+SHA1-Digest: PhWFZJrajopt7ecJG4Ojdfc+LW8=
+
+Name: locale/pt-PT/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 18j7TuxEIoYn5Rsxj07cVw==
+SHA1-Digest: 9GnJ4xSbIXD1ptuAWpJ4YwuXvVs=
+
+Name: locale/ro-RO/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: QOGgxSXSEye7EnjoqFxCIA==
+SHA1-Digest: PHkwis9KLDgHr5Hy/YM/1FvzVxg=
+
+Name: locale/ro-RO/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kXN9rfKuDWdRcGJ6Xju59A==
+SHA1-Digest: bOwdrOrByFzQI18L03QxxrlxTiI=
+
+Name: locale/ro-RO/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wO2n0jpKSlr0hL+muYbHdA==
+SHA1-Digest: +J7vxGRgCEiYVjajWWybyXAAMjg=
+
+Name: locale/ro-RO/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 50TpUN10vbFAvLsgunbnUw==
+SHA1-Digest: bhwo5IQLWeUOnnYTfz+4fuBl0kg=
+
+Name: locale/ru/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /9510+++KOfyKrVu3OZA2w==
+SHA1-Digest: E2Xcot0EOEYO6yk5A3hg1pWpi/g=
+
+Name: locale/ru/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Hdzp0xqz3yx3J4VBYuEjYg==
+SHA1-Digest: NpzfLclEFOrKkvu71M2uqNOBa2A=
+
+Name: locale/ru/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4m5LQ2dP5cL53Tu9LiPBFQ==
+SHA1-Digest: C2h0UkI2F0eaehWgRcwN44Cqn3c=
+
+Name: locale/ru/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6cubDPjME9ACLgVqjusOaQ==
+SHA1-Digest: TF2IKAWq8DKJwNvyvyqsY/9stgI=
+
+Name: locale/ru/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GHigRto4aHv/yuKasyckFg==
+SHA1-Digest: R/dmyCZ1nG/rk7zJos7IyFs06bw=
+
+Name: locale/ru/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JKy0iJxosiX4982uXFa3Qw==
+SHA1-Digest: ryES+0lCbk5BHHOFlC2++1OQo4s=
+
+Name: locale/sk-SK/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RbG3GmlojxILc8m0B0eOjw==
+SHA1-Digest: IqlFDso+rwJET+r9u5nXBVLFn5w=
+
+Name: locale/sk-SK/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EWQAwBNjqgjD661O4dXBtQ==
+SHA1-Digest: KkS8LirICxgciX7oRN/Rg946tLs=
+
+Name: locale/sk-SK/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: J/c9NkL7olFJ8dlrKu/+KA==
+SHA1-Digest: 9uzuyOC3hUMKtiFoklmOW5+YbT8=
+
+Name: locale/sk-SK/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: v5UaUXun1Ds2QNT4HxRz2A==
+SHA1-Digest: d1gYWGCMZeCXMRODNss83h2ThMw=
+
+Name: locale/sk-SK/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rVI+Ojt9rxt53//du0K9GA==
+SHA1-Digest: D81yPVHSA4RXkIV/QpS477BSbh8=
+
+Name: locale/sl-SI/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zQ/mpxMqh1GiD4PhdcL3cw==
+SHA1-Digest: H4ZW5A446XeIJUcTHwJftBWMyNQ=
+
+Name: locale/sl-SI/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ahGZEAKMdln1fsoic5aB7Q==
+SHA1-Digest: y3kkamgVLQRBE3F1tNJ+AoFsHd4=
+
+Name: locale/sl-SI/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 11h7ft2z9i4hZprlQLz8xQ==
+SHA1-Digest: ifTKZgMA4HCAh6KCpfXAlyWaRWI=
+
+Name: locale/sl-SI/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7cwEGfZG+N1S+XSEifcwKg==
+SHA1-Digest: zTkKKM1IWAqvVaygdfKUrRDdlPA=
+
+Name: locale/sl-SI/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OAcrAbF+EVyzsgedpxgnHw==
+SHA1-Digest: vdjD0w1rl7X1R7HZXANnzFAHTdc=
+
+Name: locale/sr/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/sr/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LCvD542cYNnGOaLIMvFwjQ==
+SHA1-Digest: HE4TWOOFEMFqWmOeYT+e58eh0Gc=
+
+Name: locale/sr/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AJI+Xkkknz4yAQOtX2Iv7w==
+SHA1-Digest: NxVKUsBIZodiJmNvDxegF6KtgrE=
+
+Name: locale/sr/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5lADmOocY0kligZf2kNeLQ==
+SHA1-Digest: sdOkNh6XrM3cj4LNb+C8m9DdOko=
+
+Name: locale/sv-SE/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 4rZMWgho33Jl/KszsOTXhQ==
+SHA1-Digest: ITIg0W9/0wmQYY8syEzK6biFgpA=
+
+Name: locale/sv-SE/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8CT0z6ThzKjrezh93x1TQA==
+SHA1-Digest: 1FmsBadHuXIvYj++b5EPl1d0Qhs=
+
+Name: locale/sv-SE/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vwNjvC9LGXuNddIX0kUg6A==
+SHA1-Digest: DvOijmOy+qiq6C/o8mxHw1i9e2o=
+
+Name: locale/sv-SE/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XSBaDVwaF/0Ap6q39zV+YQ==
+SHA1-Digest: zP2h5VEZAc2lUHAWmMUzA0HMsgc=
+
+Name: locale/sv-SE/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: owqw1o9eOlyTHeQnq6hvLg==
+SHA1-Digest: NjKY6m6KKYSEp+XxWFAKZ9NfuLk=
+
+Name: locale/tr/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 58jafukebWahNW6wccghAg==
+SHA1-Digest: 1dVUU73Qc6SnVsIjz49l/i6ipgU=
+
+Name: locale/tr/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nU24py57gfzN7/3D9HrYgA==
+SHA1-Digest: 63BInKs8/DhkaJDWoUiYYT6r7bw=
+
+Name: locale/tr/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aGaJ2ygIBPIJpuTBzkDYMQ==
+SHA1-Digest: 0MNGHJO6ITi+K+Ikb7XgQxm+3mg=
+
+Name: locale/tr/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TcL+9Zcig3QjQXcfXU6FlQ==
+SHA1-Digest: ZtJ0RmFnp7/iruEQ38uasK6LX5Q=
+
+Name: locale/uk-UA/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ofm7872HgrzoMk7MRsrasA==
+SHA1-Digest: qlBWyYHyLwIFpnr8hF8f7xHttMc=
+
+Name: locale/uk-UA/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: EB5y/dKjGJdMoYVUUTWBDg==
+SHA1-Digest: YQqgq/9WpJsVbDDfwPRSbyjNw70=
+
+Name: locale/uk-UA/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: R7LKIC8ZZPmZft3F5h+EiQ==
+SHA1-Digest: cQ8xnKSQPYEOvvkwLhlx29mWfV8=
+
+Name: locale/uk-UA/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Wl6gXykNyh6sRQ3d+V6rtQ==
+SHA1-Digest: gQBODUgxiI1UgtC57a2Wajdi6wQ=
+
+Name: locale/vi/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qxweMkJB+v9s4w29kZtIfQ==
+SHA1-Digest: PiFx9JwIrW43SUb0UHMG+z8/FPk=
+
+Name: locale/vi/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: KBEQkJh5QCDMdeV6yUgcdg==
+SHA1-Digest: V7VOAXm/1cDgz5Dlg7FlVQm73+Y=
+
+Name: locale/vi/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vqSTAfZweQFlqe8ecGgJLw==
+SHA1-Digest: cKS1JMvJ1IJItiSuOBdhm0JAAt8=
+
+Name: locale/vi/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yaft1RtGn4pO5LUy9GZHtg==
+SHA1-Digest: 6DZm33F8kcyizXsLb8w9r4xqn24=
+
+Name: locale/zh-CN/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: aQMj7XbqqV3oCXGn3NRw5g==
+SHA1-Digest: AlR/ToRfr6D+aww87Szmu5dO54U=
+
+Name: locale/zh-CN/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: mI6aP+EgNNIp2qtIsjLMmw==
+SHA1-Digest: IoD4vALlopJ5JeQQ7eumm7E4BPE=
+
+Name: locale/zh-CN/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: icXCGTg8EZjlhGiPftaRtQ==
+SHA1-Digest: nxH8YiUAwRx6ON1eSdcaAW6In8c=
+
+Name: locale/zh-CN/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: e3nB8Q4jOasdMYnQTwydAA==
+SHA1-Digest: w6D0UfKJbOK97rs1RlajxqvHJe0=
+
+Name: locale/zh-CN/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uvaQzvf36AcNMhqVBIN7Jg==
+SHA1-Digest: HV1m68qZTypfjrDMdPHmn1CZmiI=
+
+Name: locale/zh-CN/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8M8ZM3tu60dDBUthBM+0AQ==
+SHA1-Digest: 4KltluFQeCpAvCpazwqJoZ9oEoQ=
+
+Name: locale/zh-TW/cookies.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8nXT6mCx75EgMDJGyvNuwQ==
+SHA1-Digest: wprFvU5usflzf9/IKJyMabBC6C4=
+
+Name: locale/zh-TW/firebug-amo.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Pr+ICJcZnN5ctTePFO7ojg==
+SHA1-Digest: itoh3Gv059oxrjvwOVuwE8dZtpg=
+
+Name: locale/zh-TW/firebug-tracing.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: RVpfYkgtXvyd3DXA1XT4Gg==
+SHA1-Digest: ifq2h0PwBf5D2J5JGmmBE7T6gSk=
+
+Name: locale/zh-TW/firebug.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IIPQoAPzweY/ZdON0oaj1g==
+SHA1-Digest: D3rZsKBEKyjr9r8Wa52RD5+5CRg=
+
+Name: locale/zh-TW/keys.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OSZGxnpTwiX+S+CsQu5UqA==
+SHA1-Digest: JuVH7pba0dNeRKN2NU9gs4HcNX0=
+
+Name: locale/zh-TW/selectors.properties
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: B5h9zWXqc4tQclIet1rRlg==
+SHA1-Digest: +YilQxbEE9e8qSiMEwVenufEpcE=
+
+Name: modules/fbtrace.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: z4QYfokxxVdHd8kix7eStw==
+SHA1-Digest: tExXtyByHY797+8W3PvSKS7VRtg=
+
+Name: modules/firebug-http-observer.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VENa8QoZxH7jdxufy234ow==
+SHA1-Digest: FAHVkEsG5DCMYqoMfoj5xlBPpGE=
+
+Name: modules/firebug-trace-service.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xcdxDy/TCqsr0aX+JCkRzA==
+SHA1-Digest: q0WJDbDsdiOeZS/eIxoCcfpayXQ=
+
+Name: modules/gcli.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7UbMfhbMNLfryGVF2fNgdw==
+SHA1-Digest: nce2eAoYnqlYCJf6VAPiRZ9jBw4=
+
+Name: modules/loader.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zjx72h0LVYKxy4b76zE7fQ==
+SHA1-Digest: /k0RYYd8gaDifhYHH3QAAwCDtmI=
+
+Name: modules/locale.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SIyhq4sFonw8hLH0VCePUA==
+SHA1-Digest: EAPevGGcJLh/yuZ9ifHGw7Gzp14=
+
+Name: modules/mini-require.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YGk4IAmZWMdZ8qSJZrGEBA==
+SHA1-Digest: f8SIoMTlIe6Bzgg9WBzKpx/iGmg=
+
+Name: modules/observer-service.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2oOgnKFFdnOgotXF8RAR5g==
+SHA1-Digest: zZ60QzHd1BUDIgPAOltaqTH4AQE=
+
+Name: modules/prefLoader.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zXDfsge5qCdN89RO2lrViQ==
+SHA1-Digest: cH8hL5aD/RG/eCLieEgMocOi4yc=
+
+Name: modules/require-debug.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SzQxRFaFGTc+ZbcftfyHAg==
+SHA1-Digest: Ex4l2FE0Cb8CKjbHSgDys4Zw+w8=
+
+Name: modules/require.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YBBmgRo/U0qmfEK/3thQ2A==
+SHA1-Digest: xsOFMLZ1FZ23ZRyrhsMojL6aYAs=
+
+Name: modules/storageService.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: OZmGbJuemhvms+xJcg676Q==
+SHA1-Digest: Mf8K3InIhRyVWBQQLsa1HoXnEq4=
+
+Name: skin/classic/activation-menu-console.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YzRw6OeGVUc5O7Odv26cEw==
+SHA1-Digest: hWsCMB5F4v5ppV8MaTdjqtmTYaY=
+
+Name: skin/classic/activation-menu-net.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cm82VszVZr02pgFejowIYA==
+SHA1-Digest: ruESasmNmYpa5UMPN62dWUpfLEA=
+
+Name: skin/classic/activation-menu-script.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZRbIsfTnW4WJ5vBBbERM+A==
+SHA1-Digest: BKfpumat2+NPrbZUY7V1m0L5Xck=
+
+Name: skin/classic/arrowDown.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: X452gzEGFMEZxLHGBB+wuA==
+SHA1-Digest: fw69vi2FDZ+KJzWHPadvIYWGfgE=
+
+Name: skin/classic/arrowUp.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rxzPz904FDSUPQYPSefUSQ==
+SHA1-Digest: BdDWNAc7lU6y1mq8xy+mq+L0B/E=
+
+Name: skin/classic/balloonNote.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7ICwohtry7rivuXSt60kPg==
+SHA1-Digest: erOu1FLHUjZdMRZJPMqdk+O0+TQ=
+
+Name: skin/classic/bindings.xml
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ywcNtqFPM3qaO/yI6EAzKA==
+SHA1-Digest: lK0Qwo/5tPJsal/tubis44jB1nA=
+
+Name: skin/classic/breakOn.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yx0ToKM/rwwL/XhjgTsNWw==
+SHA1-Digest: wXSXv/Piloml5Neh2fG6SOOd2bI=
+
+Name: skin/classic/breakOnArmed.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CcsMnUH4wWb0s7tLgsWF6w==
+SHA1-Digest: U6VcW+g4WNeL/iZ0eWHJ7opFQIo=
+
+Name: skin/classic/breakpoint.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: YYeJV+ExpozYP6pSE5LRpw==
+SHA1-Digest: BvKSa1uTOZ+PZOI9310nz7MIC24=
+
+Name: skin/classic/breakpoint.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ehYROf6zuawSgADaAaYERA==
+SHA1-Digest: 7/GQylN6h3vH0whDH/GtopFm/e8=
+
+Name: skin/classic/breakpointCondition.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MBvIQdcbod8bS+IhA1iXuw==
+SHA1-Digest: lw7enO/D0mIIP/5xvSJUXEm/oKw=
+
+Name: skin/classic/callstack.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /GPxrYoBulKPSRCqpbKjtA==
+SHA1-Digest: u/fGoAv7Vll5YMs5/XF52B1r3Rw=
+
+Name: skin/classic/callstackPanel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: H0wAojzfm9c2acfdLnEAFg==
+SHA1-Digest: feqYZbyloj9m30zF1w1n3rHselM=
+
+Name: skin/classic/collapseSidePanels.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xRCQb6Uv+2SEi+ZtFZKKBA==
+SHA1-Digest: PEpw9JQLx3WheIzEvq6wK1ExAJo=
+
+Name: skin/classic/collapseSidePanelsVertical.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: s6ewmqIT6xhA6hSTszLvVg==
+SHA1-Digest: ix683m8uf39Fk63bAAZXWX/GIXw=
+
+Name: skin/classic/command.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wk3uz661qJ4o3DOYSv0I0A==
+SHA1-Digest: xf9pDRhFMPJ5/exdnW4kljIIPqo=
+
+Name: skin/classic/commandLinePopup.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Obf2+tv0Tby0a6uV8lQznQ==
+SHA1-Digest: VugMCQRldEEWEHY1HkNAQsiHG6Y=
+
+Name: skin/classic/console.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: idMff6A0iahlX3ja4wQqDQ==
+SHA1-Digest: uT5ZzMIxgUirHg2lk/hi7KviTOk=
+
+Name: skin/classic/continue.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GbUcYKz1L5QONpApU3Fnwg==
+SHA1-Digest: /qOX4q4oTcXgmGdvHwQ5GOMuU0E=
+
+Name: skin/classic/css.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7DS5aSZEPQ5kyX4BnRZqoQ==
+SHA1-Digest: urE5w50zxsFoMswiiNt6VdXCB3Y=
+
+Name: skin/classic/customizeShortcuts.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kIQNK1iKf9a/H5El2fjNQg==
+SHA1-Digest: 2W5Bon0YcO8kGvNYeHYUjWeBbi4=
+
+Name: skin/classic/debugger.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MQ4Yn2fJu1G3Y+vcokEU4Q==
+SHA1-Digest: V3ofMjvk27apdS9ZHL/Hrezsvog=
+
+Name: skin/classic/disable.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0FMCCKn8iEKcxr/w147TAw==
+SHA1-Digest: ULonwiGI+1wH/8fjzTJymSjxnnU=
+
+Name: skin/classic/dom.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0QoiZEeITcCifMUM/614mA==
+SHA1-Digest: n/Yc4xFZ54FsSlXzyt39wRS+694=
+
+Name: skin/classic/dropMarker.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kqSmhcwXYTU/EQtKjkn7GA==
+SHA1-Digest: cuztnU9b46wuldFNRp7GgS5ZthI=
+
+Name: skin/classic/error.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: SZd57RZhyO0ZxwUjVplqPQ==
+SHA1-Digest: gxNlxnyjHI7oRX+Nr00m509mhCs=
+
+Name: skin/classic/errorColumnIndicator.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nTFrTC00x6aS8Lt2h45XbA==
+SHA1-Digest: ZESW7vMmCjUpbap8uhHPRwKJyrw=
+
+Name: skin/classic/events.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: C9UMcX9hBXmhFRcz+FfjbQ==
+SHA1-Digest: rBHaDseH1vOc4ILw0yW6yZmUJGo=
+
+Name: skin/classic/executionPointer.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wgqFCr9OBzT/ouPIRe5CxA==
+SHA1-Digest: 6nZCNCQ98pDH6ilHTvH78Hsfqns=
+
+Name: skin/classic/expandSidePanels.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8+b1ShNLKRYGVRhzMltBCA==
+SHA1-Digest: 9msnsn3BROtbGRXrlvbP2nebFMo=
+
+Name: skin/classic/expandSidePanelsVertical.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VreH/DcqptOWrEtPIOsiiQ==
+SHA1-Digest: odAsshmqeViQAVeWhxzjl6KRFBU=
+
+Name: skin/classic/firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TGxsNWMwi82FVAoXuZZ2kQ==
+SHA1-Digest: zfID0Q79DAFbvqlF2kamR8MDlJQ=
+
+Name: skin/classic/firebug64.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uwPmrK9kcN8fXgAO98jn+g==
+SHA1-Digest: eDSm1PtR/6u+vwLioCP5lC8kTyU=
+
+Name: skin/classic/firebugBig.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LOFVnCKCorn57iSd/XFFtQ==
+SHA1-Digest: oZybzzrQUNFRbAliczCopL22aXg=
+
+Name: skin/classic/firebugSmall.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1S8jOSwzS9jq+xVJlxJJ4g==
+SHA1-Digest: tWNqtNwfoBPG1wI4+Nhg8qOxego=
+
+Name: skin/classic/fontViewer.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: c+zNkBXwqRDPcsSyhnf0qQ==
+SHA1-Digest: zcQfLuxogrR/qVUwr88foIQYnjs=
+
+Name: skin/classic/html.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UYnCEalAMMw9zepX2JP+wQ==
+SHA1-Digest: fiySQ6cLy61Mzs9PDLcR8HAlxXU=
+
+Name: skin/classic/info.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LTkyUE+l9fsMPT8XSXtnDA==
+SHA1-Digest: lstIPaPgHAQcpMOFGaZqHiGGI4k=
+
+Name: skin/classic/inspect.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vReHUiBRiQrM4txJurYP5g==
+SHA1-Digest: T8yCLbyPx85LYF1drFa+bpXjROA=
+
+Name: skin/classic/jsonViewer.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BAsT7ivAwtd+25XGHCs8gg==
+SHA1-Digest: KgC55/LsQ+IJMK93vMDYoA7f+Uo=
+
+Name: skin/classic/layout.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 23fCSpJ4unqKJmQCcY5J+g==
+SHA1-Digest: JqmIuPdak7jodLS493xVdL5AIQs=
+
+Name: skin/classic/loading.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: wwS3HcG39HGTpnftsfDYrg==
+SHA1-Digest: KBxqMg3C2FfvvGGvduGwvrZS/sQ=
+
+Name: skin/classic/navigationBack.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lu+io0xpOPKoicSSC3OFvQ==
+SHA1-Digest: N4lAkf/yTGHskk54ch6xb9qxZlc=
+
+Name: skin/classic/navigationForward.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0v7bq2zIYwZ+u66mnVm11g==
+SHA1-Digest: lF020imNMtKbj/SjVR+jqT6dTQo=
+
+Name: skin/classic/net.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: lQzGyX0YiIDDoFzL4Db4xQ==
+SHA1-Digest: vHiWJgBsfn/aHUtof9buiraDmKo=
+
+Name: skin/classic/noteBorders.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8jdxtY6AvFnJ52QqAqvmIQ==
+SHA1-Digest: bLWDAlr+GW9gdpv7A71en9t7Usg=
+
+Name: skin/classic/noteBordersUps.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3JvKcj3shtHXm13UiUNXDA==
+SHA1-Digest: r+6MviNDlS/XIB5qvMRWtsSuJFg=
+
+Name: skin/classic/noteContent.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nXvIFiUzAjzqhTCdneJAdQ==
+SHA1-Digest: K5qPuXjVYLHiMt1Iu7QTpudv3QI=
+
+Name: skin/classic/noteContentUps.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: khktnlZWbFfTA0MgK9pCOQ==
+SHA1-Digest: UfDj1wL8DOQ3IfXNAJw2jHIhXww=
+
+Name: skin/classic/noteCorners.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 6mvT373MJe1yMp2FzGh0Ig==
+SHA1-Digest: kiFQmOaNZUflRXRi+R5Pt56keyw=
+
+Name: skin/classic/noteCornersUps.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: oeYcrywOKQn3gBD4dzdKiA==
+SHA1-Digest: 5pCKyTvuqKs5v0langp2n2Q0KjM=
+
+Name: skin/classic/optionsMenuTarget.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0McTIQB7fMZ9QGpVURBRAw==
+SHA1-Digest: 8io6/72PTHZvrPyoQtnFZ9TwAM4=
+
+Name: skin/classic/optionsMenuTargetHover.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: F5MoY3yIDnvltHGzEvNdjg==
+SHA1-Digest: UpFT882fcQpPMRUEflNhoHLBuK8=
+
+Name: skin/classic/panel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: p2WsFiBV0xlcpqA38vz8GQ==
+SHA1-Digest: tXgTd6/ltm7uFc/Dtu471tfI9k4=
+
+Name: skin/classic/panelbase.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: kz1jATRZVpKB+h8L9NcH/w==
+SHA1-Digest: 7IFci/ylzdFoL6rhicrm+J9FHZM=
+
+Name: skin/classic/panelNotification.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: d3PT7gd54jimp7ggnyT+RA==
+SHA1-Digest: XAN9OB4LKlBmsC6Kh277jMgA9zY=
+
+Name: skin/classic/performanceTiming.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WD8n+GKercHNPernPfLZAQ==
+SHA1-Digest: ha5dzvFDoBqGVX65OrDL696ZpJQ=
+
+Name: skin/classic/prettyPrint.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TdenMGq+ev5nhCuOV/j7xQ==
+SHA1-Digest: kjmXuwceW87YfQFx8GLrKSiLpbY=
+
+Name: skin/classic/quickInfoBox.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 9GoaPZP+E4L3QjzKaiDZwg==
+SHA1-Digest: RyaG/XZ2QxphrGcCm/alJ709smU=
+
+Name: skin/classic/quickInfoBoxPanel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Nt/5wPhGKiECffZlTuCA+w==
+SHA1-Digest: lvvrJ3EXn5aznvwctE/kmpM5fWA=
+
+Name: skin/classic/readOnlyProp.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LdxYSt/MRJNnMbGGcONKIA==
+SHA1-Digest: gjrbzCuy5hzYHOhbgUJSG4S1ZzE=
+
+Name: skin/classic/rerun.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: tIPY9ONcadvzU/iETVZvTg==
+SHA1-Digest: 6wpHFMcgt1HNQ9ih7ev+ZKMinBI=
+
+Name: skin/classic/rulerH.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: iAFuxMRm+s3wT/3qyfgpgw==
+SHA1-Digest: hnkDaMEucNPQE4XZN/3X+lTpyUw=
+
+Name: skin/classic/rulerV.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: bSPSL1drREE9tLDXTVlsKw==
+SHA1-Digest: Zlhy10ed7CRIQ6JaELa7d42kEOM=
+
+Name: skin/classic/scriptPanel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ctCwchB6JLsFMpiuK+mmXQ==
+SHA1-Digest: DC09Nb3ECRhTRYAzEz25eKWQR68=
+
+Name: skin/classic/search.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZNTEfg5LY27JQ+o3LDL3pQ==
+SHA1-Digest: YL/NXAaSRjXiEz6MZpqDJGwpMaw=
+
+Name: skin/classic/searchCancel.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JCl9lqTG2s/DU54xarhexg==
+SHA1-Digest: xkd8BmzrVO4VdGMcEwbf9ow6pyU=
+
+Name: skin/classic/searchNext.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Qkg7Sgq5C1cYx+24KbVK6Q==
+SHA1-Digest: 8hCuqJcV0auctR682FzQIbYRiB4=
+
+Name: skin/classic/searchPrevious.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JPTcwTUPrwxuNPT70zOI+Q==
+SHA1-Digest: Ic+DUB0Zzf6GpfG1ikETQCGgynU=
+
+Name: skin/classic/selectors.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: azq+4PbptAy5hn8Q4LYuuA==
+SHA1-Digest: vcNQ6nMM6D4vkpppxLg6A06uBp4=
+
+Name: skin/classic/spinner.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2NxT4DR8u1yo19noaSR/iQ==
+SHA1-Digest: BV6SLbAqsLC4Oe8lW1zGsxrshLo=
+
+Name: skin/classic/statusPathSeparator.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1RR7dFvs8mwEmsY25Bv9ig==
+SHA1-Digest: vHFrYtWglNRZZk4VkHMCh+FdMZY=
+
+Name: skin/classic/stepInto.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ySZweJl8fClr9TT4O+BBNw==
+SHA1-Digest: JRjpeBzHxFjBBlazv0plE2bzGOE=
+
+Name: skin/classic/stepOut.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: vHh0VTQYc6rFc0fRIbzPAg==
+SHA1-Digest: 1F4ZM1CWATKV4U+dbiuTyeBWihI=
+
+Name: skin/classic/stepOver.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: GRNLt5ET+mtpCJ5rKQZgfw==
+SHA1-Digest: UQyKot5Ax15ChZ2R+z9EgpxeU7Y=
+
+Name: skin/classic/tableRep.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jJoTzqd+qgv6OzgL2UY57g==
+SHA1-Digest: gH2n85pANmYvu05gPRhv7YI2J5g=
+
+Name: skin/classic/timeInfoTip.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yE+QQ273GeqqtpNp+kWX8Q==
+SHA1-Digest: hnhYpzYzf1s1JsFZNvMS+Jn46JE=
+
+Name: skin/classic/trace.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: spYGvjQS/szDIxq9e8RbsA==
+SHA1-Digest: /5MVb9m1E9Y3zAOux+h828Ti4wg=
+
+Name: skin/classic/warning.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 7kuQB0/nVEZGjArSBBepHg==
+SHA1-Digest: BrMJgwGWyTyqX8O6nQOtwX7Taoo=
+
+Name: skin/classic/watch.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: U2BIJU10RtA6Nh6xyvYrhg==
+SHA1-Digest: wVe44AVIikzJsgzBmkO9Vcdif6w=
+
+Name: skin/classic/window.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 8HvLiZArGotQvpEdRYF24A==
+SHA1-Digest: clHrbs6lH6JQTyc0oHw6I2LfFq0=
+
+Name: skin/classic/wrappedListener.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: w62CBrLeQIx82KZJWWlJpQ==
+SHA1-Digest: FM7Z0myFeJYssv/FyC5nKoK3XRE=
+
+Name: skin/classic/breakOn/breakOnError.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VAWCUsTpkCcr3lPRh3w6NA==
+SHA1-Digest: TJgDGZu+Hs0KHdP7MJsBzInVaQA=
+
+Name: skin/classic/breakOn/breakOnMutate.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DGn9nL4jXcgciGqCo1+dNA==
+SHA1-Digest: Pg6gpWHcWOoVVV4OXYy8679wf8Q=
+
+Name: skin/classic/breakOn/breakOnNext.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: rF6hmIhGBUbt6rsfYC642A==
+SHA1-Digest: i56tMFGnV/t2OshpxPuxOdx7gOM=
+
+Name: skin/classic/breakOn/breakOnXHR.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yO55ZAc+ysqozcanmOc9VA==
+SHA1-Digest: ldaYzrE3LrcOnwTWIXJ2xTvZHpE=
+
+Name: skin/classic/cookies/activation-menu-cookies.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CBrf4AoFoz6YzjcK6aM6sw==
+SHA1-Digest: bwECpkirSLfrGkhEV0l4j7IUGDQ=
+
+Name: skin/classic/cookies/breakOnCookie.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: sTXTk/8IFFHRJ2Ma/VtmRw==
+SHA1-Digest: 48ibbd8Ut2Ujxg+QbaOTJ00NsP8=
+
+Name: skin/classic/cookies/cookie.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zWkDVCT9MtshImvi37p3YQ==
+SHA1-Digest: D7QxbxpVwv/6oeB1sZPi1xcNnUw=
+
+Name: skin/classic/cookies/cookies.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: K8XFEIdU0+zrjeR4ddGFSQ==
+SHA1-Digest: eXmC5MvbFMHUCRiJZJeoBdxYGys=
+
+Name: skin/classic/cookies/editCookie.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: xdnJWh6K94HgcIsrftcG5A==
+SHA1-Digest: nV3OSI6SMnPnRZLlDUthwJJE70Q=
+
+Name: skin/classic/cookies/trace.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: cbr+7tpWcpjDFkHK+C5WQA==
+SHA1-Digest: NUBT0T8FnrO0XdHYYTsPpFU6cy4=
+
+Name: skin/classic/linux/console.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3M5hbgOS6j5zcgC7GQmr5g==
+SHA1-Digest: FVExHMpmxOPZGcDDuywtt0v53JI=
+
+Name: skin/classic/linux/cookies.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: otdef/028KQOXjy9wNWNbw==
+SHA1-Digest: +6ajqHVx2q6Yj4cpc1kqxAOf6lk=
+
+Name: skin/classic/linux/firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qgk/lztleGEoy9mDC9CEnA==
+SHA1-Digest: 5nuacJgS3FNMPKT5ZhsideBjyUY=
+
+Name: skin/classic/linux/net.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: g6X0t0oBST/6aGUsK4mm9A==
+SHA1-Digest: NobYBVuI9xM1KFmRNYqwP9Rb0p4=
+
+Name: skin/classic/mac/breakpointConditionEditor.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: jWXCOzG5/7mh0bp4KV0OmA==
+SHA1-Digest: EUBoPjNh+4sq9mrCkL7V/nLPkiQ=
+
+Name: skin/classic/mac/breakpointConditionEditorDown.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 5XvhlBw7wuqm2l1Nakk2dg==
+SHA1-Digest: dEzvPad/BqvEuiYAFpsfebg73DQ=
+
+Name: skin/classic/mac/close.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2dXLbRXKBMYUm7Rrh62jZw==
+SHA1-Digest: CKq6JqdwYTnShJX5Ozinbic4WL8=
+
+Name: skin/classic/mac/collapseSidePanels.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fIXrUnmyTPTtokB9uXKVPw==
+SHA1-Digest: /Loiu87BblD5sKZNfkvBFyUXeGM=
+
+Name: skin/classic/mac/collapseSidePanelsVertical.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Y1T7uu35gCf2dHBbxSkqFw==
+SHA1-Digest: 3oHX2HveXhN++Lewiro7Mi8qkiU=
+
+Name: skin/classic/mac/commandHistory.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: VzsRuQrurr71FfZl+LIP8Q==
+SHA1-Digest: KafzYxh4IV5Bn4nFHRFqSi7RqWQ=
+
+Name: skin/classic/mac/console.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: BJcJpjLYJcBAlP6QW7Bt6g==
+SHA1-Digest: nVuAntpRLUYqOgA5DK9xE8xff9g=
+
+Name: skin/classic/mac/cookies.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: fSdS2EobjhT4jT83nEj2xg==
+SHA1-Digest: 7D+4o8lbbuf6Ld7jSHG9i+oq4AI=
+
+Name: skin/classic/mac/debugger.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: nsr2Qax8nMGx86Zj7rm8Fg==
+SHA1-Digest: TGRAWEQWIZsTSG9QXUguZXeY8t4=
+
+Name: skin/classic/mac/detach.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XiYjNdPNuP4KgNTmbpKEBA==
+SHA1-Digest: Z3ZLb8Na3mHL1/dSQoMyY9cl7kc=
+
+Name: skin/classic/mac/expandSidePanels.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: uC3EYFcE2AVeTFuWhllSwg==
+SHA1-Digest: PYskgccaZToLIuq9y1xsPM2tfYA=
+
+Name: skin/classic/mac/expandSidePanelsVertical.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Dy5BAM78LacDxEqByRi8Og==
+SHA1-Digest: Fz7tDcfezDYkNDqVi7HmKHDZC+M=
+
+Name: skin/classic/mac/firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 0vegIzoZK8GFEPquxXjtmA==
+SHA1-Digest: BWjKRF3amvzbqouTDXhEg2iVsPI=
+
+Name: skin/classic/mac/minimize.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: grzvmpO/3ztgwv46+obpKw==
+SHA1-Digest: 356hTQ/P840889mGA18QVc1hBjg=
+
+Name: skin/classic/mac/net.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: W514rvOzIPBYhH4m5+Ozbg==
+SHA1-Digest: n3FUnl2o28+yaGZ941bOqxE8XVU=
+
+Name: skin/classic/mac/optionsMenuTarget.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: TIMLe6S/GVX+joWQAjI05Q==
+SHA1-Digest: Lge8mJTk1NMHGxNvfHcBKjNs3xM=
+
+Name: skin/classic/mac/optionsMenuTargetHover.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: u9iO2DZffvT6PIrtLNdCyw==
+SHA1-Digest: h7S+N/YxU1n4OYuVJ/EFvtDNfhA=
+
+Name: skin/classic/mac/panel.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: AlwXXqlR8g8yIkko897ZQA==
+SHA1-Digest: 5YfgsVycjYB89tvNyasHkF3KkzA=
+
+Name: skin/classic/mac/pin.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: t7GFCUJIs7xKmy3TjYH3og==
+SHA1-Digest: 7VxqX8eLcYDQhs4x/JSAxjwpQlE=
+
+Name: skin/classic/mac/pinned.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Rb1zp8rvCrluz2V5SoA4uw==
+SHA1-Digest: hw1ESoG8Jnes//DI8v24DuFYlhw=
+
+Name: skin/classic/mac/quickInfoBox.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Ky0dMiutA3JVmHnIboVICw==
+SHA1-Digest: s1r0WLTQJrAWxAV27qmMrY8fVzQ=
+
+Name: skin/classic/mac/search.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DS/3gTMGEmc7Ltd1310ffQ==
+SHA1-Digest: 3VE4jVDtj0XkHEuygSK22JZc3G8=
+
+Name: skin/classic/mac/twistyClosed.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MbyvQBdAWB11H4YzuNATgw==
+SHA1-Digest: EfBwNoy7MrPhTqUcbQeLRxi9kfU=
+
+Name: skin/classic/mac/twistyOpen.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: UebHwh2xwpy6Ml8hMVlN/Q==
+SHA1-Digest: Jve+i9XgAefVKefaHH8zAOeqiNo=
+
+Name: skin/classic/mac/window.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: DoCyfVwz1NSQoyHT5RhYTA==
+SHA1-Digest: m40kgCCkNOi/GNlPU9V8x9PPi7E=
+
+Name: skin/classic/win/breakpointConditionEditor.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: LqBX5xCLxcK/sWZVSWK7ew==
+SHA1-Digest: MIZU+0NFKvfKgtJojuJcU/m7Jas=
+
+Name: skin/classic/win/breakpointConditionEditorDown.png
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: o+SshOp39W4Zb/TM85J1Lw==
+SHA1-Digest: 5XJQEDhlynn+4t2z6UYF9Qkdz5Q=
+
+Name: skin/classic/win/close.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: MB/XP38hvJqX4AAgKqqhkQ==
+SHA1-Digest: aZeswGD8G9LNMC/Qtu50kc0yMlw=
+
+Name: skin/classic/win/commandHistory.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ivSOoxLqG8NvBuhE6xtc1w==
+SHA1-Digest: XE5u39xTzHLDHNGdB0mAdfawWBo=
+
+Name: skin/classic/win/deactivate.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 93F5EJVhK7g2LKR4zLhCBg==
+SHA1-Digest: C7QjcHRFATt3CYNzauYwZTcBm5o=
+
+Name: skin/classic/win/detach.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 2J9JwcSe7dtbvcYeb1pu/g==
+SHA1-Digest: BmPV3ehAsxAxxfARo484vW/tA1Q=
+
+Name: skin/classic/win/down.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: zVuBnO6bnml895TX59F0QQ==
+SHA1-Digest: pyvIvtSQ5Uktb10S6m/yVPQ8cPM=
+
+Name: skin/classic/win/firebug.css
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: b8rnmpfJMK/ygM12ea6I/w==
+SHA1-Digest: RBriqIM6Ozv8cFir7QW/HHH8sWs=
+
+Name: skin/classic/win/minimize.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: IMRDWtdCAjQR7DYNqpb69w==
+SHA1-Digest: C7/EmzwlNYT2V/jJCgimbk8D6x0=
+
+Name: skin/classic/win/pin.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 70TQX67PuV01CYjDbyeEGw==
+SHA1-Digest: FHIuWaRPdswt5BL0lJrJO6TdnYc=
+
+Name: skin/classic/win/pinned.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: XeYo0SfE2P3hCXIuj/nq7Q==
+SHA1-Digest: s8HzEdFyVf+5dneEcTwlL4uSyhA=
+
+Name: skin/classic/win/twistyClosed.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: yHOjTtsu6B1abGiHpNrZkg==
+SHA1-Digest: oFs3XCeZQFVKnMUQhcdPxfyRHoA=
+
+Name: skin/classic/win/twistyOpen.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 3+YKfsavEeDqdWunTA3wWQ==
+SHA1-Digest: CBtyXq8AISFnnRsjrETtT8zE+ec=
+
+Name: skin/classic/win/up.svg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: +ACY3yLS6QE33wZMuFLpKw==
+SHA1-Digest: 3pyYOpIJSmgv6WaUMpMJxXQ9QlQ=
+
+Name: license.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: imDMjjQBGsHnSU9kxGaZSw==
+SHA1-Digest: 6Q5Ia5b3ACtCPUpTIcDZDE6xxWM=
+
diff --cc META-INF/mozilla.rsa
index c8cbb9d,0000000..36b6cb3
mode 100644,000000..100644
Binary files differ
diff --cc META-INF/mozilla.sf
index 7996f86,0000000..8ae8ceb
mode 100644,000000..100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@@ -1,4 -1,0 +1,4 @@@
+Signature-Version: 1.0
- MD5-Digest-Manifest: ZPBXK7KQDV5STKw9poHXjw==
- SHA1-Digest-Manifest: 3MMr23DaSW6iEYcEEOU+flsj34A=
++MD5-Digest-Manifest: KgXeJ/PXkKQgvdET8xAE4w==
++SHA1-Digest-Manifest: YG9VuLoxjWpjOnRTwQgG4Sa7jOI=
+
diff --cc content/firebug/branch.properties
index 3e68b01,0000000..354a2a6
mode 100644,000000..100644
--- a/content/firebug/branch.properties
+++ b/content/firebug/branch.properties
@@@ -1,8 -1,0 +1,8 @@@
+# DO NOT MERGE INTO TRUNK
- RELEASE=.15
++RELEASE=.16
+VERSION=2.0
+TRUNK=
+# To allow build.xml to drop the xpi directly into the svn working copy for getfirebug.com
+# the root of the fbug svn tree must be be at the same level as the root of getfirebug.com
+# Otherwise specify your own path.
+GETFIREBUG=../../../../getfirebug.com/tags/production
diff --cc content/firebug/firefox/browserOverlay.js
index f1688e1,0000000..6e207c3
mode 100644,000000..100644
--- a/content/firebug/firefox/browserOverlay.js
+++ b/content/firebug/firefox/browserOverlay.js
@@@ -1,1001 -1,0 +1,996 @@@
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/trace",
+ "firebug/lib/options",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/array",
+ "firebug/lib/string",
+ "firebug/lib/xpcom",
+ "firebug/firefox/browserOverlayLib",
+ "firebug/firefox/browserCommands",
+ "firebug/firefox/browserMenu",
+ "firebug/firefox/browserToolbar",
+ "firebug/lib/system",
+ "firebug/lib/devtools",
++ "firebug/lib/channel",
+],
+function(FBTrace, Options, Locale, Events, Arr, Str, Xpcom, BrowserOverlayLib,
- BrowserCommands, BrowserMenu, BrowserToolbar, System, DevTools) {
++ BrowserCommands, BrowserMenu, BrowserToolbar, System, DevTools, Channel) {
+
+// ********************************************************************************************* //
+// Constants
+
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+var Cu = Components.utils;
+
+var {$, $el, $stylesheet, $menuitem, $menuseparator} = BrowserOverlayLib;
+
+Locale.registerStringBundle("chrome://firebug/locale/firebug.properties");
+Locale.registerStringBundle("chrome://firebug/locale/cookies.properties");
+Locale.registerStringBundle("chrome://firebug/locale/selectors.properties");
+Locale.registerStringBundle("chrome://firebug/locale/keys.properties");
+Locale.registerStringBundle("chrome://global-platform/locale/platformKeys.properties");
+Locale.registerStringBundle("chrome://global/locale/keys.properties");
+Locale.registerStringBundle("chrome://firebug/locale/multiprocess-notification.properties");
+
+Cu.import("resource://firebug/loader.js");
+Cu.import("resource://firebug/fbtrace.js");
+Cu.import("resource://gre/modules/AddonManager.jsm");
- Cu.import("resource://gre/modules/NetUtil.jsm");
+
+var servicesScope = {};
+Cu.import("resource://gre/modules/Services.jsm", servicesScope);
+
+const firstRunPage = "https://getfirebug.com/firstrun#Firebug ";
+
+var auroraChannel = "";
+try {
+ var value = servicesScope.Services.prefs.getCharPref("app.update.channel");
+ auroraChannel = (value == "aurora") || (value == "nightly-gum");
+}
+catch (err) {
+}
+
+// xxxHonza: getfirebug.com (or just the firebug/3.0 directory) is
+// surprisingly often not available.
+var downloadError = "Failed to get the latest Firebug 3 XPI from:\n\n" +
+ "https://getfirebug.com/releases/firebug/3.0/\n\n" +
+ "Try again or download the latest XPI manually.";
+
+// ********************************************************************************************* //
+// BrowserOverlay Implementation
+
+function BrowserOverlay(win)
+{
+ this.win = win;
+ this.doc = win.document;
+}
+
+BrowserOverlay.prototype =
+{
+ // When Firebug is disabled or uninstalled this elements must be removed from
+ // chrome UI (XUL).
+ nodesToRemove: [],
+
+ auroraChannel: auroraChannel,
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Initialization
+
+ initialize: function(reason)
+ {
+ // Expose BrowserOverlayLib object to extensions.
+ this.win.Firebug.BrowserOverlayLib = BrowserOverlayLib;
+
+ // This element (a broadcaster) is storing Firebug state information. Other elements
+ // (like for example the Firebug start button) can watch it and display the info to
+ // the user.
+ $el(this.doc, "broadcaster", {id: "firebugStatus", suspended: true},
+ $(this.doc, "mainBroadcasterSet"));
+
+ var node = $stylesheet(this.doc, "chrome://firebug/content/firefox/browserOverlay.css");
+
+ if (System.isMac(this.win))
+ $stylesheet(this.doc, "chrome://firebug/content/firefox/macBrowserOverlay.css");
+
+ this.nodesToRemove.push(node);
+
+ this.loadContextMenuOverlay();
+ this.loadFirstRunPage(reason);
+
+ var version = this.getVersion();
+
+ BrowserCommands.overlay(this.doc);
+ BrowserMenu.overlay(this);
+ BrowserToolbar.overlay(this.doc, version);
+
+ this.internationalize();
+ this.allPagesActivation();
+ },
+
+ internationalize: function()
+ {
+ // Internationalize all elements with 'fbInternational' class. Clone
+ // before internationalization.
+ var elements = Arr.cloneArray(this.doc.getElementsByClassName("fbInternational"));
+ Locale.internationalizeElements(this.doc, elements, ["label", "tooltiptext", "aria-label"]);
+ },
+
+ allPagesActivation: function()
+ {
+ // Load Firebug by default if activation is on for all pages (see issue 5522)
+ if (Options.get("allPagesActivation") == "on" || !Options.get("delayLoad"))
+ {
+ var self = this;
+ this.startFirebug(function(Firebug)
+ {
+ var browser = Firebug.Firefox.getBrowserForWindow(self.win);
+ var uri = Firebug.Firefox.getCurrentURI();
+
+ // Open Firebug UI (e.g. if the annotations say so, issue 5623)
+ if (uri && Firebug.TabWatcher.shouldCreateContext(browser, uri.spec, null))
+ Firebug.toggleBar(true);
+
+ FBTrace.sysout("Firebug loaded by default since 'allPagesActivation' is on " +
+ "or 'delayLoad' is false");
+ });
+ }
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Load Rest of Firebug
+
+ /**
+ * This method is called by the Framework to load entire Firebug. It's executed when
+ * the user requires Firebug for the first time.
+ *
+ * @param {Object} callback Executed when Firebug is fully loaded
+ */
+ startFirebug: function(callback)
+ {
+ // Special case for e10s enabled browser.
+ if (this.isMultiprocessEnabled()) {
+ this.showNewMultiprocessNotification();
+ return;
+ }
+
+ /*if (this.isMultiprocessEnabled()) {
+ this.showMultiprocessNotification();
+ return;
+ }
+ else if (this.isAuroraChannel()) {
+ this.showAuroraNotification();
+ return;
+ }*/
+
+ if (this.win.Firebug.waitingForFirstLoad)
+ return;
+
+ if (this.win.Firebug.isInitialized)
+ return callback && callback(this.win.Firebug);
+
+ if (FBTrace.DBG_INITIALIZE)
+ FBTrace.sysout("overlay; Load Firebug...", (callback ? callback.toString() : ""));
+
+ this.win.Firebug.waitingForFirstLoad = true;
+
+ // List of Firebug scripts that must be loaded into the global scope (browser.xul)
+ // FBTrace is no longer loaded into the global space.
+ var scriptSources = [
+ "chrome://firebug/content/legacy.js",
+ "chrome://firebug/content/moduleConfig.js"
+ ];
+
+ // Create script elements.
+ var self = this;
+ scriptSources.forEach(function(url)
+ {
+ servicesScope.Services.scriptloader.loadSubScript(url, self.doc);
+
+ // xxxHonza: This doesn't work since Firefox 28. From some reason the script
+ // isn't parsed when inserted into the second browser window. See issue 6731
+ // $script(self.doc, url);
+ });
+
+ var container = $(this.doc, "appcontent");
+
+ // Create Firebug splitter element.
+ $el(this.doc, "splitter", {id: "fbContentSplitter", collapsed: "true"}, container);
+
+ // Create Firebug main frame and container.
+ $el(this.doc, "vbox", {id: "fbMainFrame", collapsed: "true", persist: "height,width"}, [
+ $el(this.doc, "browser", {
+ id: "fbMainContainer",
+ flex: "2",
+ src: "chrome://firebug/content/firefox/firebugFrame.xul",
+ disablehistory: "true"
+ })
+ ], container);
+
+ // When Firebug is fully loaded and initialized it fires a "FirebugLoaded"
+ // event to the browser document (browser.xul scope). Wait for that to happen.
+ this.doc.addEventListener("FirebugLoaded", function onLoad()
+ {
+ self.doc.removeEventListener("FirebugLoaded", onLoad, false);
+ self.win.Firebug.waitingForFirstLoad = false;
+
+ // xxxHonza: TODO find a better place for notifying extensions
+ FirebugLoader.dispatchToScopes("firebugFrameLoad", [self.win.Firebug]);
+ if (callback)
+ callback(self.win.Firebug);
+ }, false);
+ },
+
+ stopFirebug: function()
+ {
+ this.unloadContextMenuOverlay();
+ BrowserCommands.resetDisabledKeys(this.win);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Menu Handlers
+
+ onOptionsShowing: function(popup)
+ {
+ for (var child = popup.firstChild; child; child = child.nextSibling)
+ {
+ if (child.localName == "menuitem")
+ {
+ var option = child.getAttribute("option");
+ if (option)
+ {
+ var checked = Options.get(option);
+
+ // xxxHonza: I believe that allPagesActivation could be simple boolean option.
+ if (option == "allPagesActivation")
+ checked = (checked == "on") ? true : false;
+
+ child.setAttribute("checked", checked);
+ }
+ }
+ }
+ },
+
+ onToggleOption: function(menuItem)
+ {
+ var option = menuItem.getAttribute("option");
+ var checked = menuItem.getAttribute("checked") == "true";
+
+ Options.set(option, checked);
+ },
+
+ onMenuShowing: function(popup, event)
+ {
+ // If the event comes from a sub menu, just ignore it.
+ if (popup != event.target)
+ return;
+
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+
+ // Generate dynamic content.
+ for (var i=0; i<BrowserMenu.firebugMenuContent.length; i++)
+ popup.appendChild(BrowserMenu.firebugMenuContent[i].cloneNode(true));
+
+ var collapsed = "true";
+ if (this.win.Firebug.chrome)
+ {
+ var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
+ collapsed = fbContentBox.getAttribute("collapsed");
+ }
+
+ var currPos = Options.get("framePosition");
+ var placement = this.win.Firebug.getPlacement ? this.win.Firebug.getPlacement() : "";
+
+ // Switch between "Open Firebug" and "Hide Firebug" label in the popup menu.
+ var toggleFirebug = popup.querySelector("#menu_firebug_toggleFirebug");
+ if (toggleFirebug)
+ {
+ var hiddenUI = (collapsed == "true" || placement == "minimized");
+ toggleFirebug.setAttribute("label", (hiddenUI ?
+ Locale.$STR("firebug.ShowFirebug") : Locale.$STR("firebug.HideFirebug")));
+
+ toggleFirebug.setAttribute("tooltiptext", (hiddenUI ?
+ Locale.$STR("firebug.menu.tip.Open_Firebug") :
+ Locale.$STR("firebug.menu.tip.Minimize_Firebug")));
+
+ var currentLocation = toggleFirebug.ownerDocument.defaultView.top.location.href;
+ var inDetachedWindow = currentLocation.indexOf("firebug.xul") > 0;
+
+ // If Firebug is detached, use "Focus Firebug Window" label
+ // instead of "Hide Firebug" when the menu isn't opened from
+ // within the detached Firebug window. the 'placement' is used
+ // to ensure Firebug isn't closed with close button of detached window
+ // and 'inDetachedWindow' variable is also used to ensure the menu is
+ // opened from within the detached window.
+ if (currPos == "detached" && this.win.Firebug.currentContext &&
+ placement != "minimized" && !inDetachedWindow)
+ {
+ toggleFirebug.setAttribute("label", Locale.$STR("firebug.FocusFirebug"));
+ toggleFirebug.setAttribute("tooltiptext",
+ Locale.$STR("firebug.menu.tip.Focus_Firebug"));
+ }
+ }
+
+ // Hide "Deactivate Firebug" menu if Firebug is not active.
+ var closeFirebug = popup.querySelector("#menu_firebug_closeFirebug");
+ if (closeFirebug)
+ {
+ closeFirebug.setAttribute("collapsed",
+ (this.win.Firebug.currentContext ? "false" : "true"));
+ }
+
+ // Update About Menu
+ var version = this.getVersion();
+ if (version)
+ {
+ var node = popup.getElementsByClassName("firebugAbout")[0];
+ var aboutLabel = node.getAttribute("label");
+ node.setAttribute("label", aboutLabel + " " + version);
+ node.classList.remove("firebugAbout");
+ }
+
+ // Allow Firebug menu customization (see FBTest and FBTrace as an example).
+ var event = new this.win.CustomEvent("firebugMenuShowing", {detail: popup});
+ this.doc.dispatchEvent(event);
+ },
+
+ onMenuHiding: function(popup, event)
+ {
+ if (popup != event.target)
+ return;
+
+ // xxxHonza: I don't know why the timeout must be here, but if it isn't
+ // the icon menu is broken (see issue 5427)
+ this.win.setTimeout(function()
+ {
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+ });
+ },
+
+ onViewMenuShowing: function()
+ {
+ // Check whether Firebug is open
+ var open = false;
+ if (this.win.Firebug.chrome)
+ {
+ var fbContentBox = this.win.Firebug.chrome.$("fbContentBox");
+ open = fbContentBox.getAttribute("collapsed") == "true" ? false : true;
+ }
+
+ var firebugViewMenuItem = this.win.document.
+ getElementById("menu_firebug_viewToggleFirebug");
+ firebugViewMenuItem.setAttribute("checked", open);
+ },
+
+ onPositionPopupShowing: function(popup)
+ {
+ while (popup.lastChild)
+ popup.removeChild(popup.lastChild);
+
+ // Load Firebug before the position is changed.
+ var oncommand = "Firebug.browserOverlay.startFirebug(function(){" +
+ "Firebug.chrome.setPosition('%pos%')" + "})";
+
+ var items = [];
+ var currPos = Options.get("framePosition");
+
+ var positions = ["detached", "top", "bottom", "left", "right"];
+ for (var i=0; i<positions.length; i++)
+ {
+ var pos = positions[i];
+ var label = Str.capitalize(pos);
+
+ var item = $menuitem(this.doc, {
+ label: "firebug.menu." + label,
+ tooltiptext: "firebug.menu.tip." + label,
+ type: "radio",
+ oncommand: oncommand.replace("%pos%", pos),
+ checked: (currPos == pos)
+ });
+
+ if (pos == "detached")
+ items.key = "key_firebug_detachFirebug";
+
+ popup.appendChild(item);
+ }
+
+ return true;
+ },
+
+ openAboutDialog: function()
+ {
+ var self = this;
+
+ // Firefox 4.0+
+ Cu["import"]("resource://gre/modules/AddonManager.jsm");
+ this.win.AddonManager.getAddonByID("firebug at software.joehewitt.com", function(addon)
+ {
+ self.win.openDialog("chrome://mozapps/content/extensions/about.xul", "",
+ "chrome,centerscreen,modal", addon);
+ });
+ },
+
+ setPosition: function(newPosition)
+ {
+ // todo
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug PanelSelector Menu
+
+ onPanelSelectorShowing: function(popup)
+ {
+ var self = this;
+ this.startFirebug(function()
+ {
+ self.win.Firebug.PanelSelector.onMenuShowing(popup);
+ });
+ },
+
+ onPanelSelectorHiding: function(popup)
+ {
+ var self = this;
+ this.startFirebug(function()
+ {
+ self.win.Firebug.PanelSelector.onMenuHiding(popup);
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Firebug Version
+
+ getVersion: function()
+ {
+ var versionURL = "chrome://firebug/content/branch.properties";
- var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+
+ var loadingPrincipal = servicesScope.Services.scriptSecurityManager.getSystemPrincipal();
+
- var channel = NetUtil.newChannel({
- uri: versionURL,
- loadUsingSystemPrincipal: true
- });
-
++ var channel = Channel.new(versionURL);
+ var input = channel.open();
+ var sis = Cc["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Ci.nsIScriptableInputStream);
+ sis.init(input);
+
+ var content = sis.readBytes(input.available());
+ sis.close();
+
+ var m = /RELEASE=(.*)/.exec(content);
+ if (!m)
+ return "no RELEASE in " + versionURL;
+
+ var release = m[1];
+
+ m = /VERSION=(.*)/.exec(content);
+ if (!m)
+ return "no VERSION in " + versionURL;
+
+ var version = m[1];
+
+ return version+""+release;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // External Editors
+
+ onEditorsShowing: function(popup)
+ {
+ var self = this;
+ this.startFirebug(function()
+ {
+ self.win.Firebug.ExternalEditors.onEditorsShowing(popup);
+ });
+
+ return true;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Page Context Menu Overlay
+
+ loadContextMenuOverlay: function()
+ {
+ var contextMenu = this.win.nsContextMenu;
+ if (typeof(contextMenu) == "undefined")
+ return;
+
+ // isTargetAFormControl is removed, see:
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=433168
+ if (typeof(contextMenu.prototype.isTargetAFormControl) != "undefined")
+ {
+ var setTargetOriginal = this.setTargetOriginal = contextMenu.prototype.setTarget;
+ contextMenu.prototype.setTarget = function(aNode, aRangeParent, aRangeOffset)
+ {
+ setTargetOriginal.apply(this, arguments);
+
+ if (this.isTargetAFormControl(aNode))
+ this.shouldDisplay = true;
+ };
+ }
+
+ // Hide built-in inspector if the pref says so.
+ var initItemsOriginal = this.initItemsOriginal = contextMenu.prototype.initItems;
+ contextMenu.prototype.initItems = function()
+ {
+ initItemsOriginal.apply(this, arguments);
+
+ // Hide built-in inspector menu item if the pref "extensions.firebug.hideDefaultInspector"
+ // says so. Note that there is also built-in preference "devtools.inspector.enable" that
+ // can be used for the same purpose.
+ var hideInspect = Options.get("hideDefaultInspector");
+ if (hideInspect)
+ {
+ this.showItem("inspect-separator", false);
+ this.showItem("context-inspect", false);
+ }
+ };
+ },
+
+ unloadContextMenuOverlay: function()
+ {
+ var contextMenu = this.win.nsContextMenu;
+ if (typeof(contextMenu) == "undefined")
+ return;
+
+ if (this.setTargetOriginal)
+ contextMenu.prototype.setTarget = this.setTargetOriginal;
+
+ if (this.initItemsOriginal)
+ contextMenu.prototype.initItems = this.initItemsOriginal;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // First Run Page
+
+ loadFirstRunPage: function(reason)
+ {
+ if (this.checkFirebugVersion(Options.get("currentVersion")) <= 0)
+ return;
+
+ // Do not show the first run page when Firebug is being updated. It'll be displayed
+ // the next time the browser is restarted
+ // # ADDON_UPGRADE == 7
+ if (reason == 7)
+ return;
+
+ // Open the page in the top most window, so the user can see it immediately.
+ var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
+ if (wm.getMostRecentWindow("navigator:browser") == this.win.top)
+ {
+ // Update the preference to make sure the page is not displayed again.
+ // To avoid being annoying when Firefox crashes, forcibly save it, too.
+ var version = this.getVersion();
+ Options.set("currentVersion", version);
+
+ if (Options.get("showFirstRunPage"))
+ {
+ var self = this;
+ var timeout = this.win.setTimeout(function()
+ {
+ if (self.win.closed)
+ return;
+
+ self.openFirstRunPage(self.win);
+ }, 1000);
+
+ this.win.addEventListener("unload", function()
+ {
+ self.win.clearTimeout(timeout);
+ }, false);
+ }
+ }
+ },
+
+ openFirstRunPage: function(win)
+ {
+ var version = this.getVersion();
+ var url = firstRunPage + version;
+
+ var browser = win.gBrowser || win.getBrowser();
+ if (!browser)
+ {
+ FBTrace.sysout("browserOverlay.openFirstRunPage; ERROR there is no gBrowser!");
+ return;
+ }
+
+ // Open the firstRunPage in background
+ /*gBrowser.selectedTab = */browser.addTab(url, null, null, null);
+
+ // Make sure prefs are stored, otherwise the firstRunPage would be displayed
+ // again if Firefox crashes.
+ this.win.setTimeout(function()
+ {
+ Options.forceSave();
+ }, 400);
+ },
+
+ // xxxsz: Can't System.checkFirebugVersion() be used for that?
+ checkFirebugVersion: function(currentVersion)
+ {
+ if (!currentVersion)
+ return 1;
+
+ var version = this.getVersion();
+
+ // Use Firefox comparator service
+ var versionChecker = Xpcom.CCSV("@mozilla.org/xpcom/version-comparator;1",
+ "nsIVersionComparator");
+
+ return versionChecker.compare(version, currentVersion);
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Upgrade Firebug
+
+ upgradeFirebug: function(event)
+ {
+ Events.cancelEvent(event);
+
+ this.showUpgradeNotification();
+
+ // Start download automatically
+ this.onUpgradeFirebug(event, 'fbUpgradeNotificationPanel');
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Remote Browser (aka e10s enabled browser)
+
+ isMultiprocessEnabled: function()
+ {
+ var content = $(this.doc, "content");
+ if (content.mCurrentBrowser.isRemoteBrowser)
+ return true;
+
+ var browser = this.win.gBrowser || this.win.getBrowser();
+ if (browser.isRemoteBrowser)
+ return true;
+
+ if (servicesScope.Services.appinfo.browserTabsRemoteAutostart)
+ return true;
+
+ return false;
+ },
+
+ isAuroraChannel: function() {
+ if (this.notNow)
+ return false;
+
+ if (Options.get("noThanksFirebugNext"))
+ return false;
+
+ return auroraChannel;
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Aurora notification
+
+ showAuroraNotification: function()
+ {
+ var popupSet = $(this.doc, "mainPopupSet");
+ var panel = this.doc.querySelector("fbAuroraNotificationPanel");
+ if (!panel)
+ {
+ panel = this.doc.createElement("fbAuroraNotificationPanel");
+ panel.setAttribute("upgradecommand", "Firebug.browserOverlay.onUpgradeFirebug(event, 'fbAuroraNotificationPanel')");
+ panel.setAttribute("notnowcommand", "Firebug.browserOverlay.onNotNow(event)");
+ panel.setAttribute("nothankscommand", "Firebug.browserOverlay.onNoThanks(event)");
+ panel.setAttribute("cancelcommand", "Firebug.browserOverlay.onCancelUpgrade(event, 'fbAuroraNotificationPanel')");
+ popupSet.appendChild(panel);
+ }
+
+ panel.internationalize(Locale);
+ panel.open();
+ },
+
+ onNoThanks: function(event)
+ {
+ Events.cancelEvent(event);
+
+ // Not sure why the timeout needs to be here, but the 'close'
+ // method is only available asynchronously.
+ this.win.setTimeout(() => {
+ Options.set("noThanksFirebugNext", true);
+ this.openFirebug2(event.target);
+ });
+ },
+
+ onNotNow: function(event)
+ {
+ Events.cancelEvent(event);
+
+ this.win.setTimeout(() => {
+ this.notNow = true;
+ this.openFirebug2(event.target);
+ });
+ },
+
+ openFirebug2: function(panel)
+ {
+ var button = this.doc.getElementById("firebug-button");
+ button.enableFirebugActions();
+ panel.close();
+
+ this.startFirebug(function(Firebug) {
+ Firebug.toggleBar(true);
+ });
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // Manual upgrade panel
+
+ showUpgradeNotification: function()
+ {
+ var popupSet = $(this.doc, "mainPopupSet");
+ var panel = this.doc.querySelector("fbUpgradeNotificationPanel");
+ if (!panel)
+ {
+ panel = this.doc.createElement("fbUpgradeNotificationPanel");
+ panel.setAttribute("upgradecommand", "Firebug.browserOverlay.onUpgradeFirebug(event, 'fbUpgradeNotificationPanel')");
+ panel.setAttribute("cancelcommand", "Firebug.browserOverlay.onCancelUpgrade(event, 'fbUpgradeNotificationPanel')");
+ popupSet.appendChild(panel);
+ }
+
+ panel.internationalize(Locale);
+ panel.open();
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // e10s enabled browser Notification
+
+ showMultiprocessNotification: function()
+ {
+ var popupSet = $(this.doc, "mainPopupSet");
+ var panel = this.doc.querySelector("fbMultiprocessNotificationPanel");
+ if (!panel)
+ {
+ panel = this.doc.createElement("fbMultiprocessNotificationPanel");
+ panel.setAttribute("upgradecommand", "Firebug.browserOverlay.onUpgradeFirebug(event, 'fbMultiprocessNotificationPanel')");
+ panel.setAttribute("disablecommand", "Firebug.browserOverlay.onDisableE10s(event)");
+ panel.setAttribute("cancelcommand", "Firebug.browserOverlay.onCancelUpgrade(event, 'fbMultiprocessNotificationPanel')");
+ popupSet.appendChild(panel);
+ }
+
+ panel.internationalize(Locale);
+ panel.open();
+ },
+
+ showNewMultiprocessNotification: function()
+ {
+ if (Options.get("noMultiprocessMessage"))
+ {
+ this.toggleDevTools();
+ return;
+ }
+
+ var popupSet = $(this.doc, "mainPopupSet");
+ var panel = this.doc.querySelector("fbNewMultiprocessNotificationPanel");
+ if (!panel)
+ {
+ panel = this.doc.createElement("fbNewMultiprocessNotificationPanel");
+ panel.setAttribute("opendevtoolscommand", "Firebug.browserOverlay.onOpenDevTools(event, 'fbMultiprocessNotificationPanel')");
+ panel.setAttribute("disablecommand", "Firebug.browserOverlay.onDisableE10s(event)");
+ popupSet.appendChild(panel);
+ }
+
+ panel.internationalize(Locale);
+ panel.open();
+ },
+
+ onDisableE10s: function(event)
+ {
+ Events.cancelEvent(event);
+
+ // xxxHonza: there is no other way to disable e10s that set
+ // both realated prefs. It's unlikely that there will be .2
+ Options.setPref("browser.tabs", "remote.autostart", false);
+ Options.setPref("browser.tabs", "remote.autostart.1", false);
+
+ var panel = this.doc.querySelector("fbNewMultiprocessNotificationPanel");
+ Options.set("noMultiprocessMessage", panel.notAgain.checked);
+
+ restartFirefox();
+ },
+
+ onOpenDevTools: function(event)
+ {
+ Events.cancelEvent(event);
+
+ var panel = this.doc.querySelector("fbNewMultiprocessNotificationPanel");
+ Options.set("noMultiprocessMessage", panel.notAgain.checked);
+
+ panel.close();
+
+ this.toggleDevTools(true);
+ },
+
+ toggleDevTools: function(forceOpen) {
+ var toolbox = getToolbox(this.win);
+ if (toolbox && forceOpen) {
+ return;
+ }
+
+ if (toolbox) {
+ destroyToolbox(this.win);
+ } else {
+ showToolbox(this.win);
+ }
+ },
+
+ onUpgradeFirebug: function(event, panelId)
+ {
+ Events.cancelEvent(event);
+
+ var self = this;
+ var panel = this.doc.querySelector(panelId);
+
+ // Listen for installation end
+ var listener =
+ {
+ onInstallEnded: function(install, addon)
+ {
+ install.removeListener(listener);
+ self.install = null;
+
+ // Bug 749745: on FF14+, onInstallEnded is called just before `startup()`
+ // is called, but we expect to resolve the promise only after it.
+ // As startup is called synchronously just after onInstallEnded,
+ // a simple setTimeout(0) is enough
+ self.win.setTimeout(function()
+ {
+ restartFirefox();
+ }, 0);
+ },
+ onInstallFailed: function (install)
+ {
+ install.removeListener(listener);
+ self.install = null;
+
+ Cu.reportError(install.error);
+ Cu.reportError(downloadError);
+
+ panel.upgradeButton.removeAttribute("collapsed");
+ panel.progress.setAttribute("collapsed", "true");
+ panel.cancelButton.setAttribute("collapsed", "true");
+
+ self.win.alert(downloadError);
+ },
+ onDownloadFailed: function(install)
+ {
+ this.onInstallFailed(install);
+ },
+ onDownloadStarted: function(install)
+ {
+ panel.progress.setAttribute("value", "0");
+ panel.upgradeButton.setAttribute("collapsed", "true");
+ panel.progress.removeAttribute("collapsed");
+ panel.cancelButton.removeAttribute("collapsed");
+ },
+ onDownloadProgress: function(install)
+ {
+ var value = install.progress / (install.maxProgress / 100);
+ panel.progress.value = value;
+ }
+ };
+
+ findFirebugUpdate(function(url)
+ {
+ if (!url)
+ {
+ Cu.reportError(downloadError);
+ self.win.alert(downloadError);
+ return;
+ }
+
+ AddonManager.getInstallForURL(url, (install) =>
+ {
+ install.addListener(listener);
+ install.install();
+ self.install = install;
+ }, "application/x-xpinstall");
+ });
+ },
+
+ onCancelUpgrade: function(event, panelId)
+ {
+ Events.cancelEvent(event);
+
+ if (!this.install)
+ return;
+
+ this.install.cancel();
+ this.install = null;
+
+ var panel = this.doc.querySelector(panelId);
+ panel.upgradeButton.removeAttribute("collapsed");
+ panel.progress.setAttribute("value", "0");
+ panel.progress.setAttribute("collapsed", "true");
+ panel.cancelButton.setAttribute("collapsed", "true");
+ },
+};
+
+// Helpers
+
+function findFirebugUpdate(callback)
+{
+ var xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
+ var url = "https://getfirebug.com/releases/firebug/3.0/update.rdf";
+ xhr.open("GET", url, true);
+
+ xhr.onload = function()
+ {
+ if (xhr.readyState !== 4)
+ return;
+
+ if (xhr.status !== 200)
+ {
+ callback(null);
+ return;
+ }
+
+ try
+ {
+ var parser = Xpcom.CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
+ var doc = parser.parseFromString(xhr.responseText, "text/xml");
+ var root = doc.documentElement;
+ var link = root.querySelector("updateLink");
+ callback(link.textContent);
+ }
+ catch (err)
+ {
+ FBTrace.sysout("EXCEPTION " + err, err);
+ callback(null);
+ }
+ };
+
+ xhr.onerror = function(e)
+ {
+ Cu.reportError(e.target.status);
+ };
+
+ xhr.send(null);
+}
+
+function restartFirefox()
+{
+ Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup).
+ quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
+}
+
+function getCurrentTab(win)
+{
+ let browserDoc = win.top.document;
+ let browser = browserDoc.getElementById("content");
+ return browser.selectedTab;
+}
+
+function showToolbox(win)
+{
+ let tab = getCurrentTab(win);
+ let target = DevTools.devtools.TargetFactory.forTab(tab);
+ return DevTools.gDevTools.showToolbox(target);
+}
+
+function destroyToolbox(win)
+{
+ let toolbox = getToolbox(win);
+ if (toolbox) {
+ return toolbox.destroy();
+ }
+}
+
+function getToolbox(win)
+{
+ let tab = getCurrentTab(win);
+ let target = DevTools.devtools.TargetFactory.forTab(tab);
+ return DevTools.gDevTools.getToolbox(target);
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return BrowserOverlay;
+
+// ********************************************************************************************* //
+});
diff --cc content/firebug/lib/channel.js
index 0000000,0000000..a616ca3
new file mode 100644
--- /dev/null
+++ b/content/firebug/lib/channel.js
@@@ -1,0 -1,0 +1,46 @@@
++/* See license.txt for terms of usage */
++
++define([
++],
++function() {
++
++"use strict";
++
++const Cc = Components.classes;
++const Ci = Components.interfaces;
++const Cu = Components.utils;
++
++var appInfo = Cc["@mozilla.org/xre/app-info;1"]
++ .getService(Ci.nsIXULAppInfo);
++var versionComparator = Cc["@mozilla.org/xpcom/version-comparator;1"]
++ .getService(Ci.nsIVersionComparator);
++var fx47OrEarlier = (versionComparator.compare(appInfo.version, "47a1") < 0);
++
++const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
++
++Cu.import("resource://gre/modules/NetUtil.jsm");
++
++// ********************************************************************************************* //
++// Module
++
++var Channel = {};
++
++Channel.new = function(url)
++{
++ if (fx47OrEarlier)
++ {
++ return ioService.newChannel(url, null, null);
++ }
++ else
++ {
++ return NetUtil.newChannel({
++ uri: url,
++ loadUsingSystemPrincipal: true
++ });
++ }
++}
++
++return Channel;
++
++// ********************************************************************************************* //
++});
diff --cc content/firebug/lib/http.js
index 424cfff,0000000..08ed1c0
mode 100644,000000..100644
--- a/content/firebug/lib/http.js
+++ b/content/firebug/lib/http.js
@@@ -1,543 -1,0 +1,537 @@@
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/lib/xpcom",
+ "firebug/lib/trace",
+ "firebug/lib/deprecated",
+ "firebug/debugger/stack/stackFrame",
- "firebug/lib/string"
++ "firebug/lib/string",
++ "firebug/lib/channel",
+],
- function(Xpcom, FBTrace, Deprecated, StackFrame, Str) {
++function(Xpcom, FBTrace, Deprecated, StackFrame, Str, Channel) {
+
+"use strict";
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cr = Components.results;
+const Cu = Components.utils;
+
+const NS_SEEK_SET = Ci.nsISeekableStream.NS_SEEK_SET;
- const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
- Cu.import("resource://gre/modules/NetUtil.jsm");
+
+var Http = {};
+
+// ********************************************************************************************* //
+// Module Implementation
+
+Http.readFromStream = function(stream, charset, noClose)
+{
+ // Causes a memory leak (see https://bugzilla.mozilla.org/show_bug.cgi?id=699801)
+ //var sis = Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream);
+ //sis.setInputStream(stream);
+
+ var sis = Cc["@mozilla.org/scriptableinputstream;1"].
+ createInstance(Ci.nsIScriptableInputStream);
+ sis.init(stream);
+
+ var segments = [];
+ for (var count = stream.available(); count; count = stream.available())
+ segments.push(sis.readBytes(count));
+
+ if (!noClose)
+ sis.close();
+
+ var text = segments.join("");
+
+ try
+ {
+ return Str.convertToUnicode(text, charset);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readFromStream EXCEPTION charset: " + charset, err);
+ }
+
+ return text;
+};
+
+Http.readPostTextFromPage = function(url, context)
+{
+ if (url == context.browser.contentWindow.location.href)
+ {
+ try
+ {
+ var webNav = context.browser.webNavigation;
+ var descriptor = (webNav instanceof Ci.nsIWebPageDescriptor) ?
+ webNav.currentDescriptor : null;
+
+ if (!(descriptor instanceof Ci.nsISHEntry))
+ return;
+
+ var entry = descriptor;
+ if (entry && entry.postData)
+ {
+ if (!(entry.postData instanceof Ci.nsISeekableStream))
+ return;
+
+ var postStream = entry.postData;
+ postStream.seek(NS_SEEK_SET, 0);
+
+ var charset = context.window.document.characterSet;
+ return Http.readFromStream(postStream, charset, true);
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readPostText FAILS, url:"+url, exc);
+ }
+ }
+};
+
+Http.getResource = function(aURL, ignoreMissing)
+{
+ try
+ {
- var channel = NetUtil.newChannel({
- uri: aURL,
- loadUsingSystemPrincipal: true
- });
-
++ var channel = Channel.new(aURL);
+ var input = channel.open();
+
+ return Http.readFromStream(input);
+ }
+ catch (e)
+ {
+ if (!ignoreMissing && FBTrace.DBG_ERRORS)
+ FBTrace.sysout("lib.getResource FAILS for \'"+aURL+"\'", e);
+ }
+};
+
+/**
+ * Returns a posted data for specified request object. The return value might contain
+ * headers (if request.uploadStreamHasHeaders is set to true). You can remove these
+ * headers using {@link Http.removeHeadersFromPostText}
+ *
+ * @param {Object} request The request object
+ * @param {Object} context Current Firebug context (to get charset of the current document)
+ */
+Http.readPostTextFromRequest = function(request, context)
+{
+ try
+ {
+ var is = (request instanceof Ci.nsIUploadChannel) ? request.uploadStream : null;
+ if (is)
+ {
+ if (!(is instanceof Ci.nsISeekableStream))
+ return;
+
+ var ss = is;
+ var prevOffset;
+ if (ss)
+ {
+ prevOffset = ss.tell();
+ ss.seek(NS_SEEK_SET, 0);
+ }
+
+ // Read data from the stream..
+ var charset = (context && context.window) ? context.window.document.characterSet : null;
+ var text = Http.readFromStream(is, charset, true);
+
+ // Seek locks the file, so seek to the beginning only if necko hasn't read it yet,
+ // since necko doesn't seek to 0 before reading (at least not till 459384 is fixed).
+ if (ss && prevOffset == 0)
+ ss.seek(NS_SEEK_SET, 0);
+
+ return text;
+ }
+ }
+ catch(exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("http.readPostTextFromRequest FAILS ", exc);
+ }
+
+ return null;
+};
+
+/**
+ * Remove headers from post body, https://bugzilla.mozilla.org/show_bug.cgi?id=649338
+ *
+ * @param {Object} request Channel implementing nsIUploadChannel2
+ * @param {Object} text Extracted text (can include headers at the beginning).
+ */
+Http.removeHeadersFromPostText = function(request, text)
+{
+ if (!text)
+ return text;
+
+ if (typeof(Ci.nsIUploadChannel2) == "undefined")
+ return text;
+
+ if (!(request instanceof Ci.nsIUploadChannel2))
+ return text;
+
+ if (!request.uploadStreamHasHeaders)
+ return text;
+
+ var headerSeparator = "\r\n\r\n";
+ var index = text.indexOf(headerSeparator);
+ if (index == -1)
+ return text;
+
+ return text.substring(index + headerSeparator.length);
+};
+
+/**
+ * Returns an array of headers from posted data (appended by Firefox)
+ *
+ * @param {Object} request Channel implementing nsIUploadChannel2
+ * @param {Object} text Posted data from the channel object.
+ */
+Http.getHeadersFromPostText = function(request, text)
+{
+ var headers = [];
+ if (!text)
+ return headers;
+
+ if (typeof(Ci.nsIUploadChannel2) == "undefined")
+ return headers;
+
+ if (!(request instanceof Ci.nsIUploadChannel2))
+ return headers;
+
+ if (!request.uploadStreamHasHeaders)
+ return headers;
+
+ var headerSeparator = "\r\n\r\n";
+ var index = text.indexOf(headerSeparator);
+ if (index == -1)
+ return headers;
+
+ var text = text.substring(0, index);
+ var lines = Str.splitLines(text);
+
+ for (var i=0; i<lines.length; i++)
+ {
+ var header = lines[i].split(":");
+ if (header.length != 2)
+ continue;
+
+ headers.push({
+ name: Str.trim(header[0]),
+ value: Str.trim(header[1]),
+ });
+ }
+
+ return headers;
+};
+
+Http.getInputStreamFromString = function(dataString)
+{
+ var stringStream = Cc["@mozilla.org/io/string-input-stream;1"].
+ createInstance(Ci.nsIStringInputStream);
+
+ if ("data" in stringStream) // Gecko 1.9 or newer
+ stringStream.data = dataString;
+ else // 1.8 or older
+ stringStream.setData(dataString, dataString.length);
+
+ return stringStream;
+};
+
+Http.getWindowForRequest = function(request)
+{
+ var loadContext = Http.getRequestLoadContext(request);
+ try
+ {
+ if (loadContext)
+ return loadContext.associatedWindow;
+ }
+ catch (ex)
+ {
+ }
+
+ return null;
+};
+
+Http.getRequestLoadContext = function(request)
+{
+ try
+ {
+ if (request && request.notificationCallbacks)
+ {
+ StackFrame.suspendShowStackTrace();
+ return request.notificationCallbacks.getInterface(Ci.nsILoadContext);
+ }
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ try
+ {
+ if (request && request.loadGroup && request.loadGroup.notificationCallbacks)
+ {
+ StackFrame.suspendShowStackTrace();
+ return request.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
+ }
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ return null;
+};
+
+Http.getRequestWebProgress = Deprecated.method("Use getRequestLoadContext function",
+ Http.getRequestLoadContext);
+
+// ********************************************************************************************* //
+// HTTP Channel Fields
+
+Http.safeGetRequestName = function(request)
+{
+ try
+ {
+ return request.name;
+ }
+ catch (exc)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetURI = function(browser)
+{
+ try
+ {
+ return browser.currentURI;
+ }
+ catch (exc)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetContentType = function(request)
+{
+ try
+ {
+ return new String(request.contentType).toLowerCase();
+ }
+ catch (err)
+ {
+ }
+
+ return null;
+};
+
+Http.safeGetXHRResponseText = function(xhr)
+{
+ try
+ {
+ return xhr.responseText;
+ }
+ catch (err)
+ {
+ }
+
+ return null;
+};
+
+// ********************************************************************************************* //
+// IP Address and port number (Requires Gecko 5).
+
+Http.safeGetLocalAddress = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.localAddress;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetLocalPort = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.localPort;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetRemoteAddress = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.remoteAddress;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+Http.safeGetRemotePort = function(request)
+{
+ try
+ {
+ if (request instanceof Ci.nsIHttpChannelInternal)
+ return request.remotePort;
+ }
+ catch (err)
+ {
+ }
+ return null;
+};
+
+// ********************************************************************************************* //
+// XHR
+
+Http.isXHR = function(request)
+{
+ try
+ {
+ var callbacks = request.notificationCallbacks;
+ StackFrame.suspendShowStackTrace();
+ var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
+ return (xhrRequest != null);
+ }
+ catch (exc)
+ {
+ }
+ finally
+ {
+ StackFrame.resumeShowStackTrace();
+ }
+
+ return false;
+};
+
+// ********************************************************************************************* //
+// Conversions
+
+Http.convertToUnicode = Deprecated.method("Function moved to 'firebug/lib/string' module",
+ Str.convertToUnicode);
+
+Http.convertFromUnicode = Deprecated.method("Function moved to 'firebug/lib/string' module",
+ Str.convertFromUnicode);
+
+// ********************************************************************************************* //
+// Network Tracing
+
+Http.getStateDescription = function(flag)
+{
+ var state = [];
+ var nsIWebProgressListener = Ci.nsIWebProgressListener;
+ if (flag & nsIWebProgressListener.STATE_START) state.push("STATE_START");
+ else if (flag & nsIWebProgressListener.STATE_REDIRECTING) state.push("STATE_REDIRECTING");
+ else if (flag & nsIWebProgressListener.STATE_TRANSFERRING) state.push("STATE_TRANSFERRING");
+ else if (flag & nsIWebProgressListener.STATE_NEGOTIATING) state.push("STATE_NEGOTIATING");
+ else if (flag & nsIWebProgressListener.STATE_STOP) state.push("STATE_STOP");
+
+ if (flag & nsIWebProgressListener.STATE_IS_REQUEST) state.push("STATE_IS_REQUEST");
+ if (flag & nsIWebProgressListener.STATE_IS_DOCUMENT) state.push("STATE_IS_DOCUMENT");
+ if (flag & nsIWebProgressListener.STATE_IS_NETWORK) state.push("STATE_IS_NETWORK");
+ if (flag & nsIWebProgressListener.STATE_IS_WINDOW) state.push("STATE_IS_WINDOW");
+ if (flag & nsIWebProgressListener.STATE_RESTORING) state.push("STATE_RESTORING");
+ if (flag & nsIWebProgressListener.STATE_IS_INSECURE) state.push("STATE_IS_INSECURE");
+ if (flag & nsIWebProgressListener.STATE_IS_BROKEN) state.push("STATE_IS_BROKEN");
+ if (flag & nsIWebProgressListener.STATE_IS_SECURE) state.push("STATE_IS_SECURE");
+ if (flag & nsIWebProgressListener.STATE_SECURE_HIGH) state.push("STATE_SECURE_HIGH");
+ if (flag & nsIWebProgressListener.STATE_SECURE_MED) state.push("STATE_SECURE_MED");
+ if (flag & nsIWebProgressListener.STATE_SECURE_LOW) state.push("STATE_SECURE_LOW");
+
+ return state.join(", ");
+};
+
+Http.getStatusDescription = function(status)
+{
+ var nsISocketTransport = Ci.nsISocketTransport;
+ var nsITransport = Ci.nsITransport;
+
+ if (status == nsISocketTransport.STATUS_RESOLVING) return "STATUS_RESOLVING";
+ if (status == nsISocketTransport.STATUS_CONNECTING_TO) return "STATUS_CONNECTING_TO";
+ if (status == nsISocketTransport.STATUS_CONNECTED_TO) return "STATUS_CONNECTED_TO";
+ if (status == nsISocketTransport.STATUS_SENDING_TO) return "STATUS_SENDING_TO";
+ if (status == nsISocketTransport.STATUS_WAITING_FOR) return "STATUS_WAITING_FOR";
+ if (status == nsISocketTransport.STATUS_RECEIVING_FROM) return "STATUS_RECEIVING_FROM";
+ if (status == nsITransport.STATUS_READING) return "STATUS_READING";
+ if (status == nsITransport.STATUS_WRITING) return "STATUS_WRITING";
+};
+
+Http.getLoadFlagsDescription = function(loadFlags)
+{
+ var flags = [];
+ var nsIChannel = Ci.nsIChannel;
+ var nsICachingChannel = Ci.nsICachingChannel;
+
+ if (loadFlags & nsIChannel.LOAD_DOCUMENT_URI) flags.push("LOAD_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_RETARGETED_DOCUMENT_URI) flags.push("LOAD_RETARGETED_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_REPLACE) flags.push("LOAD_REPLACE");
+ if (loadFlags & nsIChannel.LOAD_INITIAL_DOCUMENT_URI) flags.push("LOAD_INITIAL_DOCUMENT_URI");
+ if (loadFlags & nsIChannel.LOAD_TARGETED) flags.push("LOAD_TARGETED");
+ if (loadFlags & nsIChannel.LOAD_CALL_CONTENT_SNIFFERS) flags.push("LOAD_CALL_CONTENT_SNIFFERS");
+ if (loadFlags & nsICachingChannel.LOAD_NO_NETWORK_IO) flags.push("LOAD_NO_NETWORK_IO");
+ if (loadFlags & nsICachingChannel.LOAD_CHECK_OFFLINE_CACHE) flags.push("LOAD_CHECK_OFFLINE_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE) flags.push("LOAD_BYPASS_LOCAL_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY) flags.push("LOAD_BYPASS_LOCAL_CACHE_IF_BUSY");
+ if (loadFlags & nsICachingChannel.LOAD_ONLY_FROM_CACHE) flags.push("LOAD_ONLY_FROM_CACHE");
+ if (loadFlags & nsICachingChannel.LOAD_ONLY_IF_MODIFIED) flags.push("LOAD_ONLY_IF_MODIFIED");
+
+ return flags.join(", ");
+};
+
+// ********************************************************************************************* //
+
+Http.BaseProgressListener =
+{
+ QueryInterface : function(iid)
+ {
+ if (iid.equals(Ci.nsIWebProgressListener) ||
+ iid.equals(Ci.nsISupportsWeakReference) ||
+ iid.equals(Ci.nsISupports))
+ {
+ return this;
+ }
+
+ throw Components.results.NS_NOINTERFACE;
+ },
+
+ stateIsRequest: false,
+ onLocationChange: function() {},
+ onStateChange : function() {},
+ onProgressChange : function() {},
+ onStatusChange : function() {},
+ onSecurityChange : function() {},
+ onLinkIconAvailable : function() {}
+};
+
+// ********************************************************************************************* //
+// Registration
+
+return Http;
+
+// ********************************************************************************************* //
+});
diff --cc content/firebug/net/sourceCache.js
index af86da2,0000000..b953546
mode 100644,000000..100644
--- a/content/firebug/net/sourceCache.js
+++ b/content/firebug/net/sourceCache.js
@@@ -1,438 -1,0 +1,430 @@@
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/chrome/eventSource",
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/xpcom",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/lib/options",
- "firebug/lib/string"
++ "firebug/lib/string",
++ "firebug/lib/channel"
+],
- function(EventSource, Obj, Firebug, Xpcom, Url, Http, Options, Str) {
++function(EventSource, Obj, Firebug, Xpcom, Url, Http, Options, Str, Channel) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
- const nsIIOService = Ci.nsIIOService;
+const nsIRequest = Ci.nsIRequest;
+const nsICachingChannel = Ci.nsICachingChannel;
+const nsIScriptableInputStream = Ci.nsIScriptableInputStream;
+const nsIUploadChannel = Ci.nsIUploadChannel;
+const nsIHttpChannel = Ci.nsIHttpChannel;
+
- const IOService = Cc["@mozilla.org/network/io-service;1"];
- const ioService = IOService.getService(nsIIOService);
+const ScriptableInputStream = Cc["@mozilla.org/scriptableinputstream;1"];
+const chromeReg = Xpcom.CCSV("@mozilla.org/chrome/chrome-registry;1", "nsIToolkitChromeRegistry");
+
+const LOAD_FROM_CACHE = nsIRequest.LOAD_FROM_CACHE;
+const LOAD_BYPASS_LOCAL_CACHE_IF_BUSY = nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+const NS_BINDING_ABORTED = 0x804b0002;
+
- Cu.import("resource://gre/modules/NetUtil.jsm");
-
+// ********************************************************************************************* //
+
+Firebug.SourceCache = function(context)
+{
+ this.context = context;
+ this.cache = {};
+};
+
+Firebug.SourceCache.prototype = Obj.extend(new EventSource(),
+{
+ isCached: function(url)
+ {
+ return (this.cache[url] ? true : false);
+ },
+
+ loadText: function(url, method, file, options)
+ {
+ var lines = this.load(url, method, file, options);
+ return lines ? lines.join("") : null;
+ },
+
+ load: function(url, method, file, options)
+ {
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache.load: " + url);
+
+ if (!this.cache.hasOwnProperty(url) && this.cache[url])
+ FBTrace.sysout("sourceCache.load; ERROR - hasOwnProperty returns false, " +
+ "but the URL is cached: " + url, this.cache[url]);
+ }
+
+ // xxxHonza: sometimes hasOwnProperty return false even if the URL is obviously there.
+ //if (this.cache.hasOwnProperty(url))
+ var response = this.cache[this.removeAnchor(url)];
+ if (response)
+ return response;
+
+ if (FBTrace.DBG_CACHE)
+ {
+ var urls = [];
+ for (var prop in this.cache)
+ urls.push(prop);
+
+ FBTrace.sysout("sourceCache.load: Not in the Firebug internal cache", urls);
+ }
+
+ var d = Url.splitDataURL(url); //TODO the RE should not have baseLine
+ if (d)
+ {
+ var src = d.encodedContent;
+ var data = decodeURIComponent(src);
+ var lines = Str.splitLines(data);
+ this.cache[url] = lines;
+
+ return lines;
+ }
+
+ var j = Url.reJavascript.exec(url);
+ if (j)
+ {
+ var src = url.substring(Url.reJavascript.lastIndex);
+ var lines = Str.splitLines(src);
+ this.cache[url] = lines;
+
+ return lines;
+ }
+
+ var c = Url.reChrome.test(url);
+ if (c)
+ {
+ if (Options.get("filterSystemURLs"))
+ return ["Filtered chrome url "+url]; // ignore chrome
+
+ // If the chrome.manifest has xpcnativewrappers=no, platform munges the url
+ var reWrapperMunge = /(\S*)\s*->\s*(\S*)/;
+ var m = reWrapperMunge.exec(url);
+ if (m)
+ {
+ url = m[2];
+
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache found munged xpcnativewrapper url " +
+ "and set it to " + url + " m " + m + " m[0]:" + m[0] + " [1]" +
+ m[1], m);
+ }
+ }
+
+ var chromeURI = Url.makeURI(url);
+ if (!chromeURI)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load failed to convert chrome to local: " + url);
+
+ return ["sourceCache failed to make URI from " + url];
+ }
+
+ var localURI = chromeReg.convertChromeURL(chromeURI);
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load converting chrome to local: " + url,
+ " -> "+localURI.spec);
+
+ return this.loadFromLocal(localURI.spec);
+ }
+
+ c = Url.reFile.test(url);
+ if (c)
+ {
+ return this.loadFromLocal(url);
+ }
+
+ if (Str.hasPrefix(url, 'resource://'))
+ {
+ var fileURL = Url.resourceToFile(url);
+ return this.loadFromLocal(url);
+ }
+
+ // Unfortunately, the URL isn't available, so let's try to use FF cache.
+ // Note that an additional network request to the server could be made
+ // in this method (a double-load).
+ return this.loadFromCache(url, method, file, options);
+ },
+
+ store: function(url, text)
+ {
+ var tempURL = this.removeAnchor(url);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache for " + this.context.getName() + " store url=" +
+ url + ((tempURL != url) ? " -> " + tempURL : ""), text);
+
+ var lines = Str.splitLines(text);
+ return this.storeSplitLines(tempURL, lines);
+ },
+
+ removeAnchor: function(url)
+ {
+ if (FBTrace.DBG_ERRORS && !url)
+ FBTrace.sysout("sourceCache.removeAnchor; ERROR url must not be null");
+
+ var index = url ? url.indexOf("#") : -1;
+ if (index < 0)
+ return url;
+
+ return url.substr(0, index);
+ },
+
+ loadFromLocal: function(url)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromLocal url: " + url);
+
+ // if we get this far then we have either a file: or chrome: url converted to file:
+ var src = Http.getResource(url);
+ if (src)
+ {
+ var lines = Str.splitLines(src);
+
+ // Don't cache locale files to get latest version (issue 1328)
+ // Local files can be currently fetched any time.
+ //this.cache[url] = lines;
+
+ return lines;
+ }
+ },
+
+ loadFromCache: function(url, method, file)
+ {
+ if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.loadFromCache url:"+url);
+
+ var doc = this.context.window.document;
+ if (doc)
+ var charset = doc.characterSet;
+ else
+ var charset = "UTF-8";
+
+ var channel;
+ try
+ {
- channel = NetUtil.newChannel({
- uri: url,
- loadUsingSystemPrincipal: true
- });
-
++ channel = Channel.new(url);
+ channel.loadFlags |= LOAD_FROM_CACHE | LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+ if (method && (channel instanceof nsIHttpChannel))
+ {
+ var httpChannel = Xpcom.QI(channel, nsIHttpChannel);
+ httpChannel.requestMethod = method;
+ }
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache for url:" + url + " window=" +
+ this.context.window.location.href + " FAILS:", exc);
+ return;
+ }
+
+ if (url == this.context.browser.contentWindow.location.href)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load content window href");
+
+ if (channel instanceof nsIUploadChannel)
+ {
+ var postData = this.getPostStream();
+ if (postData)
+ {
+ var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
+ uploadChannel.setUploadStream(postData, "", -1);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load uploadChannel set");
+ }
+ }
+
+ if (channel instanceof nsICachingChannel)
+ {
+ var cacheChannel = Xpcom.QI(channel, nsICachingChannel);
+ cacheChannel.cacheKey = this.getCacheKey();
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load cacheChannel key" + cacheChannel.cacheKey);
+ }
+ }
+ else if ((method == "POST" || method == "PUT" || method == "PATCH") && file)
+ {
+ if (channel instanceof nsIUploadChannel)
+ {
+ // In case of PUT and POST, don't forget to use the original body.
+ var postData = getPostText(file, this.context);
+ if (postData)
+ {
+ var postDataStream = Http.getInputStreamFromString(postData);
+ var uploadChannel = Xpcom.QI(channel, nsIUploadChannel);
+ uploadChannel.setUploadStream(postDataStream,
+ "application/x-www-form-urlencoded", -1);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load uploadChannel set");
+ }
+ }
+ }
+
+ var stream;
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.load url:" + url + " with charset" + charset);
+
+ stream = channel.open();
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ var isCache = (channel instanceof nsICachingChannel) ?
+ "nsICachingChannel" : "NOT caching channel";
+ var isUp = (channel instanceof nsIUploadChannel) ?
+ "nsIUploadChannel" : "NOT nsIUploadChannel";
+
+ FBTrace.sysout(url + " vs " + this.context.browser.contentWindow.location.href +
+ " and " + isCache + " " + isUp);
+ FBTrace.sysout("sourceCache.load fails channel.open for url=" + url +
+ " cause:", exc);
+ FBTrace.sysout("sourceCache.load fails channel=", channel);
+ }
+
+ return ["sourceCache.load FAILS for url=" + url, exc.toString()];
+ }
+
+ try
+ {
+ var data = Http.readFromStream(stream, charset);
+ var lines = Str.splitLines(data);
+ this.cache[url] = lines;
+ return lines;
+ }
+ catch (exc)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceCache.load FAILS, url="+url, exc);
+ return ["sourceCache.load FAILS for url="+url, exc.toString()];
+ }
+ finally
+ {
+ stream.close();
+ }
+ },
+
+ storeSplitLines: function(url, lines)
+ {
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("sourceCache for window=" + this.context.getName() +
+ " store url=" + url);
+ }
+
+ return this.cache[url] = lines;
+ },
+
+ invalidate: function(url)
+ {
+ url = this.removeAnchor(url);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("sourceCache.invalidate; " + url);
+
+ delete this.cache[url];
+ },
+
+ getLine: function(url, lineNo)
+ {
+ var lines;
+
+ try
+ {
+ lines = this.load(url);
+ }
+ catch (e)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("sourceCache.getLine; EXCEPTION " + e, e);
+ }
+
+ if (!lines)
+ return "(no source for " + url + ")";
+
+ if (lineNo <= lines.length)
+ {
+ return lines[lineNo-1];
+ }
+ else
+ {
+ return (lines.length == 1) ?
+ lines[0] : "(" + lineNo + " out of range " + lines.length + ")";
+ }
+ },
+
+ getCacheKey: function()
+ {
+ try
+ {
+ var webNav = this.context.browser.webNavigation;
+ var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
+ var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
+ return entry.cacheKey;
+ }
+ catch (exc)
+ {
+ }
+ },
+
+ getPostStream: function()
+ {
+ try
+ {
+ var webNav = this.context.browser.webNavigation;
+ var descriptor = Xpcom.QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
+ var entry = Xpcom.QI(descriptor, Ci.nsISHEntry);
+
+ if (entry.postData)
+ {
+ // Seek to the beginning, or it will probably start reading at the end
+ var postStream = Xpcom.QI(entry.postData, Ci.nsISeekableStream);
+ postStream.seek(0, 0);
+ return postStream;
+ }
+ }
+ catch (exc)
+ {
+ }
+ },
+});
+
+// xxxHonza getPostText and Http.readPostTextFromRequest are copied from
+// net.js. These functions should be removed when this cache is
+// refactored due to the double-load problem.
+function getPostText(file, context)
+{
+ if (!file.postText)
+ file.postText = Http.readPostTextFromPage(file.href, context);
+
+ if (!file.postText)
+ file.postText = Http.readPostTextFromRequest(file.request, context);
+
+ return file.postText;
+}
+
+// ********************************************************************************************* //
+// Registration
+
+return Firebug.SourceCache;
+
+// ********************************************************************************************* //
+});
diff --cc content/firebug/net/tabCache.js
index fadbc58,0000000..d6f7cb2
mode 100644,000000..100644
--- a/content/firebug/net/tabCache.js
+++ b/content/firebug/net/tabCache.js
@@@ -1,684 -1,0 +1,679 @@@
+/* See license.txt for terms of usage */
+
+define([
+ "firebug/chrome/activableModule",
+ "firebug/lib/object",
+ "firebug/firebug",
+ "firebug/lib/xpcom",
+ "firebug/net/requestObserver",
+ "firebug/net/responseObserver",
+ "firebug/lib/locale",
+ "firebug/lib/events",
+ "firebug/lib/url",
+ "firebug/lib/http",
+ "firebug/lib/string",
+ "firebug/chrome/window",
+ "firebug/net/jsonViewer",
+ "firebug/trace/traceModule",
+ "firebug/trace/traceListener",
+ "firebug/net/sourceCache",
+ "firebug/lib/options",
++ "firebug/lib/channel",
+],
+function(ActivableModule, Obj, Firebug, Xpcom, HttpRequestObserver, HttpResponseObserver, Locale,
- Events, Url, Http, Str, Win, JSONViewerModel, TraceModule, TraceListener, SourceCache, Options) {
++ Events, Url, Http, Str, Win, JSONViewerModel, TraceModule, TraceListener, SourceCache,
++ Options, Channel) {
+
+// ********************************************************************************************* //
+// Constants
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
- const ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
-
- Cu.import("resource://gre/modules/NetUtil.jsm");
-
+// List of text content types. These content-types are cached.
+var contentTypes =
+{
+ "text/plain": 1,
+ "text/html": 1,
+ "text/xml": 1,
+ "text/xsl": 1,
+ "text/xul": 1,
+ "text/css": 1,
+ "text/sgml": 1,
+ "text/rtf": 1,
+ "text/x-setext": 1,
+ "text/richtext": 1,
+ "text/javascript": 1,
+ "text/jscript": 1,
+ "text/tab-separated-values": 1,
+ "text/rdf": 1,
+ "text/xif": 1,
+ "text/ecmascript": 1,
+ "text/vnd.curl": 1,
+ "text/x-json": 1,
+ "text/x-js": 1,
+ "text/js": 1,
+ "text/vbscript": 1,
+ "view-source": 1,
+ "view-fragment": 1,
+ "application/xml": 1,
+ "application/xhtml+xml": 1,
+ "application/atom+xml": 1,
+ "application/rss+xml": 1,
+ "application/mathml+xml": 1,
+ "application/rdf+xml": 1,
+ "application/vnd.mozilla.maybe.feed": 1,
+ "application/vnd.mozilla.xul+xml": 1,
+ "application/javascript": 1,
+ "application/x-javascript": 1,
+ "application/x-httpd-php": 1,
+ "application/rdf+xml": 1,
+ "application/ecmascript": 1,
+ "application/http-index-format": 1,
+ "application/json": 1,
+ "application/x-js": 1,
+ "multipart/mixed" : 1,
+ "multipart/x-mixed-replace" : 1,
+ "image/svg+xml" : 1
+};
+
+// ********************************************************************************************* //
+// Model implementation
+
+/**
+ * Implementation of cache model. The only purpose of this object is to register an HTTP
+ * observer, so that HTTP communication can be intercepted and all incoming data stored
+ * within a cache.
+ */
+Firebug.TabCacheModel = Obj.extend(ActivableModule,
+{
+ dispatchName: "tabCache",
+ contentTypes: contentTypes,
+ fbListeners: [],
+
+ initialize: function()
+ {
+ ActivableModule.initialize.apply(this, arguments);
+
+ this.traceListener = new TraceListener("tabCache.", "DBG_CACHE", false);
+ TraceModule.addListener(this.traceListener);
+ },
+
+ initializeUI: function(owner)
+ {
+ ActivableModule.initializeUI.apply(this, arguments);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.initializeUI;");
+
+ // Read additional text MIME types from preferences.
+ var mimeTypes = Options.get("cache.mimeTypes");
+ if (mimeTypes)
+ {
+ var list = mimeTypes.split(" ");
+ for (var i=0; i<list.length; i++)
+ contentTypes[list[i]] = 1;
+ }
+
+ // Merge with JSON types
+ var jsonTypes = JSONViewerModel.contentTypes;
+ for (var p in jsonTypes)
+ contentTypes[p] = 1;
+ },
+
+ onObserverChange: function(observer)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onObserverChange; hasObservers: " + this.hasObservers());
+
+ // If Firebug is in action, we need to test to see if we need to addObserver
+ if (!Firebug.getSuspended())
+ this.onResumeFirebug();
+ },
+
+ onResumeFirebug: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onResumeFirebug; hasObsevers: " + this.hasObservers());
+
+ if (this.hasObservers() && !this.observing)
+ {
+ HttpRequestObserver.addObserver(this, "firebug-http-event", false);
+ this.observing = true;
+ }
+ },
+
+ onSuspendFirebug: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.onSuspendFirebug; hasObsevers: " + this.hasObservers());
+
+ if (this.observing)
+ {
+ HttpRequestObserver.removeObserver(this, "firebug-http-event");
+ this.observing = false;
+ }
+ },
+
+ shutdown: function()
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.shutdown; Cache model destroyed.");
+
+ TraceModule.removeListener(this.traceListener);
+
+ if (this.observing)
+ HttpRequestObserver.removeObserver(this, "firebug-http-event");
+ },
+
+ initContext: function(context)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.initContext for: " + context.getName());
+ },
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ // nsIObserver
+
+ observe: function(subject, topic, data)
+ {
+ try
+ {
+ if (!(subject instanceof Ci.nsIHttpChannel))
+ return;
+
+ // XXXjjb this same code is in net.js, better to have it only once
+ var win = Http.getWindowForRequest(subject);
+ if (!win)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.observe; " + topic + ", NO WINDOW");
+ return;
+ }
+
+ if (topic == "http-on-modify-request")
+ this.onModifyRequest(subject, win);
+ else if (topic == "http-on-examine-response")
+ this.onExamineResponse(subject, win);
+ else if (topic == "http-on-examine-cached-response")
+ this.onCachedResponse(subject, win);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabCache.observe EXCEPTION", err);
+ }
+ },
+
+ onModifyRequest: function(request, win)
+ {
+ },
+
+ onExamineResponse: function(request, win)
+ {
+ this.registerStreamListener(request, win);
+ },
+
+ onCachedResponse: function(request, win)
+ {
+ this.registerStreamListener(request, win);
+ },
+
+ registerStreamListener: function(request, win, forceRegister)
+ {
+ if (Firebug.getSuspended() && !forceRegister)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.registerStreamListener; DO NOT TRACK, " +
+ "Firebug suspended for: " + Http.safeGetRequestName(request));
+ return;
+ }
+
+ if (!this.hasObservers())
+ return;
+
+ try
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.registerStreamListener; " +
+ Http.safeGetRequestName(request));
+
+ HttpResponseObserver.register(win, request, new ChannelListenerProxy(win));
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS)
+ FBTrace.sysout("tabCache.Register Traceable Listener EXCEPTION", err);
+ }
+ },
+
+ shouldCacheRequest: function(request)
+ {
+ if (!(request instanceof Ci.nsIHttpChannel))
+ return;
+
+ // Allow to customize caching rules.
+ if (Events.dispatch2(this.fbListeners, "shouldCacheRequest", [request]))
+ return true;
+
+ // Cache only text responses for now.
+ var contentType = request.contentType;
+ if (contentType)
+ contentType = contentType.split(";")[0];
+
+ contentType = Str.trim(contentType);
+ if (contentTypes[contentType])
+ return true;
+
+ // Hack to work around application/octet-stream for js files (see issue 2063).
+ // Let's cache all files with js extensions.
+ var extension = Url.getFileExtension(Http.safeGetRequestName(request));
+ if (extension == "js")
+ return true;
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.shouldCacheRequest; Request not cached: " +
+ request.contentType + ", " + Http.safeGetRequestName(request));
+
+ return false;
+ },
+});
+
+// ********************************************************************************************* //
+// Tab Cache
+
+/**
+ * This cache object is intended to cache all responses made by a specific tab.
+ * The implementation is based on nsITraceableChannel interface introduced in
+ * Firefox 3.0.4. This interface allows to intercept all incoming HTTP data.
+ *
+ * This object replaces the SourceCache, which still exist only for backward
+ * compatibility.
+ *
+ * The object is derived from SourceCache, so the same interface and most of the
+ * implementation is used.
+ */
+Firebug.TabCache = function(context)
+{
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.TabCache Created for: " + context.getName());
+
+ SourceCache.call(this, context);
+
+ // Set of HTTP responses (URLs) that has been limited in the cache.
+ // Used by the UI to notify the user.
+ this.limitedResponses = {};
+};
+
+Firebug.TabCache.prototype = Obj.extend(SourceCache.prototype,
+{
+ // Responses in progress
+ responses: [],
+
+ storePartialResponse: function(request, responseText, win, offset)
+ {
+ if (!offset)
+ offset = 0;
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storePartialResponse " + Http.safeGetRequestName(request),
+ request.contentCharset);
+
+ var url = Http.safeGetRequestName(request);
+ var response = this.getResponse(request);
+
+ // Skip any response data that we have received before (f ex when
+ // response packets are repeated due to quirks in how authentication
+ // requests are projected to the channel listener)
+ var newRawSize = offset + responseText.length;
+ var addRawBytes = newRawSize - response.rawSize;
+
+ if (responseText.length > addRawBytes)
+ responseText = responseText.substr(responseText.length - addRawBytes);
+
+ try
+ {
+ responseText = Str.convertToUnicode(responseText, win.document.characterSet);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storePartialResponse EXCEPTION " +
+ Http.safeGetRequestName(request), err);
+
+ // Even responses that are not converted are stored into the cache.
+ // return false;
+ }
+
+ // Size of each response is limited.
+ var limitNotReached = true;
+ var responseSizeLimit = Options.get("cache.responseLimit");
+ if (response.size + responseText.length >= responseSizeLimit)
+ {
+ limitNotReached = false;
+ responseText = responseText.substr(0, responseSizeLimit - response.size);
+
+ this.limitedResponses[url] = true;
+
+ if (FBTrace.DBG_CACHE)
+ {
+ FBTrace.sysout("tabCache.storePartialResponse; Maximum response limit " +
+ "reached for: " + url);
+ }
+ }
+
+ response.size += responseText.length;
+ response.rawSize = newRawSize;
+
+ // Store partial content into the cache.
+ this.store(url, responseText);
+
+ // Return false if furhter parts of this response should be ignored.
+ return limitNotReached;
+ },
+
+ isLimited: function(url)
+ {
+ return this.limitedResponses[url];
+ },
+
+ getResponse: function(request)
+ {
+ var url = Http.safeGetRequestName(request);
+ var response = this.responses[url];
+ if (!response)
+ {
+ this.invalidate(url);
+ this.responses[url] = response = {
+ request: request,
+ size: 0,
+ rawSize: 0
+ };
+ }
+
+ return response;
+ },
+
+ storeSplitLines: function(url, lines)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.storeSplitLines: " + url, lines);
+
+ var currLines = this.cache[url];
+ if (!currLines)
+ currLines = this.cache[url] = [];
+
+ // Join the last line with the new first one to make the source code
+ // lines properly formatted...
+ if (currLines.length && lines.length)
+ {
+ // ... but only if the last line isn't already completed.
+ var lastLine = currLines[currLines.length-1];
+ if (lastLine && lastLine.search(/\r|\n/) == -1)
+ currLines[currLines.length-1] += lines.shift();
+ }
+
+ // Append new lines (if any) into the array for specified url.
+ if (lines.length)
+ this.cache[url] = currLines.concat(lines);
+
+ return this.cache[url];
+ },
+
+ loadFromCache: function(url, method, file, options)
+ {
+ // The ancestor implementation (SourceCache) uses ioService.newChannel, which
+ // can result in additional request to the server (in case the response can't
+ // be loaded from the Firefox cache) - known as the double-load problem.
+ // This new implementation (TabCache) uses nsITraceableChannel, so all responses
+ // should be already cached.
+
+ // xxxHonza: TODO entire implementation of this method should be removed in Firebug 1.5
+ // xxxHonza: let's try to get the response from the cache till #449198 is fixed.
+ var stream;
+ var responseText;
+ try
+ {
+ if (!url)
+ return responseText;
+
+ if (url === "<unknown>")
+ return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
+
- var channel = NetUtil.newChannel({
- uri: url,
- loadUsingSystemPrincipal: true
- });
++ var channel = Channel.new(url);
+
+ // These flag combination doesn't repost the request.
+ channel.loadFlags = Ci.nsIRequest.LOAD_FROM_CACHE |
+ Ci.nsICachingChannel.LOAD_ONLY_FROM_CACHE |
+ Ci.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
+
+ var charset = "UTF-8";
+
+ if (!this.context.window)
+ {
+ if (FBTrace.DBG_ERRORS)
+ {
+ FBTrace.sysout("tabCache.loadFromCache; ERROR this.context.window " +
+ "is undefined");
+ }
+ }
+
+ var doc = this.context.window ? this.context.window.document : null;
+ if (doc)
+ charset = doc.characterSet;
+
+ // xxxSimon We could probably instead check
+ // (url == this.context.browser.contentWindow.location.href)
+ // here, just like sourceCache, but I'd rather avoid changing behavior
+ // of crufty-but-working legacy code.
+ if (options && options.addPostData)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.load with post data");
+
+ if (channel instanceof Ci.nsIUploadChannel)
+ {
+ var postData = this.getPostStream();
+ if (postData)
+ {
+ var uploadChannel = Xpcom.QI(channel, Ci.nsIUploadChannel);
+ uploadChannel.setUploadStream(postData, "", -1);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.load uploadChannel set");
+ }
+ }
+
+ if (channel instanceof Ci.nsICachingChannel)
+ {
+ var cacheChannel = Xpcom.QI(channel, Ci.nsICachingChannel);
+ cacheChannel.cacheKey = this.getCacheKey();
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.load cacheChannel key" + cacheChannel.cacheKey);
+ }
+ }
+
+ stream = channel.open();
+
+ // The response doesn't have to be in the browser cache.
+ if (!stream.available())
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache; Failed to load source for: " + url);
+
+ stream.close();
+ return [Locale.$STR("message.sourceNotAvailableFor") + ": " + url];
+ }
+
+ // Don't load responses that shouldn't be cached.
+ if (!Firebug.TabCacheModel.shouldCacheRequest(channel))
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache; The resource from this URL is not text: " + url);
+
+ stream.close();
+ return [Locale.$STR("message.The resource from this URL is not text") + ": " + url];
+ }
+
+ responseText = Http.readFromStream(stream, charset);
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache (response coming from FF Cache) " +
+ url, responseText);
+
+ responseText = this.store(url, responseText);
+ }
+ catch (err)
+ {
+ if (FBTrace.DBG_ERRORS || FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.loadFromCache EXCEPTION on url \'" + url +"\'", err);
+ }
+ finally
+ {
+ if (stream)
+ stream.close();
+ }
+
+ return responseText;
+ },
+
+ // nsIStreamListener - callbacks from channel stream listener component.
+ onStartRequest: function(request, requestContext)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.startRequest: " + Http.safeGetRequestName(request));
+
+ // Make sure the response-entry (used to count total response size) is properly
+ // initialized (cleared) now. If no data is received, the response entry remains empty.
+ var response = this.getResponse(request);
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStartRequest", [this.context, request]);
+ Events.dispatch(this.fbListeners, "onStartRequest", [this.context, request]);
+ },
+
+ onDataAvailable: function(request, requestContext, inputStream, offset, count)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.onDataAvailable: " + Http.safeGetRequestName(request));
+
+ // If the stream is read a new one must be provided (the stream doesn't implement
+ // nsISeekableStream).
+ var stream = {
+ value: inputStream
+ };
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onDataAvailable",
+ [this.context, request, requestContext, stream, offset, count]);
+ Events.dispatch(this.fbListeners, "onDataAvailable", [this.context,
+ request, requestContext, stream, offset, count]);
+
+ return stream.value;
+ },
+
+ onStopRequest: function(request, requestContext, statusCode)
+ {
+ // The response has been received; remove the request from the list of
+ // current responses.
+ var url = Http.safeGetRequestName(request);
+ delete this.responses[url];
+
+ var lines = this.cache[this.removeAnchor(url)];
+ var responseText = lines ? lines.join("") : "";
+
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.stopRequest: " + Http.safeGetRequestName(request),
+ responseText);
+
+ Events.dispatch(Firebug.TabCacheModel.fbListeners, "onStopRequest",
+ [this.context, request, responseText]);
+ Events.dispatch(this.fbListeners, "onStopRequest", [this.context, request, responseText]);
+ }
+});
+
+// ********************************************************************************************* //
+// Proxy Listener
+
+function ChannelListenerProxy(win)
+{
+ this.window = win;
+}
+
+ChannelListenerProxy.prototype =
+{
+ onStartRequest: function(request, requestContext)
+ {
+ var context = this.getContext();
+ if (context)
+ context.sourceCache.onStartRequest(request, requestContext);
+ },
+
+ onDataAvailable: function(request, requestContext, inputStream, offset, count)
+ {
+ var context = this.getContext();
+ if (!context)
+ return null;
+
+ return context.sourceCache.onDataAvailable(request, requestContext,
+ inputStream, offset, count);
+ },
+
+ onStopRequest: function(request, requestContext, statusCode)
+ {
+ var context = this.getContext();
+ if (context)
+ context.sourceCache.onStopRequest(request, requestContext, statusCode);
+ },
+
+ onCollectData: function(request, data, offset)
+ {
+ var context = this.getContext();
+ if (!context)
+ {
+ if (FBTrace.DBG_CACHE)
+ FBTrace.sysout("tabCache.channel.onCollectData: NO CONTEXT " +
+ Http.safeGetRequestName(request), data);
+
+ return false;
+ }
+
+ // Store received data into the cache as they come. If the method returns
+ // false, the rest of the response is ignored (not cached). This is used
+ // to limit size of a cached response.
+ return context.sourceCache.storePartialResponse(request, data, this.window, offset);
+ },
+
+ getContext: function()
+ {
+ try
+ {
+ return Firebug.connection.getContextByWindow(this.window);
+ }
+ catch (e)
+ {
+ }
+ return null;
+ },
+
+ shouldCacheRequest: function(request)
+ {
+ try
+ {
+ return Firebug.TabCacheModel.shouldCacheRequest(request);
+ }
+ catch (err)
+ {
+ }
+ return false;
+ }
+};
+
+// ********************************************************************************************* //
+// Registration
+
+Firebug.registerActivableModule(Firebug.TabCacheModel);
+
+return Firebug.TabCacheModel;
+
+// ********************************************************************************************* //
+});
diff --cc install.rdf
index 98c230d,0000000..5789e73
mode 100644,000000..100644
--- a/install.rdf
+++ b/install.rdf
@@@ -1,98 -1,0 +1,98 @@@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>firebug at software.joehewitt.com</em:id>
- <em:version>2.0.15</em:version>
++ <em:version>2.0.16</em:version>
+ <em:type>2</em:type>
+ <em:bootstrap>true</em:bootstrap>
+
+ <!-- Any suitably modern toolkit application -->
+ <em:targetApplication>
+ <Description>
+ <em:id>toolkit at mozilla.org</em:id>
+ <em:minVersion>30.0a1</em:minVersion>
- <em:maxVersion>47.0</em:maxVersion>
++ <em:maxVersion>48.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Firefox -->
+ <em:targetApplication>
+ <Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>30.0a1</em:minVersion>
- <em:maxVersion>47.0</em:maxVersion>
++ <em:maxVersion>48.0</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <em:name>Firebug</em:name>
+ <em:description>Web Development Evolved. Firebug is free and open source software distributed under the BSD License.</em:description>
+ <em:creator>Joe Hewitt</em:creator>
+ <em:contributor>John J. Barton (IBM Almaden)</em:contributor>
+ <em:contributor>Jan Odvarko (Mozilla Corp.)</em:contributor>
+ <em:contributor>Max Stepanov (Aptana Inc.)</em:contributor>
+ <em:contributor>Rob Campbell (Mozilla Corp.)</em:contributor>
+ <em:contributor>Hans Hillen (Paciello Group, Mozilla)</em:contributor>
+ <em:contributor>Curtis Bartley (Mozilla Corp.)</em:contributor>
+ <em:contributor>Mike Collins (IBM Almaden)</em:contributor>
+ <em:contributor>Kevin Decker</em:contributor>
+ <em:contributor>Mike Ratcliffe (Mozilla Corp.)</em:contributor>
+ <em:contributor>Hernan Rodriguez Colmeiro</em:contributor>
+ <em:contributor>Austin Andrews</em:contributor>
+ <em:contributor>Christoph Dorn</em:contributor>
+ <em:contributor>Steven Roussey (Illuminations for Developers)</em:contributor>
+ <em:contributor>Sebastian Zartner</em:contributor>
+ <em:contributor>Harutyun Amirjanyan</em:contributor>
+ <em:contributor>Simon Lindholm</em:contributor>
+ <em:contributor>Stampolidis Anastasios</em:contributor>
+ <em:contributor>Joe Walker (Mozilla Corp.)</em:contributor>
+ <em:contributor>Vladimir Zhuravlev</em:contributor>
+ <em:contributor>Farshid Beheshti</em:contributor>
+ <em:contributor>Leon Sorokin</em:contributor>
+ <em:contributor>Florent Fayolle</em:contributor>
+ <em:contributor>Hector Zhao</em:contributor>
+ <em:contributor>Bharath Thiruveedula</em:contributor>
+ <em:contributor>Nathan Mische</em:contributor>
+ <em:contributor>Belakhdar Abdeldjalil</em:contributor>
+ <em:contributor>Jakob Kaltenbrunner</em:contributor>
+
+ <em:iconURL>chrome://firebug/skin/firebugBig.png</em:iconURL>
+ <em:homepageURL>http://www.getfirebug.com/</em:homepageURL>
+
+
+ <em:translator>Leszek(teo)Zyczkowski (pl-PL)</em:translator>
+ <em:translator>markh (nl)</em:translator>
+ <em:translator>peter3 (sv-SE)</em:translator>
+ <em:translator>AlleyKat (da-DK)</em:translator>
+ <em:translator>Hector Zhao, lovelywcm (zh-CN)</em:translator>
+ <em:translator>Lukas Kucharczyk, Michal Kec (cs-CZ)</em:translator>
+ <em:translator>Team erweiterungen.de, ReinekeFux, Benedikt Langens, Sebastian Zartner (de-DE)</em:translator>
+ <em:translator>l0stintranslation, gonzalopirobutirro, Luigi Grilli (it-IT)</em:translator>
+ <em:translator>alexxed (ro-RO)</em:translator>
+ <em:translator>Nicolas Martin, Franck Marcia (fr-FR)</em:translator>
+ <em:translator>gLes (hu-HU)</em:translator>
+ <em:translator>Xavi Ivars - Softcatala (ca)</em:translator>
+ <em:translator>gezmen (tr-TR)</em:translator>
+ <em:translator>eternoendless (es-AR)</em:translator>
+ <em:translator>Dark Preacher (ru)</em:translator>
+ <em:translator>Tiago Oliveira, Diego de Carvalho Zimmermann, Alexandre Rapaki (pt-BR)</em:translator>
+ <em:translator>Juan Botias, Alvaro G. Vicario (es-ES)</em:translator>
+ <em:translator>Andriy Zhouck (uk-UA)</em:translator>
+ <em:translator>Hisateru Tanaka, k2jp (ja-JP)</em:translator>
+ <em:translator>Mohsen Shadroo (fa-IR)</em:translator>
+ <em:translator>Eduard Babayan (hy-AM)</em:translator>
+ <em:translator>Helder Magalhaes (pt-PT)</em:translator>
+ <em:translator>Tomaz Macus (sl-SI)</em:translator>
+ <em:translator>Stoyan Stefanov, Alexander Shopov (bg)</em:translator>
+ <em:translator>Kristjan Bjarni Guomundsson (is-IS)</em:translator>
+ <em:translator>NGUYEN Manh Hung (vi-VN)</em:translator>
+ <em:translator>Bwah (hr-HR)</em:translator>
+ <em:translator>Sonickydon (el)</em:translator>
+ <em:translator>David Gonzales (es)</em:translator>
+ <em:translator>DakSrbija (sr)</em:translator>
+ <em:translator>bootleq (zh-TW)</em:translator>
+ <em:translator>Asier Iturralde Sarasola, Julen Irazoki Oteiza (eu)</em:translator>
+ </Description>
+</RDF>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firebug.git
More information about the Pkg-mozext-commits
mailing list