Merge m-c to inbound. a=merge
authorRyan VanderMeulen <ryanvm@gmail.com>
Thu, 09 Apr 2015 11:59:24 -0400
changeset 257311 07839dbde05cebef84f067640015d7c055ddb6c4
parent 257310 d34160cac9cd4c29e6b1a85b5857885ae9f993c6 (current diff)
parent 257257 dd32e3ff37179e1213f7c8e0dd0a6bf0a826e6b2 (diff)
child 257312 8cdd47cc88a626669d6d4b060aeaf12b73b00f76
push id8007
push userraliiev@mozilla.com
push dateMon, 11 May 2015 19:23:16 +0000
treeherdermozilla-aurora@e2ce1aac996e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone40.0a1
Merge m-c to inbound. a=merge
mobile/android/base/resources/drawable/firstrun_button_background.xml
mobile/android/base/resources/drawable/firstrun_button_enabled.xml
mobile/android/base/resources/drawable/firstrun_button_pressed.xml
toolkit/modules/Dict.jsm
toolkit/modules/tests/xpcshell/test_dict.js
--- a/b2g/config/dolphin/sources.xml
+++ b/b2g/config/dolphin/sources.xml
@@ -10,19 +10,19 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
@@ -97,17 +97,17 @@
   <project name="platform/external/tinyxml" path="external/tinyxml" revision="494e448824844d866e805831d1d5f5acb654065c"/>
   <project name="platform/external/tinyxml2" path="external/tinyxml2" revision="c74b546f5af36968ffa56d7fd4529f4273b96f48"/>
   <project name="platform/external/tremolo" path="external/tremolo" revision="0499204aa97d3e2978ee77d869dd033acb2196e2"/>
   <project name="platform/external/webp" path="external/webp" revision="513e97bd307573e2adc776eb5368bd129aceaa4a"/>
   <project name="platform/external/webrtc" path="external/webrtc" revision="446452f84e9cc4c75d8e80f6f05e24793397a19d"/>
   <project name="platform/external/yaffs2" path="external/yaffs2" revision="a2cff2275e1b501ff478b03757d6e4f05fddc2db"/>
   <project name="platform/external/zlib" path="external/zlib" revision="a5c7131da47c991585a6c6ac0c063b6d7d56e3fc"/>
   <project name="platform/frameworks/base" path="frameworks/base" revision="2d12cb68a6c680e1ef50c6fbd19f782f67aec9de"/>
-  <project name="platform/frameworks/native" path="frameworks/native" revision="a1a6f7f8ca11eb722f363a05fb60c2e66c8fbf0c"/>
+  <project name="platform/frameworks/native" path="frameworks/native" revision="8d54940d9bdad8fec3208ff58ddab590be9fe0d4"/>
   <project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="dbbe673145107e99883f62bafd70c5f43f11065c"/>
   <project name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="aac6c4bb59a6577c97cbda68699829b507b7490d"/>
   <project name="platform/hardware/libhardware" path="hardware/libhardware" revision="fbeca55f4695dd07c0291213403533b8fbca4885"/>
   <project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="92605aa35361ae4ae1e473781e40c1f6929f4ec4"/>
   <project name="platform/libcore" path="libcore" revision="e195beab082c09217318fc19250caeaf4c1bd800"/>
   <project name="platform/libnativehelper" path="libnativehelper" revision="feeb36c2bd4adfe285f98f5de92e0f3771b2c115"/>
   <project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
   <project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="0e7c060db684b409616fe67ea433ef19f5634c60"/>
@@ -124,21 +124,21 @@
   <project name="platform/system/vold" path="system/vold" revision="bb33b1ce8ad9cd3fc4311801b4d56db1d5c8175b"/>
   <!--original fetch url was http://sprdsource.spreadtrum.com:8085/b2g/android-->
   <remote fetch="https://git.mozilla.org/external/sprd-aosp" name="sprd-aosp"/>
   <default remote="sprd-aosp" revision="sprdb2g_gonk4.4" sync-j="4"/>
   <!-- Stock Android things -->
   <project name="platform/external/icu4c" path="external/icu4c" revision="2bb01561780583cc37bc667f0ea79f48a122d8a2"/>
   <!-- dolphin specific things -->
   <project name="device/sprd" path="device/sprd" revision="a26ba0ab998133ad590102be1e5950818b86ce82"/>
-  <project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="2ea7f18a7bc45e16cb97a835dc86ee64d2d6b0b3"/>
-  <project name="platform/frameworks/av" path="frameworks/av" revision="fd359e3a74a658d9eaab1c683440ba5412535777"/>
+  <project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="39a5b5bcadad745df3e6882316fce426f98b1669"/>
+  <project name="platform/frameworks/av" path="frameworks/av" revision="8bb69db127112fc66da75f8ca7a1158614b919f6"/>
   <project name="platform/hardware/akm" path="hardware/akm" revision="6d3be412647b0eab0adff8a2768736cf4eb68039"/>
   <project groups="invensense" name="platform/hardware/invensense" path="hardware/invensense" revision="e6d9ab28b4f4e7684f6c07874ee819c9ea0002a2"/>
   <project name="platform/hardware/ril" path="hardware/ril" revision="865ce3b4a2ba0b3a31421ca671f4d6c5595f8690"/>
   <project name="kernel/common" path="kernel" revision="df636d2c31ad4434a7de2565359ad982b3767118"/>
-  <project name="platform/system/core" path="system/core" revision="a626f6c0ef9e88586569331bd7387b569eaa5ed2"/>
+  <project name="platform/system/core" path="system/core" revision="3747764c63d23de586c56e1cef6dca2cdd90b2ea"/>
   <project name="u-boot" path="u-boot" revision="f1502910977ac88f43da7bf9277c3523ad4b0b2f"/>
   <project name="vendor/sprd/gps" path="vendor/sprd/gps" revision="4c59900937dc2e978b7b14b7f1ea617e3d5d550e"/>
   <project name="vendor/sprd/open-source" path="vendor/sprd/open-source" revision="e503b1d14d7fdee532b8f391407299da193c1b2d"/>
   <project name="vendor/sprd/partner" path="vendor/sprd/partner" revision="8649c7145972251af11b0639997edfecabfc7c2e"/>
   <project name="vendor/sprd/proprietories" path="vendor/sprd/proprietories" revision="d2466593022f7078aaaf69026adf3367c2adb7bb"/>
 </manifest>
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -14,18 +14,18 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="173b3104bfcbd23fc9dccd4b0035fc49aae3d444">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
-  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="a89cebcccc1e067ebdb71a93194f4ee79d71bd69"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
   <project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -12,18 +12,18 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="9025e50b9d29b3cabbbb21e1dd94d0d13121a17e"/>
--- a/b2g/config/emulator-kk/sources.xml
+++ b/b2g/config/emulator-kk/sources.xml
@@ -10,19 +10,19 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
--- a/b2g/config/emulator-l/sources.xml
+++ b/b2g/config/emulator-l/sources.xml
@@ -10,19 +10,19 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <!-- Stock Android things -->
   <project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -14,18 +14,18 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="173b3104bfcbd23fc9dccd4b0035fc49aae3d444">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
-  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="a89cebcccc1e067ebdb71a93194f4ee79d71bd69"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
   <project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
--- a/b2g/config/flame-kk/sources.xml
+++ b/b2g/config/flame-kk/sources.xml
@@ -10,19 +10,19 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
--- a/b2g/config/flame/sources.xml
+++ b/b2g/config/flame/sources.xml
@@ -12,18 +12,18 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="e95b4ce22c825da44d14299e1190ea39a5260bde"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="471afab478649078ad7c75ec6b252481a59e19b8"/>
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
 {
     "git": {
-        "git_revision": "5dfd0460eb6e616205154b0d219aa5123bf1abb3", 
+        "git_revision": "eaf69e651e19b98c096f8e63b9829fb31df50927", 
         "remote": "https://git.mozilla.org/releases/gaia.git", 
         "branch": ""
     }, 
-    "revision": "d8cd51229d334a6e9ae46951a7e0555a01d0cb1c", 
+    "revision": "354091e8f9d9c3a76dbc94130a433415079db215", 
     "repo_path": "integration/gaia-central"
 }
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -12,18 +12,18 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="9025e50b9d29b3cabbbb21e1dd94d0d13121a17e"/>
--- a/b2g/config/nexus-5-l/sources.xml
+++ b/b2g/config/nexus-5-l/sources.xml
@@ -10,19 +10,19 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="5dfd0460eb6e616205154b0d219aa5123bf1abb3"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eaf69e651e19b98c096f8e63b9829fb31df50927"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d36455f7defa176797ef5aaf894fe99307081542"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="805e2a69ad399bc181b308dd4f4fb4eddbd557ca"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="1b1d86462d3150dceacff927536ded9fcc168419"/>
   <!-- Stock Android things -->
   <project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -882,24 +882,16 @@ html|*#gcli-output-frame,
 .browserStack[responsivemode][notransition] {
   transition: none;
 }
 
 toolbarbutton[type="socialmark"] {
   -moz-binding: url("chrome://browser/content/socialmarks.xml#toolbarbutton-marks");
 }
 
-toolbarbutton.badged-button > .toolbarbutton-badge-container > .toolbarbutton-icon,
-toolbarbutton[type="socialmark"] > .toolbarbutton-icon {
-  max-width: 18px;
-}
-toolbarpaletteitem[place="palette"] > toolbarbutton.badged-button > .toolbarbutton-badge-container > .toolbarbutton-icon {
-  max-width: 32px;
-}
-
 panelview > .social-panel-frame {
   width: auto;
   height: auto;
 }
 
 /* Translation */
 notification[value="translation"] {
   -moz-binding: url("chrome://browser/content/translation-infobar.xml#translationbar");
--- a/browser/base/content/socialchat.xml
+++ b/browser/base/content/socialchat.xml
@@ -165,17 +165,17 @@
         <parameter name="aTarget"/>
         <body><![CDATA[
           aTarget.setAttribute("label", this.contentDocument.title);
           if (this.getAttribute("dark") == "true")
             aTarget.setAttribute("dark", "true");
           aTarget.src = this.src;
           aTarget.content.setAttribute("origin", this.content.getAttribute("origin"));
           aTarget.content.popupnotificationanchor.className = this.content.popupnotificationanchor.className;
-          this.content.swapDocShells(aTarget.content);
+          aTarget.content.swapDocShells(this.content);
         ]]></body>
       </method>
 
       <method name="onTitlebarClick">
         <parameter name="aEvent"/>
         <body><![CDATA[
           if (!this.chatbar)
             return;
--- a/browser/components/loop/MozLoopAPI.jsm
+++ b/browser/components/loop/MozLoopAPI.jsm
@@ -20,16 +20,18 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "LoopStorage",
                                         "resource:///modules/loop/LoopStorage.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "hookWindowCloseForPanelClose",
                                         "resource://gre/modules/MozSocialAPI.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PageMetadata",
                                         "resource://gre/modules/PageMetadata.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PluralForm",
                                         "resource://gre/modules/PluralForm.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "UpdateChannel",
+                                        "resource://gre/modules/UpdateChannel.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "UITour",
                                         "resource:///modules/UITour.jsm");
 XPCOMUtils.defineLazyGetter(this, "appInfo", function() {
   return Cc["@mozilla.org/xre/app-info;1"]
            .getService(Ci.nsIXULAppInfo)
            .QueryInterface(Ci.nsIXULRuntime);
 });
 XPCOMUtils.defineLazyServiceGetter(this, "clipboardHelper",
@@ -719,23 +721,21 @@ function injectLoopAPI(targetWindow) {
      *   - channel: The update channel the application is on
      *   - version: The application version
      *   - OS: The operating system the application is running on
      */
     appVersionInfo: {
       enumerable: true,
       get: function() {
         if (!appVersionInfo) {
-          let defaults = Services.prefs.getDefaultBranch(null);
-
           // If the lazy getter explodes, we're probably loaded in xpcshell,
           // which doesn't have what we need, so log an error.
           try {
             appVersionInfo = Cu.cloneInto({
-              channel: defaults.getCharPref("app.update.channel"),
+              channel: UpdateChannel.get(),
               version: appInfo.version,
               OS: appInfo.OS
             }, targetWindow);
           } catch (ex) {
             // only log outside of xpcshell to avoid extra message noise
             if (typeof targetWindow !== 'undefined' && "console" in targetWindow) {
               MozLoopService.log.error("Failed to construct appVersionInfo; if this isn't " +
                                        "an xpcshell unit test, something is wrong", ex);
--- a/browser/components/loop/standalone/Makefile
+++ b/browser/components/loop/standalone/Makefile
@@ -4,17 +4,17 @@
 
 # Note that this Makefile is not invoked by the Mozilla build
 # system, which is why it can have dependencies on things the
 # build system at-large doesn't yet support.
 
 LOOP_SERVER_URL := $(shell echo $${LOOP_SERVER_URL-http://localhost:5000/v0})
 LOOP_FEEDBACK_API_URL := $(shell echo $${LOOP_FEEDBACK_API_URL-"https://input.allizom.org/api/v1/feedback"})
 LOOP_FEEDBACK_PRODUCT_NAME := $(shell echo $${LOOP_FEEDBACK_PRODUCT_NAME-Loop})
-LOOP_BRAND_WEBSITE_URL := $(shell echo $${LOOP_BRAND_WEBSITE_URL-"https://www.mozilla.org/firefox/"})
+LOOP_DOWNLOAD_FIREFOX_URL := $(shell echo $${LOOP_DOWNLOAD_FIREFOX_URL-"https://www.mozilla.org/firefox/new/?scene=2&utm_source=hello.firefox.com&utm_medium=referral&utm_campaign=non-webrtc-browser\#download-fx"})
 LOOP_PRIVACY_WEBSITE_URL := $(shell echo $${LOOP_PRIVACY_WEBSITE_URL-"https://www.mozilla.org/privacy/firefox-hello/"})
 LOOP_LEGAL_WEBSITE_URL := $(shell echo $${LOOP_LEGAL_WEBSITE_URL-"https://www.mozilla.org/about/legal/terms/firefox-hello/"})
 LOOP_PRODUCT_HOMEPAGE_URL := $(shell echo $${LOOP_PRODUCT_HOMEPAGE_URL-"https://www.firefox.com/hello/"})
 
 NODE_LOCAL_BIN=./node_modules/.bin
 
 install: npm_install
 
@@ -59,17 +59,17 @@ remove_old_config:
 # working with that deployment.
 .PHONY: config
 config:
 	@echo "var loop = loop || {};" > content/config.js
 	@echo "loop.config = loop.config || {};" >> content/config.js
 	@echo "loop.config.serverUrl = '`echo $(LOOP_SERVER_URL)`';" >> content/config.js
 	@echo "loop.config.feedbackApiUrl = '`echo $(LOOP_FEEDBACK_API_URL)`';" >> content/config.js
 	@echo "loop.config.feedbackProductName = '`echo $(LOOP_FEEDBACK_PRODUCT_NAME)`';" >> content/config.js
-	@echo "loop.config.brandWebsiteUrl = '`echo $(LOOP_BRAND_WEBSITE_URL)`';" >> content/config.js
+	@echo "loop.config.downloadFirefoxUrl = '`echo $(LOOP_DOWNLOAD_FIREFOX_URL)`';" >> content/config.js
 	@echo "loop.config.privacyWebsiteUrl = '`echo $(LOOP_PRIVACY_WEBSITE_URL)`';" >> content/config.js
 	@echo "loop.config.legalWebsiteUrl = '`echo $(LOOP_LEGAL_WEBSITE_URL)`';" >> content/config.js
 	@echo "loop.config.learnMoreUrl = '`echo $(LOOP_PRODUCT_HOMEPAGE_URL)`';" >> content/config.js
 	@echo "loop.config.fxosApp = loop.config.fxosApp || {};" >> content/config.js
 	@echo "loop.config.fxosApp.name = 'Loop';" >> content/config.js
 	@echo "loop.config.fxosApp.rooms = true;" >> content/config.js
 	@echo "loop.config.fxosApp.manifestUrl = 'http://fake-market.herokuapp.com/apps/packagedApp/manifest.webapp';" >> content/config.js
 	@echo "loop.config.roomsSupportUrl = 'https://support.mozilla.org/kb/group-conversations-firefox-hello-webrtc';" >> content/config.js
--- a/browser/components/loop/standalone/content/js/standaloneRoomViews.js
+++ b/browser/components/loop/standalone/content/js/standaloneRoomViews.js
@@ -40,17 +40,17 @@ loop.standaloneRoomViews = (function(moz
           React.createElement("a", {href: loop.config.learnMoreUrl, className: "btn btn-info"}, 
             mozL10n.get("rooms_room_full_call_to_action_label", {
               clientShortname: mozL10n.get("clientShortname2")
             })
           )
         );
       }
       return (
-        React.createElement("a", {href: loop.config.brandWebsiteUrl, className: "btn btn-info"}, 
+        React.createElement("a", {href: loop.config.downloadFirefoxUrl, className: "btn btn-info"}, 
           mozL10n.get("rooms_room_full_call_to_action_nonFx_label", {
             brandShortname: mozL10n.get("brandShortname")
           })
         )
       );
     },
 
     /**
--- a/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx
+++ b/browser/components/loop/standalone/content/js/standaloneRoomViews.jsx
@@ -40,17 +40,17 @@ loop.standaloneRoomViews = (function(moz
           <a href={loop.config.learnMoreUrl} className="btn btn-info">
             {mozL10n.get("rooms_room_full_call_to_action_label", {
               clientShortname: mozL10n.get("clientShortname2")
             })}
           </a>
         );
       }
       return (
-        <a href={loop.config.brandWebsiteUrl} className="btn btn-info">
+        <a href={loop.config.downloadFirefoxUrl} className="btn btn-info">
           {mozL10n.get("rooms_room_full_call_to_action_nonFx_label", {
             brandShortname: mozL10n.get("brandShortname")
           })}
         </a>
       );
     },
 
     /**
--- a/browser/components/loop/standalone/content/js/webapp.js
+++ b/browser/components/loop/standalone/content/js/webapp.js
@@ -100,17 +100,17 @@ loop.webapp = (function($, _, OT, mozL10
       if (this.props.isFirefox) {
         return React.createElement("div", null);
       }
       return (
         React.createElement("div", {className: "promote-firefox"}, 
           React.createElement("h3", null, mozL10n.get("promote_firefox_hello_heading", {brandShortname: mozL10n.get("brandShortname")})), 
           React.createElement("p", null, 
             React.createElement("a", {className: "btn btn-large btn-accept", 
-               href: loop.config.brandWebsiteUrl}, 
+               href: loop.config.downloadFirefoxUrl}, 
               mozL10n.get("get_firefox_button", {
                 brandShortname: mozL10n.get("brandShortname")
               })
             )
           )
         )
       );
     }
--- a/browser/components/loop/standalone/content/js/webapp.jsx
+++ b/browser/components/loop/standalone/content/js/webapp.jsx
@@ -100,17 +100,17 @@ loop.webapp = (function($, _, OT, mozL10
       if (this.props.isFirefox) {
         return <div />;
       }
       return (
         <div className="promote-firefox">
           <h3>{mozL10n.get("promote_firefox_hello_heading", {brandShortname: mozL10n.get("brandShortname")})}</h3>
           <p>
             <a className="btn btn-large btn-accept"
-               href={loop.config.brandWebsiteUrl}>
+               href={loop.config.downloadFirefoxUrl}>
               {mozL10n.get("get_firefox_button", {
                 brandShortname: mozL10n.get("brandShortname")
               })}
             </a>
           </p>
         </div>
       );
     }
--- a/browser/components/loop/standalone/server.js
+++ b/browser/components/loop/standalone/server.js
@@ -26,17 +26,17 @@ function getConfigFile(req, res) {
     "var loop = loop || {};",
     "loop.config = loop.config || {};",
     "loop.config.serverUrl = 'http://localhost:" + loopServerPort + "/v0';",
     "loop.config.feedbackApiUrl = '" + feedbackApiUrl + "';",
     "loop.config.feedbackProductName = '" + feedbackProductName + "';",
     // XXX Update with the real marketplace url once the FxOS Loop app is
     //     uploaded to the marketplace bug 1053424
     "loop.config.marketplaceUrl = 'http://fake-market.herokuapp.com/iframe-install.html'",
-    "loop.config.brandWebsiteUrl = 'https://www.mozilla.org/firefox/';",
+    "loop.config.downloadFirefoxUrl = 'https://www.mozilla.org/firefox/new/?scene=2&utm_source=hello.firefox.com&utm_medium=referral&utm_campaign=non-webrtc-browser#download-fx';",
     "loop.config.privacyWebsiteUrl = 'https://www.mozilla.org/privacy/firefox-hello/';",
     "loop.config.learnMoreUrl = 'https://www.mozilla.org/hello/';",
     "loop.config.legalWebsiteUrl = 'https://www.mozilla.org/about/legal/terms/firefox-hello/';",
     "loop.config.fxosApp = loop.config.fxosApp || {};",
     "loop.config.fxosApp.name = 'Loop';",
     "loop.config.fxosApp.rooms = true;",
     "loop.config.fxosApp.manifestUrl = 'http://fake-market.herokuapp.com/apps/packagedApp/manifest.webapp';",
     "loop.config.roomsSupportUrl = 'https://support.mozilla.org/kb/group-conversations-firefox-hello-webrtc';",
--- a/browser/components/migration/MigrationUtils.jsm
+++ b/browser/components/migration/MigrationUtils.jsm
@@ -11,33 +11,31 @@ const Ci = Components.interfaces;
 const Cc = Components.classes;
 
 const TOPIC_WILL_IMPORT_BOOKMARKS = "initial-migration-will-import-default-bookmarks";
 const TOPIC_DID_IMPORT_BOOKMARKS = "initial-migration-did-import-default-bookmarks";
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 
-XPCOMUtils.defineLazyModuleGetter(this, "Dict",
-                                  "resource://gre/modules/Dict.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
                                   "resource://gre/modules/PlacesUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
                                   "resource://gre/modules/NetUtil.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "BookmarkHTMLUtils",
                                   "resource://gre/modules/BookmarkHTMLUtils.jsm");
 
 let gMigrators = null;
 let gProfileStartup = null;
 let gMigrationBundle = null;
 
 function getMigrationBundle() {
   if (!gMigrationBundle) {
     gMigrationBundle = Services.strings.createBundle(
-     "chrome://browser/locale/migration/migration.properties"); 
+     "chrome://browser/locale/migration/migration.properties");
   }
   return gMigrationBundle;
 }
 
 /**
  * Figure out what is the default browser, and if there is a migrator
  * for it, return that migrator's internal name.
  * For the time being, the "internal name" of a migraotr is its contract-id
@@ -193,68 +191,70 @@ this.MigratorPrototype = {
 
     if (aItems != Ci.nsIBrowserProfileMigrator.ALL)
       resources = [r for each (r in resources) if (aItems & r.type)];
 
     // Called either directly or through the bookmarks import callback.
     function doMigrate() {
       // TODO: use Map (for the items) and Set (for the resources)
       // once they are iterable.
-      let resourcesGroupedByItems = new Dict();
+      let resourcesGroupedByItems = new Map();
       resources.forEach(function(resource) {
         if (resourcesGroupedByItems.has(resource.type))
           resourcesGroupedByItems.get(resource.type).push(resource);
         else
           resourcesGroupedByItems.set(resource.type, [resource]);
       });
 
-      if (resourcesGroupedByItems.count == 0)
+      if (resourcesGroupedByItems.size == 0)
         throw new Error("No items to import");
 
       let notify = function(aMsg, aItemType) {
         Services.obs.notifyObservers(null, aMsg, aItemType);
       }
 
       notify("Migration:Started");
-      resourcesGroupedByItems.listkeys().forEach(function(migrationType) {
-        let migrationTypeA = migrationType;
-        let itemResources = resourcesGroupedByItems.get(migrationType);
+      for (let [key, value] of resourcesGroupedByItems) {
+      	// TODO: (bug 449811).
+      	let migrationType = key, itemResources = value;
+
         notify("Migration:ItemBeforeMigrate", migrationType);
 
         let itemSuccess = false;
-        itemResources.forEach(function(resource) {
+        for (let res of itemResources) {
+          let resource = res;
           let resourceDone = function(aSuccess) {
             let resourceIndex = itemResources.indexOf(resource);
             if (resourceIndex != -1) {
               itemResources.splice(resourceIndex, 1);
               itemSuccess |= aSuccess;
               if (itemResources.length == 0) {
-                resourcesGroupedByItems.del(migrationType);
+                resourcesGroupedByItems.delete(migrationType);
                 notify(itemSuccess ?
                        "Migration:ItemAfterMigrate" : "Migration:ItemError",
                        migrationType);
-                if (resourcesGroupedByItems.count == 0)
+                if (resourcesGroupedByItems.size == 0)
                   notify("Migration:Ended");
               }
             }
-          };
+          }
 
           Services.tm.mainThread.dispatch(function() {
             // If migrate throws, an error occurred, and the callback
             // (itemMayBeDone) might haven't been called.
             try {
               resource.migrate(resourceDone);
             }
             catch(ex) {
               Cu.reportError(ex);
               resourceDone(false);
             }
           }, Ci.nsIThread.DISPATCH_NORMAL);
-        });
-      });
+        }
+      }
     }
 
     if (MigrationUtils.isStartupMigration && !this.startupOnlyMigrator) {
       MigrationUtils.profileStartup.doStartup();
 
       // If we're about to migrate bookmarks, first import the default bookmarks.
       // Note We do not need to do so for the Firefox migrator
       // (=startupOnlyMigrator), as it just copies over the places database
@@ -435,17 +435,19 @@ this.MigrationUtils = Object.freeze({
   createImportedBookmarksFolder:
   function MU_createImportedBookmarksFolder(aSourceNameStr, aParentId) {
     let source = this.getLocalizedString("sourceName" + aSourceNameStr);
     let label = this.getLocalizedString("importedBookmarksFolder", [source]);
     return PlacesUtils.bookmarks.createFolder(
       aParentId, label, PlacesUtils.bookmarks.DEFAULT_INDEX);
   },
 
-  get _migrators() gMigrators ? gMigrators : gMigrators = new Dict(),
+  get _migrators() {
+    return gMigrators ? gMigrators : gMigrators = new Map();
+  },
 
   /*
    * Returns the migrator for the given source, if any data is available
    * for this source, or null otherwise.
    *
    * @param aKey internal name of the migration source.
    *             Supported values: ie (windows),
    *                               safari (mac/windows),
@@ -558,17 +560,16 @@ this.MigrationUtils = Object.freeze({
    * @param [optional] aMigratorKey
    *        If set, the migration wizard will import from the corresponding
    *        migrator, bypassing the source-selection page.  Otherwise, the
    *        source-selection page will be displayed, either with the default
    *        browser selected, if it could be detected and if there is a
    *        migrator for it, or with the first option selected as a fallback
    *        (The first option is hardcoded to be the most common browser for
    *         the OS we run on.  See migration.xul).
-   *          
    * @throws if aMigratorKey is invalid or if it points to a non-existent
    *         source.
    */
   startupMigration:
   function MU_startupMigrator(aProfileStartup, aMigratorKey) {
     if (!aProfileStartup) {
       throw new Error("an profile-startup instance is required for startup-migration");
     }
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -701,18 +701,19 @@ toolbar .toolbarbutton-1 > .toolbarbutto
   margin-top: 0;
   margin-bottom: 0;
   padding-top: 1px;
   padding-bottom: 1px;
   -moz-margin-start: 9px;
   -moz-margin-end: 7px;
 }
 
-@media not all and (min-resolution: 2dppx) {
 %include ../shared/toolbarbuttons.inc.css
+
+@media not all and (min-resolution: 1.1dppx) {
 %include ../shared/menupanel.inc.css
 
   #back-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 36px, 36px, 18px);
   }
 
   #forward-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 72px, 36px, 54px);
@@ -753,17 +754,17 @@ toolbar .toolbarbutton-1 > .toolbarbutto
   #open-file-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 234px, 36px, 216px);
   }
 
   #save-page-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 252px, 36px, 234px);
   }
 
-  #sync-button@toolbarButtonPressed@ {
+  #sync-button@toolbarButtonPressed@:not([status="active"]) {
     -moz-image-region: rect(18px, 270px, 36px, 252px);
   }
 
   #feed-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 288px, 36px, 270px);
   }
 
   #social-share-button@toolbarButtonPressed@ {
@@ -797,430 +798,254 @@ toolbar .toolbarbutton-1 > .toolbarbutto
   #find-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 396px, 36px, 378px);
   }
 
   #print-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 414px, 36px, 396px);
   }
 
-  #restore-button@toolbarButtonPressed@,
+  #restore-button:hover:active:not([disabled="true"]),
   #fullscreen-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 432px, 36px, 414px);
   }
 
   #developer-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 450px, 36px, 432px);
   }
 
   #preferences-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 468px, 36px, 450px);
   }
 
   #PanelUI-menu-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 486px, 36px, 468px);
   }
 
-  #cut-button@toolbarButtonPressed@ {
+  #edit-controls[cui-areatype="toolbar"] > #cut-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 504px, 36px, 486px);
   }
 
-  #copy-button@toolbarButtonPressed@ {
+  #edit-controls[cui-areatype="toolbar"] > #copy-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 522px, 36px, 504px);
   }
 
-  #paste-button@toolbarButtonPressed@ {
+  #edit-controls[cui-areatype="toolbar"] > #paste-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 540px, 36px, 522px);
   }
 
-  #zoom-out-button@toolbarButtonPressed@ {
+  #zoom-controls[cui-areatype="toolbar"] > #zoom-out-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 558px, 36px, 540px);
   }
 
-  #zoom-in-button@toolbarButtonPressed@ {
+  #zoom-controls[cui-areatype="toolbar"] > #zoom-in-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 576px, 36px, 558px);
   }
 
-  #nav-bar-overflow-button@toolbarButtonPressed@ {
+  #nav-bar-overflow-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(18px, 612px, 36px, 594px);
   }
 
   #tabview-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 648px, 36px, 630px);
   }
 
   #email-link-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 666px, 36px, 648px);
   }
 
   #sidebar-button@toolbarButtonPressed@ {
     -moz-image-region: rect(18px, 684px, 36px, 666px);
   }
 
+  #panic-button@toolbarButtonPressed@ {
+    -moz-image-region: rect(18px, 702px, 36px, 684px);
+  }
+
+  #web-apps-button@toolbarButtonPressed@ {
+    -moz-image-region: rect(18px, 720px, 36px, 702px);
+  }
+
   /**
    * OSX has a unique set of icons when fullscreen is in the checked state.
    */
 
   #fullscreen-button[checked="true"]:not([cui-areatype="menu-panel"]) {
     -moz-image-region: rect(36px, 432px, 54px, 414px);
   }
 
   #fullscreen-button[checked="true"]@toolbarButtonPressed@ {
     -moz-image-region: rect(54px, 432px, 72px, 414px);
   }
 }
 
-@media (min-resolution: 2dppx) {
-  /* Whitelist built-in buttons, instead of .toolbarbutton-1,
-     to avoid potentially breaking add-on toolbar buttons. */
-
-  :-moz-any(@primaryToolbarButtons@),
-  #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
-    list-style-image: url("chrome://browser/skin/Toolbar@2x.png");
-  }
-
-  toolbar[brighttext] :-moz-any(@primaryToolbarButtons@),
-  toolbar[brighttext] #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
-    list-style-image: url("chrome://browser/skin/Toolbar-inverted@2x.png");
-  }
-
-  #back-button {
-    -moz-image-region: rect(0, 72px, 36px, 36px);
-  }
-
+@media (min-resolution: 1.1dppx) {
   #back-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 72px, 72px, 36px);
   }
 
-  #forward-button {
-    -moz-image-region: rect(0, 144px, 36px, 108px);
-  }
-
   #forward-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 144px, 72px, 108px);
   }
 
-  #home-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 252px, 36px, 216px);
-  }
-
-  #home-button[cui-areatype="toolbar"]:hover:active {
+  #home-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 252px, 72px, 216px);
   }
 
-  #bookmarks-menu-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 288px, 36px, 252px);
-  }
-
-  #bookmarks-menu-button[cui-areatype="toolbar"][buttonover]:hover:active:not([disabled="true"]) {
+  #bookmarks-menu-button@toolbarButtonPressed@[buttonover] {
     -moz-image-region: rect(36px, 288px, 72px, 252px);
   }
 
-  #bookmarks-menu-button[cui-areatype="toolbar"][starred] {
-    -moz-image-region: rect(0, 324px, 36px, 288px);
-  }
-
-  #bookmarks-menu-button[cui-areatype="toolbar"][starred][buttonover]:hover:active:not([disabled="true"]) {
+  #bookmarks-menu-button@toolbarButtonPressed@[starred][buttonover] {
     -moz-image-region: rect(36px, 324px, 72px, 288px);
   }
 
-  #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
-    -moz-image-region: rect(0px, 1260px, 36px, 1224px);
-  }
-
   #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker:hover:active:not([disabled="true"]) > .dropmarker-icon {
     -moz-image-region: rect(36px, 1260px, 72px, 1224px);
   }
 
-  #history-panelmenu[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 360px, 36px, 324px);
-  }
-
-  #history-panelmenu[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #history-panelmenu@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 360px, 72px, 324px);
   }
 
-  #downloads-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 396px, 36px, 360px);
-  }
-
-  #downloads-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #downloads-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 396px, 72px, 360px);
   }
 
-  #add-ons-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 432px, 36px, 396px);
-  }
-
-  #add-ons-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #add-ons-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 432px, 72px, 396px);
   }
 
-  #open-file-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 468px, 36px, 432px);
-  }
-
-  #open-file-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #open-file-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 468px, 72px, 432px);
   }
 
-  #save-page-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 504px, 36px, 468px);
-  }
-
-  #save-page-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #save-page-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 504px, 72px, 468px);
   }
 
-  #sync-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 540px, 36px, 504px);
-  }
-
-  #sync-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #sync-button@toolbarButtonPressed@:not([status="active"]) {
     -moz-image-region: rect(36px, 540px, 72px, 504px);
   }
 
-  #sync-button[cui-areatype="toolbar"][status="active"],
-  #sync-button[cui-areatype="toolbar"][status="active"]:hover:active:not([disabled="true"]) {
-    list-style-image: url("chrome://browser/skin/syncProgress-toolbar@2x.png");
-    -moz-image-region: rect(0, 36px, 36px, 0px);
-  }
-
-  toolbar[brighttext] #sync-button[cui-areatype="toolbar"][status="active"],
-  toolbar[brighttext] #sync-button[cui-areatype="toolbar"][status="active"]:hover:active:not([disabled="true"]) {
-    list-style-image: url("chrome://browser/skin/syncProgress-toolbar-inverted@2x.png");
-  }
-
-  #feed-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 576px, 36px, 540px);
-  }
-
-  #feed-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #feed-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 576px, 72px, 540px);
   }
 
-  #social-share-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 612px, 36px, 576px);
-  }
-
-  #social-share-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #social-share-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 612px, 72px, 576px);
   }
 
-  #characterencoding-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 648px, 36px, 612px);
-  }
-
-  #characterencoding-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #characterencoding-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 648px, 72px, 612px);
   }
 
-  #new-window-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 684px, 36px, 648px);
-  }
-
-  #new-window-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #new-window-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 684px, 72px, 648px);
   }
 
-  #e10s-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 684px, 36px, 648px);
-  }
-
-  #e10s-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #e10s-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 684px, 72px, 648px);
   }
 
   #e10s-button > .toolbarbutton-icon {
     transform: scaleY(-1);
   }
 
-  #webide-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 1476px, 36px, 1440px);
-  }
-
-  #webide-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #webide-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1476px, 72px, 1440px);
   }
 
-  #new-tab-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 720px, 36px, 684px);
-  }
-
-  #new-tab-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #new-tab-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 720px, 72px, 684px);
   }
 
-  #privatebrowsing-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 756px, 36px, 720px);
-  }
-
-  #privatebrowsing-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #privatebrowsing-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 756px, 72px, 720px);
   }
 
-  #find-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 792px, 36px, 756px);
-  }
-
-  #find-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #find-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 792px, 72px, 756px);
   }
 
-  #print-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 828px, 36px, 792px);
-  }
-
-  #print-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #print-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 828px, 72px, 792px);
   }
 
-  #restore-button,
-  #fullscreen-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 864px, 36px, 828px);
-  }
-
   #restore-button:hover:active:not([disabled="true"]),
-  #fullscreen-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #fullscreen-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 864px, 72px, 828px);
   }
 
   #fullscreen-button[cui-areatype="toolbar"][checked="true"] {
     -moz-image-region: rect(72px, 864px, 108px, 828px);
   }
 
-  #fullscreen-button[cui-areatype="toolbar"][checked="true"]:hover:active:not([disabled="true"]) {
+  #fullscreen-button@toolbarButtonPressed@[checked="true"] {
     -moz-image-region: rect(108px, 864px, 144px, 828px);
   }
 
-  #developer-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 900px, 36px, 864px);
-  }
-
-  #developer-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #developer-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 900px, 72px, 864px);
   }
 
-  #preferences-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 936px, 36px, 900px);
-  }
-
-  #preferences-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #preferences-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 936px, 72px, 900px);
   }
 
-  #PanelUI-menu-button {
-    -moz-image-region: rect(0, 972px, 36px, 936px);
-  }
-
   #PanelUI-menu-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 972px, 72px, 936px);
   }
 
-  #edit-controls[cui-areatype="toolbar"] > #cut-button {
-    -moz-image-region: rect(0, 1008px, 36px, 972px);
-  }
-
   #edit-controls[cui-areatype="toolbar"] > #cut-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1008px, 72px, 972px);
   }
 
-  #edit-controls[cui-areatype="toolbar"] > #copy-button {
-    -moz-image-region: rect(0, 1044px, 36px, 1008px);
-  }
-
   #edit-controls[cui-areatype="toolbar"] > #copy-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1044px, 72px, 1008px);
   }
 
-  #edit-controls[cui-areatype="toolbar"] > #paste-button {
-    -moz-image-region: rect(0, 1080px, 36px, 1044px);
-  }
-
   #edit-controls[cui-areatype="toolbar"] > #paste-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1080px, 72px, 1044px);
   }
 
-  #zoom-controls[cui-areatype="toolbar"] > #zoom-out-button {
-    -moz-image-region: rect(0, 1116px, 36px, 1080px);
-  }
-
   #zoom-controls[cui-areatype="toolbar"] > #zoom-out-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1116px, 72px, 1080px);
   }
 
-  #zoom-controls[cui-areatype="toolbar"] > #zoom-in-button {
-    -moz-image-region: rect(0, 1152px, 36px, 1116px);
-  }
-
   #zoom-controls[cui-areatype="toolbar"] > #zoom-in-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1152px, 72px, 1116px);
   }
 
-  #nav-bar-overflow-button {
-    -moz-image-region: rect(0, 1224px, 36px, 1188px);
-  }
-
   #nav-bar-overflow-button:hover:active:not([disabled="true"]) {
     -moz-image-region: rect(36px, 1224px, 72px, 1188px);
   }
 
-  #nav-bar-overflow-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-    transform: scaleX(-1);
-  }
-
-  #tabview-button {
-    -moz-image-region: rect(0, 1296px, 36px, 1260px);
-  }
-
   #tabview-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1296px, 72px, 1260px);
   }
 
-  #email-link-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 1332px, 36px, 1296px);
-  }
-
-  #email-link-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #email-link-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1332px, 72px, 1296px);
   }
 
-  #sidebar-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 1368px, 36px, 1332px);
-  }
-
-  #sidebar-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #sidebar-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1368px, 72px, 1332px);
   }
 
-  #panic-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 1404px, 36px, 1368px);
-  }
-
-  #panic-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #panic-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1404px, 72px, 1368px);
   }
 
-  #panic-button[cui-areatype="toolbar"][open] {
-    -moz-image-region: rect(72px, 1404px, 108px, 1368px);
-  }
-
-  #panic-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
-    transform: scaleX(-1);
-  }
-
-  #web-apps-button[cui-areatype="toolbar"] {
-    -moz-image-region: rect(0, 1440px, 36px, 1404px);
-  }
-
-  #web-apps-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
+  #web-apps-button@toolbarButtonPressed@ {
     -moz-image-region: rect(36px, 1440px, 72px, 1404px);
   }
 
   :-moz-any(@primaryToolbarButtons@) > .toolbarbutton-icon,
+  :-moz-any(@primaryToolbarButtons@) > .toolbarbutton-badge-container > .toolbarbutton-icon,
   :-moz-any(@primaryToolbarButtons@) > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
     width: 18px;
   }
 
   /* Menu panel and palette styles */
 
   toolbaritem[sdkstylewidget="true"] > toolbarbutton,
   :-moz-any(@primaryToolbarButtons@)[cui-areatype="menu-panel"],
--- a/browser/themes/shared/readinglist/icons.svg
+++ b/browser/themes/shared/readinglist/icons.svg
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <svg xmlns="http://www.w3.org/2000/svg"
      xmlns:xlink="http://www.w3.org/1999/xlink"
-     viewBox="0 0 16 16"
+     viewBox="0 0 14 14"
      xml:space="preserve">
 
   <defs>
     <style type="text/css">
       use:not(:target) {
         display: none;
       }
 
@@ -21,31 +21,31 @@
       }
       #addpage-active, #alreadyadded-active {
         fill: #0095DD;
       }
     </style>
 
     <mask id="plus-mask">
       <rect width="100%" height="100%" fill="white"/>
-      <rect x="4" y="7.5" width="8" height="1"/>
-      <rect x="7.5" y="4" width="1" height="8"/>
+      <rect x="3" y="6" width="8" height="2"/>
+      <rect x="6" y="3" width="2" height="8"/>
     </mask>
 
     <mask id="minus-mask">
       <rect width="100%" height="100%" fill="white"/>
-      <rect x="4" y="7.5" width="8" height="1"/>
+      <rect x="3" y="6" width="8" height="2"/>
     </mask>
 
     <g id="addpage-shape">
-      <circle cx="8" cy="8" r="7" mask="url(#plus-mask)"/>
+      <circle cx="7" cy="7" r="6" mask="url(#plus-mask)"/>
     </g>
 
     <g id="removepage-shape">
-      <circle cx="8" cy="8" r="7" mask="url(#minus-mask)"/>
+      <circle cx="7" cy="7" r="6" mask="url(#minus-mask)"/>
     </g>
 
   </defs>
 
   <use id="addpage"                 xlink:href="#addpage-shape"/>
   <use id="addpage-hover"           xlink:href="#addpage-shape"/>
   <use id="addpage-active"          xlink:href="#addpage-shape"/>
 
--- a/browser/themes/shared/toolbarbuttons.inc.css
+++ b/browser/themes/shared/toolbarbuttons.inc.css
@@ -1,10 +1,8 @@
-/* Note that this file isn't used for HiDPI on OS X. */
-
 :-moz-any(@primaryToolbarButtons@),
 #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
   list-style-image: url("chrome://browser/skin/Toolbar.png");
 }
 
 toolbar[brighttext] :-moz-any(@primaryToolbarButtons@),
 toolbar[brighttext] #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
   list-style-image: url(chrome://browser/skin/Toolbar-inverted.png);
@@ -53,24 +51,22 @@ toolbar[brighttext] #bookmarks-menu-butt
 #save-page-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 252px, 18px, 234px);
 }
 
 #sync-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 270px, 18px, 252px);
 }
 
-#sync-button[cui-areatype="toolbar"][status="active"],
-#sync-button[cui-areatype="toolbar"][status="active"]:hover:active:not([disabled="true"]) {
+#sync-button[cui-areatype="toolbar"][status="active"] {
   list-style-image: url("chrome://browser/skin/syncProgress-toolbar.png");
   -moz-image-region: rect(0, 18px, 18px, 0px);
 }
 
-toolbar[brighttext] #sync-button[status="active"],
-toolbar[brighttext] #sync-button[status="active"]:hover:active:not([disabled="true"]) {
+toolbar[brighttext] #sync-button[status="active"] {
   list-style-image: url("chrome://browser/skin/syncProgress-toolbar-inverted.png");
 }
 
 #feed-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 288px, 18px, 270px);
 }
 
 #social-share-button[cui-areatype="toolbar"] {
@@ -167,44 +163,32 @@ toolbar[brighttext] #sync-button[status=
 #sidebar-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 684px, 18px, 666px);
 }
 
 #panic-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 702px, 18px, 684px);
 }
 
+#panic-button[cui-areatype="toolbar"][open] {
 %ifdef XP_MACOSX
-#panic-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
-  -moz-image-region: rect(18px, 702px, 36px, 684px);
-}
-
-#panic-button[cui-areatype="toolbar"][open] {
   -moz-image-region: rect(36px, 702px, 54px, 684px);
+%else
+  -moz-image-region: rect(18px, 702px, 36px, 684px);
+%endif
 }
-%else
-#panic-button[cui-areatype="toolbar"][open] {
-  -moz-image-region: rect(18px, 702px, 36px, 684px);
-}
-%endif
 
 #panic-button:-moz-locale-dir(rtl) > .toolbarbutton-icon {
   transform: scaleX(-1);
 }
 
 #web-apps-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 720px, 18px, 702px);
 }
 
-%ifdef XP_MACOSX
-#web-apps-button[cui-areatype="toolbar"]:hover:active:not([disabled="true"]) {
-  -moz-image-region: rect(18px, 720px, 36px, 702px);
-}
-%endif
-
 #loop-button > .toolbarbutton-badge-container {
   list-style-image: url(chrome://browser/skin/loop/toolbar.png);
   -moz-image-region: rect(0, 18px, 18px, 0);
 }
 
 toolbar[brighttext] #loop-button > .toolbarbutton-badge-container {
   list-style-image: url(chrome://browser/skin/loop/toolbar-inverted.png);
 }
@@ -232,8 +216,194 @@ toolbar[brighttext] #loop-button > .tool
 
 #loop-button:not([disabled="true"])[state="active"]:-moz-any(:hover,:hover:active,[open]) > .toolbarbutton-badge-container {
   -moz-image-region: rect(0, 126px, 18px, 108px);
 }
 
 #webide-button[cui-areatype="toolbar"] {
   -moz-image-region: rect(0, 738px, 18px, 720px);
 }
+
+%if defined(XP_WIN) || defined(XP_MACOSX)
+@media (min-resolution: 1.1dppx) {
+  :-moz-any(@primaryToolbarButtons@),
+  #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+    list-style-image: url("chrome://browser/skin/Toolbar@2x.png");
+  }
+
+  toolbar[brighttext] :-moz-any(@primaryToolbarButtons@),
+  toolbar[brighttext] #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+    list-style-image: url("chrome://browser/skin/Toolbar-inverted@2x.png");
+  }
+
+  #back-button {
+    -moz-image-region: rect(0, 72px, 36px, 36px);
+  }
+
+  #forward-button {
+    -moz-image-region: rect(0, 144px, 36px, 108px);
+  }
+
+  #home-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 252px, 36px, 216px);
+  }
+
+  #bookmarks-menu-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 288px, 36px, 252px);
+  }
+
+  #bookmarks-menu-button[cui-areatype="toolbar"][starred] {
+    -moz-image-region: rect(0, 324px, 36px, 288px);
+  }
+
+  #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+    -moz-image-region: rect(0px, 1260px, 36px, 1224px);
+  }
+
+  #history-panelmenu[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 360px, 36px, 324px);
+  }
+
+  #downloads-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 396px, 36px, 360px);
+  }
+
+  #add-ons-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 432px, 36px, 396px);
+  }
+
+  #open-file-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 468px, 36px, 432px);
+  }
+
+  #save-page-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 504px, 36px, 468px);
+  }
+
+  #sync-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 540px, 36px, 504px);
+  }
+
+  #sync-button[cui-areatype="toolbar"][status="active"] {
+    list-style-image: url("chrome://browser/skin/syncProgress-toolbar@2x.png");
+    -moz-image-region: rect(0, 36px, 36px, 0px);
+  }
+
+  toolbar[brighttext] #sync-button[cui-areatype="toolbar"][status="active"] {
+    list-style-image: url("chrome://browser/skin/syncProgress-toolbar-inverted@2x.png");
+  }
+
+  #feed-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 576px, 36px, 540px);
+  }
+
+  #social-share-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 612px, 36px, 576px);
+  }
+
+  #characterencoding-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 648px, 36px, 612px);
+  }
+
+  #new-window-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 684px, 36px, 648px);
+  }
+
+  #e10s-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 684px, 36px, 648px);
+  }
+
+  #e10s-button > .toolbarbutton-icon {
+    transform: scaleY(-1);
+  }
+
+  #new-tab-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 720px, 36px, 684px);
+  }
+
+  #privatebrowsing-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 756px, 36px, 720px);
+  }
+
+  #find-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 792px, 36px, 756px);
+  }
+
+  #print-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 828px, 36px, 792px);
+  }
+
+%ifdef XP_MACOSX
+  #restore-button,
+%endif
+  #fullscreen-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 864px, 36px, 828px);
+  }
+
+  #developer-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 900px, 36px, 864px);
+  }
+
+  #preferences-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 936px, 36px, 900px);
+  }
+
+  #PanelUI-menu-button {
+    -moz-image-region: rect(0, 972px, 36px, 936px);
+  }
+
+  #edit-controls[cui-areatype="toolbar"] > #cut-button {
+    -moz-image-region: rect(0, 1008px, 36px, 972px);
+  }
+
+  #edit-controls[cui-areatype="toolbar"] > #copy-button {
+    -moz-image-region: rect(0, 1044px, 36px, 1008px);
+  }
+
+  #edit-controls[cui-areatype="toolbar"] > #paste-button {
+    -moz-image-region: rect(0, 1080px, 36px, 1044px);
+  }
+
+  #zoom-controls[cui-areatype="toolbar"] > #zoom-out-button {
+    -moz-image-region: rect(0, 1116px, 36px, 1080px);
+  }
+
+  #zoom-controls[cui-areatype="toolbar"] > #zoom-in-button {
+    -moz-image-region: rect(0, 1152px, 36px, 1116px);
+  }
+
+  #nav-bar-overflow-button {
+    -moz-image-region: rect(0, 1224px, 36px, 1188px);
+  }
+
+  #tabview-button {
+    -moz-image-region: rect(0, 1296px, 36px, 1260px);
+  }
+
+  #email-link-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 1332px, 36px, 1296px);
+  }
+
+  #sidebar-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 1368px, 36px, 1332px);
+  }
+
+  #panic-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 1404px, 36px, 1368px);
+  }
+
+  #panic-button[cui-areatype="toolbar"][open] {
+%ifdef XP_MACOSX
+    -moz-image-region: rect(72px, 1404px, 108px, 1368px);
+%else
+    -moz-image-region: rect(36px, 1404px, 72px, 1368px);
+%endif
+  }
+
+  #web-apps-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 1440px, 36px, 1404px);
+  }
+
+  #webide-button[cui-areatype="toolbar"] {
+    -moz-image-region: rect(0, 1476px, 36px, 1440px);
+  }
+}
+%endif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6112bd6fc923596b05c172c7b7b63250ea2e7ef2
GIT binary patch
literal 43656
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
CM!b~(
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..89b01f5f64ed237c0c99d685457165f414b1b050
GIT binary patch
literal 27669
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5f2e53dd79a40be4daf5bb6f988e51afcdd254ca
GIT binary patch
literal 15831
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
VjLZEN8?ygywbk|2DpYKu{tx@v(=Px3
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -663,16 +663,32 @@ toolbar[brighttext] .toolbarbutton-1 > .
 @conditionalForwardWithUrlbar@ > .toolbarbutton-1:-moz-any([disabled],:not([open]):not([disabled]):not(:active)) > .toolbarbutton-icon {
   padding: 2px 6px;
   border: 1px solid;
   border-color: transparent;
   transition-property: background-color, border-color;
   transition-duration: 150ms;
 }
 
+toolbarbutton[cui-areatype="toolbar"] > :-moz-any(@nestedButtons@) > .toolbarbutton-icon,
+:-moz-any(@primaryToolbarButtons@):-moz-any([cui-areatype="toolbar"],:not([cui-areatype])):not(:-moz-any(@nestedButtons@)) > .toolbarbutton-icon,
+:-moz-any(@primaryToolbarButtons@):-moz-any([cui-areatype="toolbar"],:not([cui-areatype])) > .toolbarbutton-badge-container > .toolbarbutton-icon,
+:-moz-any(@primaryToolbarButtons@):-moz-any([cui-areatype="toolbar"],:not([cui-areatype])) > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
+#bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+  width: 18px;
+}
+
+#nav-bar toolbarbutton[cui-areatype="toolbar"] > :-moz-any(@nestedButtons@) > .toolbarbutton-icon,
+#nav-bar :-moz-any(@primaryToolbarButtons@):-moz-any([cui-areatype="toolbar"],:not([cui-areatype])) > .toolbarbutton-icon,
+#nav-bar :-moz-any(@primaryToolbarButtons@):-moz-any([cui-areatype="toolbar"],:not([cui-areatype])) > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
+#nav-bar #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+  /* horizontal padding + border + actual icon width */
+  width: 32px;
+}
+
 @media (-moz-os-version: windows-xp),
        (-moz-os-version: windows-vista),
        (-moz-os-version: windows-win7) {
   /* < Win8 */
   :root {
     --toolbarbutton-hover-background: linear-gradient(hsla(0,0%,100%,.6), hsla(0,0%,100%,.1));
     --toolbarbutton-hover-bordercolor: hsla(210,54%,20%,.15) hsla(210,54%,20%,.2) hsla(210,54%,20%,.25);
     --toolbarbutton-hover-boxshadow: 0 1px hsla(0,0%,100%,.3) inset,
@@ -734,18 +750,24 @@ toolbarbutton[sdk-button="true"][cui-are
 #nav-bar .toolbarbutton-1 > .toolbarbutton-menu-dropmarker {
   -moz-margin-start: -15px;
 }
 
 #nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
   -moz-border-end: none transparent;
 }
 
+#nav-bar #bookmarks-menu-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
+  /* horizontal padding + border + actual icon width */
+  width: 31px;
+}
+
 #nav-bar .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
-  padding: 8px 5px 7px;
+  padding-top: 8px;
+  padding-bottom: 8px;
 }
 
 #nav-bar .toolbaritem-combined-buttons {
   margin-left: 2px;
   margin-right: 2px;
 }
 
 #nav-bar .toolbaritem-combined-buttons > .toolbarbutton-1 {
@@ -892,16 +914,17 @@ toolbarbutton[sdk-button="true"][cui-are
 }
 
 #forward-button > .toolbarbutton-icon {
   background-clip: padding-box !important;
   border-left-style: none !important;
   border-radius: 0 !important;
   padding-left: 9px !important;
   padding-right: 3px !important;
+  width: 31px !important; /* horizontal padding + border + actual icon width */
 }
 
 @conditionalForwardWithUrlbar@:not([switchingtabs]) > #forward-button {
   transition: margin-left @forwardTransitionLength@ ease-out;
 }
 
 @conditionalForwardWithUrlbar@ > #forward-button[disabled] {
   margin-left: -@conditionalForwardWithUrlbarWidth@px;
@@ -938,16 +961,17 @@ toolbarbutton[sdk-button="true"][cui-are
 }
 
 #back-button > .toolbarbutton-icon {
   border-radius: 10000px !important;
   background-clip: padding-box !important;
   background-color: hsla(210,25%,98%,.08) !important;
   padding: 6px !important;
   border-style: none !important;
+  width: 30px !important; /* horizontal padding + border + actual icon width */
   box-shadow: 0 1px 0 0 hsla(210,4%,10%,.25),
               0 0 0 1px hsla(210,4%,10%,.25);
   transition-property: background-color, box-shadow !important;
   transition-duration: 250ms !important;
 }
 
 #back-button:not([disabled="true"]):not([open="true"]):not(:active):hover > .toolbarbutton-icon {
   background-color: hsla(210,4%,10%,.08) !important;
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -102,18 +102,21 @@ browser.jar:
         skin/classic/browser/search-indicator-badge-add.png          (../shared/search/search-indicator-badge-add.png)
         skin/classic/browser/search-history-icon.svg                 (../shared/search/history-icon.svg)
         skin/classic/browser/Secure24.png
         skin/classic/browser/Secure24-aero.png
         skin/classic/browser/setDesktopBackground.css
         skin/classic/browser/slowStartup-16.png
         skin/classic/browser/theme-switcher-icon.png                 (../shared/theme-switcher-icon.png)
         skin/classic/browser/Toolbar.png
+        skin/classic/browser/Toolbar@2x.png
         skin/classic/browser/Toolbar-aero.png
+        skin/classic/browser/Toolbar-aero@2x.png
         skin/classic/browser/Toolbar-inverted.png
+        skin/classic/browser/Toolbar-inverted@2x.png
         skin/classic/browser/Toolbar-lunaSilver.png
         skin/classic/browser/Toolbar-XP.png
         skin/classic/browser/toolbarbutton-dropdown-arrow.png
         skin/classic/browser/toolbarbutton-dropdown-arrow-XPVista7.png
         skin/classic/browser/toolbarbutton-dropdown-arrow-inverted.png
         skin/classic/browser/undoCloseTab.png                        (../shared/undoCloseTab.png)
         skin/classic/browser/undoCloseTab@2x.png                     (../shared/undoCloseTab@2x.png)
         skin/classic/browser/update-badge.svg                        (../shared/update-badge.svg)
@@ -490,18 +493,21 @@ browser.jar:
         skin/classic/browser/syncSetup.css
         skin/classic/browser/syncCommon.css
         skin/classic/browser/syncQuota.css
         skin/classic/browser/syncProgress.css
         skin/classic/browser/syncProgress-horizontalbar.png
         skin/classic/browser/syncProgress-horizontalbar-XPVista7.png
         skin/classic/browser/syncProgress-menuPanel.png
         skin/classic/browser/syncProgress-toolbar.png
+        skin/classic/browser/syncProgress-toolbar@2x.png
         skin/classic/browser/syncProgress-toolbar-inverted.png
+        skin/classic/browser/syncProgress-toolbar-inverted@2x.png
         skin/classic/browser/syncProgress-toolbar-XPVista7.png
+        skin/classic/browser/syncProgress-toolbar-XPVista7@2x.png
 #endif
         skin/classic/browser/devtools/tooltip/arrow-horizontal-dark.png   (../shared/devtools/tooltip/arrow-horizontal-dark.png)
         skin/classic/browser/devtools/tooltip/arrow-horizontal-dark@2x.png   (../shared/devtools/tooltip/arrow-horizontal-dark@2x.png)
         skin/classic/browser/devtools/tooltip/arrow-vertical-dark.png   (../shared/devtools/tooltip/arrow-vertical-dark.png)
         skin/classic/browser/devtools/tooltip/arrow-vertical-dark@2x.png   (../shared/devtools/tooltip/arrow-vertical-dark@2x.png)
         skin/classic/browser/devtools/tooltip/arrow-horizontal-light.png   (../shared/devtools/tooltip/arrow-horizontal-light.png)
         skin/classic/browser/devtools/tooltip/arrow-horizontal-light@2x.png   (../shared/devtools/tooltip/arrow-horizontal-light@2x.png)
         skin/classic/browser/devtools/tooltip/arrow-vertical-light.png   (../shared/devtools/tooltip/arrow-vertical-light.png)
@@ -552,24 +558,28 @@ browser.jar:
 % override chrome://browser/skin/preferences/application.png          chrome://browser/skin/preferences/application-aero.png            os=WINNT osversion>=6
 % override chrome://browser/skin/preferences/mail.png                 chrome://browser/skin/preferences/mail-aero.png                   os=WINNT osversion>=6
 % override chrome://browser/skin/preferences/Options.png              chrome://browser/skin/preferences/Options-aero.png                os=WINNT osversion>=6
 % override chrome://browser/skin/preferences/saveFile.png             chrome://browser/skin/preferences/saveFile-aero.png               os=WINNT osversion>=6
 % override chrome://browser/skin/tabbrowser/tab-separator.png         chrome://browser/skin/tabbrowser/tab-separator-aero.png           os=WINNT osversion>=6
 
 % override chrome://browser/skin/sync-horizontalbar.png               chrome://browser/skin/sync-horizontalbar-XPVista7.png             os=WINNT osversion<=6.1
 % override chrome://browser/skin/syncProgress-horizontalbar.png       chrome://browser/skin/syncProgress-horizontalbar-XPVista7.png     os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-toolbar.png             chrome://browser/skin/syncProgress-toolbar-XPVista7.png           os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-toolbar@2x.png          chrome://browser/skin/syncProgress-toolbar-XPVista7@2x.png        os=WINNT osversion<=6.1
 % override chrome://browser/skin/toolbarbutton-dropdown-arrow.png     chrome://browser/skin/toolbarbutton-dropdown-arrow-XPVista7.png   os=WINNT osversion<=6.1
 % override chrome://browser/skin/tabbrowser/newtab.png                chrome://browser/skin/tabbrowser/newtab-XPVista7.png              os=WINNT osversion<=6.1
 % override chrome://browser/skin/tabbrowser/tab-arrow-left.png        chrome://browser/skin/tabbrowser/tab-arrow-left-XPVista7.png      os=WINNT osversion<=6.1
 
 % override chrome://browser/skin/menuPanel.png                        chrome://browser/skin/menuPanel-aero.png                          os=WINNT osversion=6
 % override chrome://browser/skin/menuPanel.png                        chrome://browser/skin/menuPanel-aero.png                          os=WINNT osversion=6.1
 % override chrome://browser/skin/menuPanel-small.png                  chrome://browser/skin/menuPanel-small-aero.png                    os=WINNT osversion=6
 % override chrome://browser/skin/menuPanel-small.png                  chrome://browser/skin/menuPanel-small-aero.png                    os=WINNT osversion=6.1
+% override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6
+% override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6.1
 % override chrome://browser/skin/loop/menuPanel.png                   chrome://browser/skin/loop/menuPanel-aero.png                     os=WINNT osversion=6
 % override chrome://browser/skin/loop/menuPanel.png                   chrome://browser/skin/loop/menuPanel-aero.png                     os=WINNT osversion=6.1
 
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-XP.png                              os=WINNT osversion=5.2
 % override chrome://browser/skin/loop/toolbar.png                     chrome://browser/skin/loop/toolbar-aero.png                       os=WINNT osversion=6
 % override chrome://browser/skin/loop/toolbar.png                     chrome://browser/skin/loop/toolbar-aero.png                       os=WINNT osversion=6.1
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd203872564dc72b89b85431b205a7a3e2689b1f
GIT binary patch
literal 33662
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..eee4a5dd0e5eba60b8eafe522eedb0c91615135f
GIT binary patch
literal 32029
zc${?Gb8Kco-#75uwry^=c6-(C*0#2~YFpcOYumPM+qP}H@7{TzH@W|KpOeh_C6i2Y
za+1k>=6mLZDauPA!r{SzfPf%MNs21{s}%ofFi`*QyC5kk{|bzuv5M@!iu|vEz!R$X
z{wsK9|F;k1{|x~7f0q{c2?z)hIZ-SK2=uU&sIZFL+NHX?VuCZymbEKregD`(Ckffz
zh{LlsNgr+|Q*;{J_}EWYwjujEzVL+x8h{ieIxFElNB~@9Oo9@G35uk~(~brcX0pbL
zC$=zKh@EHl<m9Cl_S{)?n#&QPz*F<}yFm9bzu?q&_V?N`50W`tGI=<{4g@QwW6*B1
z{Z#}Gw+aI$MCcVZ6b!j23ZElb>TK1042s~%=cmw6^f7vjcD_0=d?Qu2<w2;Hs<1>p
zTibp}t!T-0c?s8d&V58vRohkWP}6htEFr@F8zP7Fw>vdpJY9}At-`xVIdkgoB+_v(
z)qC~aiCEf6N5iNaS_CKxg!Qgce!;wiT|m*xH)f6q7x@tKJ^Cmh1WH1nmYbisbLosv
z-^Sjhe3I!@sSd)tR;pAR93leZ4d(tLg}v@h`DkC2M`95lmbb_OKxW&w$_@&cx&gyo
zje8*^R&UU4h?#d(r6LBHhd=2JR~i>H>_G%a0$PaO?O!1xyV`pvEdwvj&xaZUodj-^
ztU%b0Jt(fJHDAxuFOxlbkO<z<{3f~G+hXbC<n}j+oXO1(yj=;DvnOqwxIEdg%&~DQ
zo4GyHE|S|gihc0Gi>m0nOm0FDJsq&v*52FCtU>mTa_5svU=;7LUx(en#6uLT*OOSH
z9nLz&9K?`08cfQ2*UY{7ecsuE9uy3PQx)8-uW%x}juHG%sYEijM1ObPAqW9&<z=3e
zgCNPn=(Q@!@XB3v{mQIs%f)5PA;{1I`#>{sCFq(L)_WtcNs>WLu$I_p<vzPX)0%&>
zfW8LmHT<++UhDJtD{uPb6Dw{6yv{|xg}Kfdy%4lCim9tSPgvXgxpRZ@^GMO@VKq-3
z$UTNW-rSLxpck-R3On-vNuNw+*o&ghkj~>ZaS$|-mnQBPkX20hp*Qc-H7I!Ep96|c
z&}nqpG!d*76pk1oYT9;?(s|HHP?e(Di$0EJCpJ;0(9NBjdy@f=;JZhwt_PEn>lNli
zpwHlWbu=S|f45-6!$Bg+|Edumhl-djaJ%E8DRx#dezCF%fV!mnnU<2|8b@uE<Ulz=
zA?W`>R7G+Ts|}#;PS>B`8o(UM=R)Z3kNkykV(1n7aVl}ls8A^F*b`DL$Ijxq)A9!5
z^)?V#q^3Auq*$AfNRfEisYc5B37%{`8nk=Do}%vqIJzCtWU0QD7$5SOi+1$e3p1%E
zDx1qR1MmADd?ciMd4PpcQEz-ak?K97Rg~u~Dm#KdoVF8}l4v0eME&l$;r(@WqHXO7
zL#$4bUB~kIZlrUE?DB}c_8M1nD*&3yT8`kIM3+Bbbb|tyd)YsYM6?@L=-_8?Oc=K+
z!Gy32pTcr&{q7(LLaX6Y&iLt)B|7v1MG^Oh9?{zj0DQz?-=y+Ue*zVp9cb^gfwH?O
zzkiEPf}-+D%7n$YZa)|YaO3WxqaclIwXHMJYi#5de9w1PbA=BbTj~0{fd|L<s20#F
z)>-#Sq*iGoXM=}Cm?=eK3nj(3IWlrWNXXwT>7ouP{JaPI^<*$!fBv_S^<V_^@VeJP
zL%XZex>RfgO7`qvB42`b3&ijV1CRVk?%iQIx4ka4$2AyF_oFH!ulU!U?ULf0Cvu{X
zbpPs96Ev~*Gd5PwF^DNKRTl336x122!N>)z<xfSMmJ&~g-7}gWx4eq3q7i&Ls~N(Z
z>i7f#<QSCEs1HX)o73}ayGALd$bJ=$$=)eJ1oyBopOBLmDN9aAcXF~>O2A_2S?+~;
z?CQS(BCann+K`QxrVZRKX2}Z|B6q_!(;3z5&u6_z>qyqg87>V_5Mq3S2F3$pVHDbE
z&HV5QfYvb)0~q<nq^+gtXq65^ZfDX6#9i3JXZ2I&2EZQ|B8e{X<jso~lVW(T6%LXI
zUPq&|T`;E)PzmUWd`BfyhA}3fEr}S;50CJ)h}o+BnKYldNli5DfE&grnJ_A<3a(*&
zYzy9$*L;C4df?@0%XzP6t%1wTB`Q2tj7;&Q0^M>Z@Yzg7Bu9<Xw+ppe@MMO&&>7m^
z>Y00z30`~n9>8+0R9B5XTAZKzRr-h-^#U-P+Mg}|i9y&2<zS|w!(t)560bdhJ(eW~
z=xQ+fjDXVahWG0$Zt;)1y4p}m1G4z^-6*;&6WbvQbI(no^Is;eF#EjR0(e2~aW`T-
zN(j!OLoR+u4YZ&~hQw*5|3wW{043R<9$G1QAe+-2#grzmcB$?{>Vy<QpMTr>b9^;H
zH@n0vvyrLL{}am!T2PVW>3lzJv*FXw0Urvyfy>rYz+Y3wfM`etgv{Qi8UWUsK%FpM
zY<gjn=3H$bT=ysDrM0jTn0e)tm47&K0V@e=2&zPy8tEMp`HplgN>&eWcFyU+pyE)+
z;7FxLf)_zEt`w?vciO7Mv{LH&V5%=^t7=)@D*O3}zfj~u(HZ7Y9T*PCu4ZrYx)-T`
zDmRi_^)X`O=2t*!_dVs`?lj5)6K3aOu^q!^tq<)y^g_KC(5HA0U0ORZbX8aj_r{;*
zBdt%JLOZ?SKLh@a;k5`_2C=x2h7elDqmPv^v>HH?+tKT*k`vM!V)b_iT^z$6Hz#vd
zq>&8lMnp;Hex3lt<*DW%zCg<%1nl6}qi*j%hW2^!`oI$=Uv(ee!(0AFq$^j?B>%64
zAN2pf@Fyxhi2V}-u9=Cj%D+A^x3$R>ctvG%tl@k)uod0*@<v7qQ0Li7vC2`zf|*DE
zs`Wpad5w#eb396ngulfIOPzIf7^ExZoeK*UiFd4Y)Cb5c2eIhMM%BRGZ$e20;J`?q
zL-<66w1Y2R=gmTK!H|}&%#H+8y`H!3Kf4^et}`6_&xg&0lD`xLzy)}f*dAI}O#M4h
z!-w64C-OTC4ZC+)B6fTsxpyWPe~TniJ>AodPmY_H<I7(NI+L<<(AtnO2f-d7{zCY2
z-u>~b#HdDbB4WLU6_`J}<=%f_*C=whtmOp#cZ_pVUQ*4;-S!3J8ybNlcp6_|*Oi>y
zc*wiPS^o}OB5}C8+{&uV+NBZiqKYGbb5T#kK-_cq5m<h9uMXVgL^t$CF#xw13>=cp
z<~+O6+$>JKsDyGWSUa+0Jl0trU&$^w)M12h1-D~|a2?&Xq-WQXuU_l$gaT6B!>r=I
z$n+qHhAvsJ3(737SoVox|L&s;nAO(h+z{Hzvtoo;3V)Z2np)amU3<N`@$M%PO|QGh
z*0t{1w5Es&KguTMO0H)HMR@jox(3#LijaweoP6~?oYZ%J(i}@>%r5QzaQZXsUOhMS
ziSI(hh#GEs|M^D&2Px<4xOPUdn=@{XO5IVg4vN>k5C{UqInGi(gzD1x63{2h9PkA2
zAiTnD`_Gk<R(GcJfH`hBmOx1r2p6(na0dv75}4}cv6PI%4<-{N?WcwCd<?PoWS7>m
zhZRg0-v%DegNwqkI4m@Q2me(`t}u^m;(fZ~Ddr(b7;>-XU*MeD-zSzAbfX(Rv1_yh
z>DglJv1pN(5Z4P6uvGg1^$&VAIbdbs)~cEhv(hRbfAuh0BZXU}_c78e**g^5S2(x2
zmvuTbxF_S_^*$z`|3q2Oo9+z6EVUv`<SB<oU+FyH@?8C$`ZWY6`+^*x3D~anLaooM
znbVQ^5#=q`X6Y|U#Eg&-soCnTUeHy$2m>OG&geIocT-skWO;>_7V%JkHZ<&`q&=-B
zQ30VbZV%orv$Dy!2!>n*3uD+Nt^I%uz>P*9z?Leu;nz^f+vg$p#kxQLDtu=i>xsbv
zpRKga6N#y|><rXqlNfKC2)vcd5O6mz0q(lC?+_}0qx3z?OAo1o)qXJgi_#U(2tXNY
z<YouG_QxeeDE#AFX%O1$`AT5P@2}ona&zhe>!9O~%To)6Yn?;XEE=N{g)ETU`Mm1J
z#zH~Q;iIGw6&+(M1eh=lQkXayR8Ix<d>4LPesh<Di5F2}6mrKvFj*2KEHC%3@Y0OV
zbt<21)>_ps1ro}amlw#<?~=B&mH_C5BwJ7m34duhLl0EFhbeLzMmMaQ8-l9#;n%&J
zQQFj2eJhLDEROc05}*}Dbkrj(1xm1j;&L-5nzv)>ACQOJto>lH*oV`sD7v8?c9W;}
zJNQ1@tRH8ckDA<C^ulhdi}i#YLEF?QOnN0i;F(9y93zN#mbw?(kmtBQO2>XDqQFWW
zFS=08AuWF-tZ1FN2V`ES1Evr~x%Q1l)?MD50tU;Px(xj5S~6~HG4gLN=JbO5N6tx*
zGj@|diQ<eP9mGp1K#s6fY|Je&G}1Q;Uj2ZCU7|ar)l|!RB#sUnEVUFXh`1ZOY@t4q
zqtWQ+EG{Gxv}4+`ji*a}tYYKrmQMftPo0aqneUXA&5j-W?rYj}>LRmFRnv1P#n6hZ
zrxD|&%V8DD69I29Qkm&c&u@`Sg{wopU`$o}=Cq`$@lcoNNv<nM>3*ci#w0qE&GtT;
zD1^|g=7ij(rJU<tB0!79q#$dohBuhuV}iH2ccIk}L(B%c5gWhq16#*cNXqe8^P0EB
zbl0!MH%m{*<zD`uW_bvtU<@6Y?F`P+nwiR04dk?a^34YA2X*^v{p5K@wIzD%NCQr{
z+w;g4+$}gH6ixGO&-ij;3l+`F<jWu*g)ND(CuF5Iji>3lllJ8tln@Xsz0=bQ2-A#9
zh4>ZC=`cf5E+9P~(jr^(Yjw?j%&~Go)b9*cUvW3V?$Y_YC2#NJR&(FZObi}Z^5KtK
zb9^A3X*DisO<&@P{%X;%AXObEjOxqW)5|NoHY%%`HwXq}CvC+R{uffZ{fWK#-wA$p
zkE>Ssv3W+gQp5JRpcVUnQ&qugt!owgCPbHXyZK#B+22J7RqbR$r5I3pS6QH9r0;Nq
zSgvRzN+$)is3tYzqzD0QZ_e2SS(@00m^}P~u@{s=d>k&8Dwa#RqKRSj9NfC{ZbRr$
z01MJ-mg;jX#`V!5DjOa!g?*F_$Lz=qKrLZFTaaZ3dG~>8{AE-y-%df-5Y)cq6VV}*
z5%0?2=(@aOtv56!jC0jCbLdLNy?TXy(c9OXDr2u=dHCI2@kUnbjNNz#$!|x0p@|L&
zr51RnZvUFuPl~(bKyowd30j8v^OmZ3qf=P0nieQK#&yHdG3G@9Ony#yIYL1iJ~*Ob
z@viG+F{eKkU3P0mTk-;48k)unPas7VR=^RyvIU0C8!^;Q7xP<6*`JLKKqX^rP@Icd
z{R3ybFcdjnE%gdD8Y3m@Y4>Lk_V+`}dt@`Wf{c!Q+qQW&%ef0(H^{tqEVLQ@8G2G#
zy&uoW!IM#fC^3IWv{_biZhC5JmFM@>fZVO$+TMjj4(+Fk_F}NX$I~ZBF=4TG#0P?;
z;PwEhUzS2RyP!cq4LUSQ#R#x}_1>E+J>!Ze<#0Z&zSY@K*b#|@;-lyHsg2BXu#CEM
zvL2z2x--{NqM$3wX8wy3;QxP0xD8QP{G$ZI|4;(rA0;&4730;hkT&^*tQIR9)1YY-
zOEic_iSxvqY76&eH_H~aYOyLe8LQ6A$7oE|cq-_%EyXI!m8@$`D_j;6u`uB);l}Xe
zZbCqeW+X{`iBN<j$|*g&BrQWgBTDMiQ-J_m+o{(pSEA<+JEHyZ$o?OEQPtIc{hA-V
zQ{TPkrGcf~K7z@=IgtnjFWphVN53&~IZ^gPF{ZQ1Eu@(&+4Oblm|S>{Tf-ELKSz0o
zPlx3QdvA?~+M*LZf|=I2MzwE?i1iuL88Xp{s%k&heobyI0TuXa5#F;9XmPxK?i6EQ
z)~ga;PsN;R3)`lo9c*nZ>Ng=mMP<xdt3*q`2Q{o}H*>Dn&=oTN204tB50}A&5^&l3
z=+-t>wq#{2Yg%)%+ce?Z>4?;zpSY{zS*u}M)z5jTXBM{8b6+Y=?2|oW+!?s5c>OpO
zBMP+;>ajkj<6PreJiwSrtf(YZoZT+0sO+x|d8V7^SCT5#B(~?HjtrXYjla!&nrIq8
zH(b1^G(#!nSm%+6Bmp(A$`AMX)A4pOgIsRl_+#-H$}}dS@u+>|4-<53FW8?_mQ9w*
zzq~(^$xTA|Fz^p1!be^-OEAU)<rh0+8n{Ik!MT*VxtppVLA{{0O_zDu|LuRCj_m*~
zOn)pxMd>Dh29Aa~!=<bjq6?x*lP=BK<%a3q%+@V&MGKaW)lN7yTg$+O1~oH^LWJg(
z_*G18JB#F%oCa4yscj+5g~F?0JD+((4zumrkK6fU-%;#w*Bi<S!B?Xr^sJQCdqb}~
zu?u@DeQ641cznF=$d8A2QUPI9FXmMUb=X$-(Be=yya>9CkO<8TP>JFMIj!uRU@09`
z^hxw_fgPCx!vz#<v|2H~Sg*yVz|z%~<CSmaMB!$)%_ijr<|r5-ird(h-7~_&k!;3@
zFA2VN_)43nFeAXUMl(U)FHk0O2}@ycqmwV}!@Ej@sE?RFeTNhw0U?(t_{Y6y-RW>0
z{oSIAY8#`yel{K66?R8_Xa)5g@NU2%I5XnqaJzpwuzWHd_iJ+XgQ7%)Vqz+XuKt7F
z#g_-yC;1we3zZ+TxxN0EzvOOmC5y#fV<scKnhifJrc`R7PM8yx0!8Ls!}Ww8qP>0x
z)_e8!5#x4?ZZ9smx2;g2-57%EzF0}Fbz>?aNN#`?=c=JVZ!C!j^~1@z)3iLC`|Ytq
zCXc~W97L9AQwV)rSGX5<nkIqnip9ii$`#((x=p5wVicA>%W+=dvy3E3)*C>+Q))gx
zd=!-3TOdtWlN4q2i%ZDZ(epHsQoy(<sB1ELB<Y4iiTg4Am*Vc9jWXu*wHX2%!UQC>
zvj;VgYoTZnn0Lyc^|qYS`!YCD4^(OC@p1on&?|CI6hFkEC|1j%9}OrdYd$~N{j1WN
zwp{2Zo0@(x2ami{4%{1=xT{wz*R&Qq3eW@<iJ1SbBmEA<E7R?@C%x(}<zlj%I3oP>
zlrWc@VM7O-P@WVE>YK7ENSdqTk(*?5!W}jX>Ls8&SF#76ik*q+uO(?sv#SB_actVR
z`_OOMG+cxpp6<(H7wj+mi539%{uQ5SU)$@TYx9Ch{R8~PP<&POk#%cc&(6s)$VByG
z%kKd&`2k8dC`V%G^>bm33{$dU3tGTjjbk|<^Fd}rgiTJC@R?A0>=G=@>sjM8V;~kC
z@RVDc>vhZD=f7%k-OakRgk!6_>3uK(sCYC*UVJGoneHo_*fb;Sq01Bs$L;3PjS0-a
zuR$iYe<gd>R%xQ24ZB2Pp>IK3CFm+<Gng+Py>~d*^3AIoOj+aGa4o7}1}IKy-?r)Z
zn#R}liSC|>l_bE34R~d-86@sPLD9N055Ama>i=QZySIM{XXGU_diHL9T!D0!4)fN!
zXi|bT&amK3Ew5E4%6KMn{xqMspDvrrEK~wQgDQ>eKs?PIx@^L9YmQ$|-U>6TNV`N{
zS%8-cN&ERFZmkoF(o{$Mz)Q|Z3ZV~TO(XK0aXh*GQw4V&)Nig<?nHRFf=rnp+6Rh~
z$IfB)eM>ystD6>?GpB83)NjeSiG?T3u!xn8Th|{`zw6MH&bXwdqM6vX;CLuEe1C?R
zx;V5hw-C0Tix6sD%}V2naBQV<3G==4DCw4bWUYdtPT@&OshlVQWl++{tb!(`l#3`0
zLgGKo<(GzW(YZ}jmDC=>eQhIO<bXWbtDA-6p4U@~4%qsV*lkSrV22O%&QE|z{-q&_
z2+}%t3~C@^bHd?;a{u}pPq{C)7@3v5jda!GM(ajzVJg1R1V&s23ijP!>#CuHxbvKi
zNtexl;!9+DF~zmyf;{h;V3MwrxD88vSMf(ZV4KVH^bJ@FTU7|VbJ#0@)SA2Y!^xg<
zqDY~OJ05wz3gy=`N^X>|^L&&DcE}sl;C#%J`HDvYwD<?gVZ<DjH7M;Edb{-C8}A!2
z{X;UUJQwsB4CUMU8*n;Vz4F6i`QLOF<~{upivygEz0DA`_&GI+#>r6@KyQ{OAYk`_
zmVvF`U0Ce(V)Sq@^Eq)&uN;6~DS&oksZrM>6Dzbly)6}q%mQ=_zQZK~455Dxamz-_
z!aXnZE7eU}HBp)+)Vm@&O^fY@_u45ekL%k_#-NQukeM+lpy8Ydn4NJ2Z6;dcbtsXU
zabyu~g+*+mw>e#s`D+~gJs9SvMj89Oy~ZuenJvlN+I1%@*g-Jd@fgz&bgTeP`75;Z
z>)Yx{KMDjR*otEj{J-=7`M(4a2&zl}^Z@cddVq3UyVUSjnLi{VZa|z_U({Rd?D-kl
zk~L!^h(<9c?NAsSMwMA^nwqEwxNfD@txhyDA(R{BWIKI{gE~T$lLn>E16PJJ20t1)
zFr}>7)>{clA?nxIj&A35a52bn=Xs8P&$#EF2JSz5WlukUj&ptMf0NUv^ryNfyLR8x
zhq9U>WIOtPY-a4vK|_TV2K?A{`;|f>PC$i6e;{cT;wWnW>;Q2mtcTVh9tlTVQsSF*
z-;>h4A*IyY0)fpmwvptvlVIC9)`MlG&5ZxpWL4?miLE`ZXQP;|YgstuWiXr@|2IEN
zmS_@}mbeer_aX}*r!0PTTlPxgY|d~u^J1v^9@SZC>ypjd%BOw?T6`Q{i@oF7AtI`c
zlwi4x7$zNK!=3Zd5!GoF6`>G*U`OQu%$}$@=^ZVlPf_w7|D_WEKi%x<Q|j!-)5xJ<
zo;c}PI(G({RSwJ3UR+<b>6p6p32DAC$)sx=cEt<s{nd7}L8WooG}6=YS8!e6pCKD@
zwa!oDESdeI{QY2D{J26FxjW29D{b<P^`ih@n{}p1Rh!&$!1u&pGag>lTKA3SK+E>x
z{GnY{hyfP@fkr$j76XpZ)YE&xP*R%-(W9Sil!msxD!TxUKIrRXznPed`p8QU6G{wX
zMGjIwTC?y@6Ax;z-owevCjQ~Zp$idH_V(~H1Tl6S#+r~KVk0|mEi)ImG2w3On6+%5
zL_uPoWjDF2yWBB&*VflMZ{eXO^gxNB%47J$@)xqz;Rf@WFZYQB&SxLz27vx0d2qeY
z4B9E5sVdW%>US+VDe*6}x~$4v5sH~bbUd^owiWICtklLp`Z&g2*i>#(BdSv-)O)W`
zMUF(~q{+RoL--f6*Rce#Yyw`-+cLuA575B{L1(s*kl_e~3y#)|<PL*ZiokmO(~ApO
zm^^p_r9mrRH!?FKPMt5&P>ru28-K&)q;5#|0xB@%+)~{Qua3f(^a;7v@keZu&6u?k
zgLvPmC{l6S-v87sCX^BCp>cwqGpwg*kD-rmk-+nXXay`>GV(%;4U8qQV>fc`^Ij{2
zZX9jZbz8{wSd(Xmi1D+t+OO}{)mdtDN(yQ4=GdM)M8wb~-9toRBtIFRk)TX+=e-5d
zxtp`2-sP<qT3#4LtE8nPXR)w@3^pbW1=J6TSkQwq4xkT3?1vp(4^nsEKUNt<cFj3-
zW;WO#eOvsz8NB-qGXUa)tXIpepf;}en@7W}L~^@Eo!eCJt#@~J+J>^cinQYBZ>p>x
zeNy){=2+IQ<Pahvjz}nY6^R)d<OS~tk(9O4(+4u=XH1)=Hj)AjA$|#RZ!qw~^Ku(X
zkf1n+OJ=ZeMXI-1a%uY&U<Q={i1<a;0kWKr4?)pj<|@1qUb#I1<w+n4LhcBFsKbW-
z1=YvXf-{Kjr|N+Qh`A4{)3D`=5A8V)D~vFj>ZVf2O#ULvdfjC)j?u-@Hpuh|<e_i2
zn}TdUR&wurTzK=|HXoqweupb;37|LF6A|4P{{wrlt1#^Wym<ORXN8|yRJcdSiFg4F
zZH{#O+W!te7Aadpq^MU0cA7DjH)CCYbn)q;mB-{9LCSi<yc=w0xt7wnC@O*_%Ld&)
zRV|$@P4T38KX|-1W;4yWvPtW>U4Bkj2m*u!UIaw^=f(ey3H^+$N_QZoXFcA*z#%2c
zJ%txclSthKu?Vt@BjJPr6UY;tNs3Fl<zRw0acBt9{7tW4=IGR{TwRZP(e^#Y9-BcX
zr%Y6VGh^DHhaS(iWUHc)j*L=7Y6$X3=V^KLqys@&=Amy45kL&<ptP+dow)_d&F_Ex
zRd0VS0Xk2#<}f%%9lczONFrSGmY-KSp6BKb+lXXF7EqUr0~26mNS+NN=y3Ew<bdvx
z*3Gbf3iUkwEKW6X0@Q#PCtQmuW|(zjuYC(Ft55}gPj+<|c(@vk3F4YyHUt?g(3nj3
zVQPl6QmsqHukSC#iG7+Xa;+o*w|o)CJi&Q;;3C~Va&b%PmuE>)j6OjTALXO#v)DL!
zs<c(bWp;P(+L-SX67^%m9H!X0RUfBpvA>X-A6&XLra2HJz3326x4#c)ygs^qu*55A
zU0W}$kQBHsG<jZN9JJurJ^P*Wp<bzy#uXd-8e=*pALYCtSu}-w|C$k4*UX^+sIkMI
z!MBLYU@ymMpM~Z`xj4i&R=b83I2(#T{fc1BjkAyQ|9VD^s5P?QyFkv3RNxIKguiTt
zPx2spkB+ziG{mJNdicQ$OC#PC>INsO&RCkq799ok8Wx#9sf7x`X3(<mOvE2Ejpk=1
zg@hx&Dt;t|c(KhL9~S|Gc=w8#SDp<X3K-8Fqs!SZoPTy^4_aq&G)6-RgR8IcSCq|u
z-q%%l7l#P&*fXZF4^BdimA!ZRds)%LoJPd5@#?F3^-mZb$yv6H6G^4q9@fdV7T-^&
zL>$UxVmCI~4#Z-XG&pHSooeCLbupHDIo}p<Z}MCAX+^Yo<z8SWpeF=_n7kp|zIcqB
zz>ezVvPBV-{>}T;l#NiqNH%I2jzFiv?G`4<>~KCIhfTMjdjVrbjwBr4B@!^DS7(qB
z0wFj1IzdM4{lUz`=kh?A5QGAX9>y?Wr-0oxhCZhM=dmNd(wakmfWr7;CwTlIw?7O<
z34hgz8cPdyNb5pCeGeBAl}W5R;EBeL^9KOWU;6UdaU#1bz;-XXdK>h`n2ZbzdG5bI
zT|oaYc|%%=;6E|Y{Erx5{v(FpD$3?~Q5>)a#p5$=u|aahJcV=zRC^quNlW34`K)u3
zE+C%P$Du0czr`*_au|LV8W3t?Fj`^`Vg=D!%!XrPhf~GWK$nSyFt%#KkXSaxxMvGZ
z=iV0m;D4HkKIK2=K6bcv-F|+}y50o4UOxZc#Tzun0R>hp1KpS=_W3x?^5We>V0t<q
zSN9!>_uSoKYoC%Sex^}pT@K(M^L|B!B7fHXO<bQ|Y`{`!cu-OM4fNK|@7xr9R>eMR
zERM!ZrVbe{fYgAE%Kjqh>a3Qn(f-M2>p5gjFVj7nZFSM`fM&~)!obPS(Zkwd#ingb
zn?5;~U~InS;$hSTlio@k9+^jugO1YRvZlVs7#vyTQ{K-LU)a26(E6*i`JqHZ#`TrN
zuDZxv^`UCY;`Gy>AXMy<=gvIqykYy!O&IyZ`e$gov;FDcG9FvKz*{W`08)D*kIb?p
zNC3O|cqHiKTia81%Y*9xjwC24>1-4^6--#au~K&B(x&ZV3|V4^sJMKDN~eGR6hj9N
zWFg8+ae{ha?P=^xZj8H2Mq8tVvVsYn#?J|@i6*~#2S37~M8D6*0yTxe(rQn~JAZ6K
zQPyn5MrZnz!QOartcR;R*ww*9ce>8SFn5}fR$L0^W*>7try`|zyPKe&yF$5S=hmu$
zd6!YY{YaL!{%VmGT3nU6^HMoyhG2M}e;yR_5s~9$#r(N`sh!6P@yfNe!m}iJ79D7C
zKaQ1&=0EM0p)oRgK|2D1Tv5L<NJme9d`P!eRnHTZ@`RV;Jym6)<-d0#3n1;czVogf
z`ja>sCPfLS-Rqi8zd%4;GqhSRCB>71Jl7|6x`#5Gallf{p+JXSKz5b$fuKm6_+m(!
zl)s>@zB5;Bd397ACizP`qlFRsFErALouzYHPltY-a;06o+r{2#sqFQB90Jr^vANwf
zn<$*7TcM0S-QNl4J20(~;6&@1UyM?_16ST%730u)aC=yITSkifGK40Aper|%ijCfd
z_lW#xLTy%^O?am_-+#3)uFTpLNtnJ*ikEeK`>-(ZD3aX9qWX7Brce@xSWAy#g_;6k
zbW8-)!1#Q>__1cxs9qu{0bL}I(+bl`$YmyVkhBZ0wnk<QbyK!w!&jr4G7c`vF3!qh
z&DL_fctftHN58xvgc)Om$B>krB?1!yCEvU(OzzAvJy3S2Fq#-C$EpA{T9BrX!E{S>
zrLYBfvY(so*kyvZ8I2S|JAIO~;~}(W`KajkN!4kw`dZ2ArYD^0Ck*10&^zX08V?>p
zu*H<nu&k%jj_T-G^bJ_#2(enah?z-QT2JjuzKKhOD`{Dscd@iSM0~Ro!*21^yel;9
zaCE+RgUh7sYud}Vgk66anM$NuxyRMIqn-v@S)VoiyB49WQ1C+X<_u03Vzdr&+G8^;
zBDP&=y4a5{M(7?IC^6cZmoM*S8fzg<)8Ypk37yBD+8MZ;Y^yegn6^mcD<{+GaYV?`
z^vemjfSrs66>E~Ivuo=aS;`&b#z*(8S7DSJyzc@G7&681lyk`?Y@&Q8-1NU^&#!&(
zI(eVZ^TwXeNuafRk{jEsLKUV^{1)){SUE~8sGndixzu#dE*cHsxj)b$UzBx%etdI<
z7RJ9Cy?SXi>yQ`)l<EcFipdrzPEatoar1fV?;ct<R&BezM4W{SQ9KX1W;{~U9ZK>o
zLe-da=O~Qvc+YADiVD;ZOM2;W8C%$;iAHeCKiJ><m>ueLiM~M-ApTS(F<gQftUC#=
zt{UHnxv_`aOJdD2Br){$ffEzJFth<xTC~pIt=4w29cZz1{y@jx669Ij)}1wJQ&C!W
zS@Rv#^2Lx#h=d-f6H>Znj}evF`5<y8w*|`c&<5?#+UJf5X%@F{HVIJK;9CC4d?1EA
z%%FOelGppqCml8eshHdO6+N-vTXKP8^Xrh1+O3_u|AJ#ag}=33m89Sj8Wf8nLBy}y
zinit)aog${TW=$TTsUzMRny#D;RtmFRtuf~+ROW$7SDLHM#8^>S}8Lj^KE65yV`*N
zC;UJyZF|t((_x{S)5a{LZf9$a(5hFXkzc3_jZipTQP|wJ?7foe)$3S8#7A7{LI(3T
zx7XPnG&Wls8C?++nE{m;;tLeXp|kTtW?N<Pma%-!dJQW|nbXJCzCCH|=sSwjUv)8p
z!l98hG(5JdLPL0Y-d&snkd1v!Z))x(ZH=l)i_nXrgU{(zy8cvCWVy$5@`NAb1fmmY
z{u*y)6I=U~bS^@akkB<&WpW-d<?O#Q$;1{af)BN#&1*1QS<h?i@*bZ1(Ex-F4zV&Z
zAtPk|qD;jYzSOshzfwJ7Fmm_JK~0>z*KS%O$YkMDXhJB1AX7F#A~3lCbY}1tSF0@^
z;}X=<`mD_*8gZF~+^7|UoX2=_lYd1x=T7=6_S;8}$V9%+w=GD59}fN&z_ToKDP(4M
zoaR@=#Q|j}E%^ztjf`e$!EgWtMlq7V9f9Xdo2}TH*%{eE0dPN8X#Vh!QwR428~)WA
zr1z?Q;HT!?9>}?|c^#EdpqDSxs-ok)a@moDo~h<9XJIqNNGScC!n?~i2!wvaeOp5o
z*_0eX@Ju+-jH+@_U<2U%F~T{c1>Gyfq=<a<;Bnq~@MAmE96eDFqVbn(%PPB-eqbAz
z@cxcOZd80xM5xv7`pX9*hsEd@8uX7UC4YUyqy_#IfS?Y*uZ=K&>7$GYh8Q70<P!O*
z`5}m92%(m|cfV(&+7VZMgG7%}=lG{Ixc`?dVE>ma;<VZLA1K8BM;37Zk%g6t$}%R=
z$OOm`hn!`=6!@>-Mu1-_yx^8PYGhb}q_ayD>=Z*U)@e${X*i`!vUK9fa8w!#bO{}P
z0F{8~5)vdBnjg$Wto<NpiiRn?3VKEfJD0CafrKcbMJA6D4oh!XcGKMNUgp>Lmz|0C
z^Dit2oJi(O$@~15K2a7&A{kPoTgC&zV1E1b_|vFR-*NXf-x^3_w=0c;J9g9%9bEf?
zL_RKqP^ad_V@(;A)^C8>14R|Qc0|9t+De_OP7gjt^;$-c^R6E#5cV$DCCJ;YS+J-2
zVo3}0uZ>UIna)T>?N~Len^4r2nLRqX_>P1o@pX4!6RDDNJ1?*95mm!p;J&2QT@DC;
z7FSZO7S)Q%=lYz~G*XZvTajM~w|^8jvn;=jChFB;RC~ET69nD)K45VO`V#w)sX*7m
z$Cp>g7RQ;bT|<$SHnQlF6tQkwgvpJ$#j>V)?7YW03?D7T58iX{XMNxv$D&-9JQ5G6
z#faFgbb@4+*Y+ECMqScMB=v7~hD;NZuBH1>wM}iUH`y<D_wD4?`qU>Su(`}#2%8mE
zehVe8!hT$4;3G_&U&<y=&52Y;e%c8@I6T)q!N0y%Eo3Z0X;=3PMHCz+exu(V!4)VB
z6(3`jW<n%XZZ~;rJ~<mJJ-wC<FvHQ!AFj2*%jv2e^T8m4be&4UB+5lecWeGFsyW?n
zhf3-0B<EHFUe=yj%Th;_q_^V@D<D5Vqev2`zolavja4~mHWePwP))jBk?6~M_h3sk
z-H53$=+lI?``%6PTN$BGV{tlbg^-)t{m|7sW_w2oMs4+DNhz;(I(hImA&>?GRP67g
zV?TMwBV-L=N@0bXz#F#$=t8LT)NaM*wzsL{1R}5hO+W4|#kPo#FZmu|zS2P>M}Ap!
zXg?+%{CrVicdj|J9xq`Y?yt4qt%t;mF+coeyFuAoG5MN2l>3YvPO4i4=3avoX?z0?
z>`g2>n4|pg{)nEC78Tifm#p%|Ivrk6`o4+&zNjrXFh{W)?MyY_a-@>yM8UtAi9I_O
ztBgOL;Ad+E<yd_e9$9VVAlpBhdb=?N27AcEq>UsY`uctuH1_;hkm}=#q>ihIqUKad
zhh77>8=_q-^rDc9;bEvws(X5aM&k15dUGV?UUAN+FU3O}DqFe=d9;Tn+nq$+xD26?
z?7$#sF<6~~)3Jl`989i&s(5wHx_jiCTuu*79^QDGQf3x|CTB1q<yZ*`2-!$T_$wdS
zIGjPbTygIDY*&CHjkZ_l&Z9i9_=Lf@of3z1d|m1K&{Q2B7VX!$4x}bmkJYg;Uc;ao
z;=oz)s#@BLb8E@r6S#ah1z&|M)yFz-qCUoeii~mIv;$EmftN{Ew_13}bdg%QXxSN*
z;UMILM6P9dE+i{fOReIJhvc{esT>pTX^sHsBE~);WhvfK#XiIH`Ll)Yqu=b10Iq(7
zS1`o|y?55%D-LWwo7)KLnpWUWRb_FJGEq`zQX`~AN!F_JQ5K(6FFwePe_h1Y<qa|A
z&kfktwDhD^7vsAdox)W~@+6P&4~S6Qihwy&2929$C{LGj=#`f^Za6H&uA?L8?5zE%
zfz`ld<eU`fh0pJVNI*VU-LP059##u437(}WzTm6s*vRSI6DAQ`<N%(wCEqgTknyec
z(t(psNOZP3OZ^TM6RGoRUkYikr^W>#lAf68_Tvi~-<+EG2#XtzU5Pmnm{cxZ^!__p
zRnqWtX#st(RB^us88@h-m_LAz&Fn5h&{l3rAioIMyF~b;p){0k_C15WJ^b1{4ueOH
zbBh)d>SmOB0Sx=CDJs|Ezl!-IuMmiXUAe}EZAer_)9*;bGP0(F`goPsm>#Xu;Z=!Q
zpmSL|ihG-#O-ov6j=Hu5D&B+CEK=l6_JHjBE48aIlfpthW@ub*&44kVED4$mbC*MB
zeUB8uC*hnNem{&7I6|ggfVIS%ruyCZo5}XV8dW-LD`;Xm#HYkxAecTWh?<bGL&(-I
zeWuEfG%$0aX#DaFv0d5s55wOT@(Ylse0q&W_i1IwwIh{lzZ#IdF<csQVR$`$m5mut
zr3%-rP+q$U5gPZQQ^ID$zx3PGCt*^oS(`cwGxn;B5(5Wth@{d9`y}3t`$nB&SxMSW
z#?$81O9O;_chYC0anEp%L-A0a)sZw6{QS*c&B;PkAq8Q@Nq?9<dF4c&(^%mew6an>
z2=#&%Brbw`a3-=faqmm}-0~AQhS(rz)7Z3KP{=LH@nIwoQ^}>4@|quTu&X0e!@LeF
zY^<6t#(BiFQfzeWX9$Yx#EC+S|Ipm1x6IBxu1A;2byg%}h=6R7UBh|D%bA;7i|(l@
zHBWq=Hy(Hv={Uk9g6sxaz|_)^-NP`?I_(lR+70y4<WSh1ho=PXk1Y|!w@vd_K7+YE
z8wD1k!3`PzdCnCILOts`&cegRrGxc6tZewebIcDR$oaX=Pg=2vQ>{O!ed?PpiM#!*
z-*_b%KoZ<_)LZK4V)G?ohI*QsE-ZTqkOgf)=_Oc7&^xvL`oYTlhms8soMk95NLo=*
zig5jA#@O+x11sLnLI279QIl}9q{vea^B~qrV<T@mE-l$BuVJq-5>`L*9$AhAcx1|9
zlFzj<EAI9N^#;H#*y|SUXhM?XFB63Q9S{?~5*^}uk)TPui+?nOxdWPCX<)T&fjmHb
z4Hqe}5CAcTtu&oqDuL~HFpREL-4|c-S7ZN_JUxQ{VvE?4B;p1KBM@ra(JO};&$EG?
z1fDy8cNov*^4qY5w4%r2<9f&!q&<leafeKj^uO2v|Gxwpz9!-S*unWf>_GU>j~Jf+
zIg5#$0%5P+?p>J%U2Q}-o=3syAJ8UdIjCD%p*#4t#8f$+R5q_0tDA{+*`#Hox-k33
zGzVDD%xjYVrI|xdLP6nwBMC!uhZ2__1QD=O+Ov7>8aa={Y|Xp4D!2wbnwUJ#xOVk9
z_UgV4dcJ=vWz^3K#S^=L)gxh#;xwD9c8fb19=XTn(__f?y1w^&9)^M!H(<q*wJ6!%
zy14INZsKxY<4ErM2=6@TIFg<U>lnvB?usk31AiC>62qXc7)XsJ-Jl=S?}3D1qkNr|
z#;rxmAr(!p3_h^;j9A5kS3~QXQngu}=Wb9k)YSYSMQdXg`k;&-#N~eVrL)O_$0rP|
zVl{nScUO>gU(qi}z*=fjSDB5FkznN?&{<R)QZ+XAK-8T;1hJ;r>8iROdG9}qgiE-S
zsKFeU0CsrZ92m)2DJ))A0N0zyi#hxW4RgHm${L$>MOZfzlRPWO#vT@2Svqe@>%Hc)
ze0H+KI%Y~{1rabT5W@*^abAsXk`F^<^SyJ{PYi4q)>8GXL8z8G97zZbAjzbwilJ*>
zYt-aEdQy6qfHK?3nIoP*FLJN71&C+bEH;xYRO>}d$%M{eP%;xCig2kBsyVM-DFQjw
zo(hD@R4jRctGzMQGB26UyPh?w629}X2~Ff!Qs2`)pqZuD#F^Uj?)8I`Kj+p{h&XZ%
zdFSJL-sSZ^60i#h=uyV0j`cWH3CF7|1k;ME1S`8d<czP(ee-Yc0(V*c%36$+-~Wh9
z*%|$T2+UgXxp0c>-2$?sP&1~pxXv(-;me3ai9tjnD2Bik+^GV>$aHCPIndYXlBVBi
z9{bUg>DFx5LcoGeo_+ORT$`M9;I(2ORR=AVm;L4up{9_S$UzBJkARiEvyNo;8IVS=
z_2d-c+pl4VjzLC)UjCxD5?w*ko*ru-{qAc`YKRgHO^{k`=bs`)P<HGs(_@e8!&%C>
zuD%)Sw_@`4nQ9{a_7>#BZSMxQ_D~80uUsi&f}k5TrLqUqO0qjL3Dck&l1_bHapg?#
z>U>H(%SD}<<t-kg(4B$k<S6uN*CS)h&d?`!Y>2Q*8w;DIjR+(n#aA9c#~Pz6h>`wH
zX?a);sTevRxjjbx`>ou2Exd^>!s_sWmkOcy!19oLlUFISp};$`z{1saTyY^Ts%f1h
zk%OI^5Z&y9WcF3rW0fKV80zKUV)!vxaK3yDwt;Q?+Uc%*7r%`1ti+?@Asxa=5?m(=
zQtjEBglmkSn|$$4IJ#2a@HH?bOBzQ6Y+R4}V3m&q_zHr86r)j!(Bu<2aT^I(tSUZr
z^Q3Ma<mLKMy;y#W02(9hOC}>W=TR7nTZ+<bHb7Qcy<&fc_@yHiLbdmo@`Dm5I{zvL
zAY8Y2)Tw{WIoH>67T-Sv13N@5;iYY|LJU%|*^(j2f)SD_=)Ze^8RslrQ1VUyRt4U*
z^pV6n_Km7n>6e*%wle&P+&$LrdB$@(=O%bGu2Vv|d`sK%MDjf>v47rkH3@+Hnai)<
z*nSn_gFj~!2f2v|<CkQ=P<pL!lNW;N!KN+JsbJ^)y|ZI@@!r(+G)u}dX2>MI{kaMm
zFOA0&P0Xj7@N@r=)8uQ9W;8;~3hnXVYw=N-m@BX1=u#1gl=v0U9^da^UjM8wCZ?6<
zoWox^G_}HcIjSWnJN*Lqd$$mo8Yy2id_dB<vZsQ*tj|m-yV9`_I&=Fm=Fp|_<h8N4
z3_hKNYjkB8u5;UaudlFOn6K&aTLD~B)lvQO#r#-Klo%0`hRsYbps2HX@Wh}x)Hd%!
z9^@tpS_pb70rOa|>{VymUZmad_|`6ob{g{VF_}(}iEX8-wZ6s;@0YqnY!^FF_9X(P
zx$kX*ze)5Xj``OB6;QwqAc59meDlcRHy2OzQwyl6)O4X6p87!~v=XF<)9G@)tAiG5
zM#ztloho@`D!25_p!+P(fYUlZfCA7-YT@}P7!%B1Y~moJeX&nXqFS<_&q%3z<@W($
z$E<CM>Sj*3&z(s*s4iPi4@J+I%o2|(YxHLv_G@fu`jkCtoojYA&Ge3ppcq}nri=fP
z<X4DU%Igp#RJckXf-if@zWn%t>B}!}V#v~f*f~lYGlBzJ%&hhP%k-F$)t<vMuumKc
zdOmmvk_&xel<Seu8<9&>(o#k7;0%yoxw=klz_gH-PQI5+OqG`kVG~$oA81eP>x+s>
zk}#57A^U#Q5JhCds^XcN&X^X_)WqWeW)-%m32kBWckXuZuEm#tTQ`R?qNH19007Zs
zrZX^+3C7Y0AW;+ds>a3V2ZcqEEIm-?G|ebydrog`4s<~>_W-l=FoL6ZYN^oIcshEA
zXn<ruZQ@<F<y8_w^VX(GWX6D^=~s+2>~+h=LC`m;k_yxRO15@r<v5o#K;&o3v8;Pt
zaIc;M9mk;$GP3k9tGs?2m4OOm@Ok~!mEhqRl#+HyU6=)!>rV)4cZ%^}&pD{(f0Dg`
z23`ufmtJTAdHsI#`;~4g{A{WlgV)y~r$`+Mw%XbZyj3Gn?Fg6;BAwD6_CcXR&@O3I
zWKf`(%#uDz-z=YVIU?lN)>Bmk{uYnU<?NZd^>QvHiHU0;-w70qGwJxOBsPSk1Ut8$
zAa3=tr(jvQFRa_nS%tMams|p(u5);NEJPF=p&>!i9bb4l?KzI(d|W4h`G7#u-k{9A
z*UyxUpe)0GMc-21X&N9FL*BFEt|aB^=#iH)f2<q_YUL258e{eO`hX0C^`U3i-hKP(
z2^fI52uk1S+jU^Cmd<V#{1-G3|CfBD5$oo^PHH0kC*OcqR5`}nqG*R_vx(Otw%5<e
zrD{_#y=EF1qJl3NIx<Du52R>hnWqUu!fjk^qLMV4D?nUIfEbiu4})V1U>1#iR(8K+
z8V~4T2=8#Y78ooP7j8OkZ*x9I`WrXpR5bs^x~<dkEO`7qwJ&&F5%6989qimJREhy_
z;uruCZ?;7r^J9DW%M1s#>(d-2$O0UawEh}9$bu*Z2kUd^XrWqvElU%l``K;q+Le&;
zbuwzAk5l>Q-O=a~1Kb`3Km<JWfD5GV;i$?tzCX{?fZLD{#_LY(>CV_Z?RhE7RkfKX
zMAt@sTF`6u>Q1NBx}E?tNZf~b>#tUewC1*VYi>a;?|bF}I5PnGxEI*m&{vbPBE?%5
zuAao<Obl#7s^e-%oY`yfr)oFPnZ2@4w<h9zZqTX!o#lS1>AyED=!Y$X*Di1W6G?t5
z)BJ?1L>G-1ihTHt@verWW@e?ebdba1H#lsuxgSgmzIE34qnd&*;d!fyc`GF0`KiKJ
zTZsmZX&yxH!~x--aL#}Z|E>A2aS~*sAtKlFv}mPccq*E1UMi(fU%w1@Mby`g@^`qi
z@kc%|FTVnp+cJt+6;{u>v#`_0PVnPM(E(TFugyJ@{uQgEmr2@tdt9NjDA+LS@}h6+
z)iu}hwknO>n2tR>*cY`8%WKT>#aiJx$yM{;t>@D`e72h~o`x%$cS)t!V}r;09O63}
zypfta4a3P6XFSZ#iYafWiphdII}dT<`HDsE1Yw>nb-(okopB5y#5cBOgT~X}rBSwc
z>Ch!7D(XTyCo>9tLN~n5PCd_N$9~4Lc_kUpITDA;d0rGo3$Az<w6(pL8B@5Aka%f#
zjYUbE*m`b~XSsVXX}Zja2Pp15Koag$oVJ=NOfj(U@z(IR*U<>&`M`_`%Q7f;k|mUJ
ziZi+Gmj{?xF^}9oDsJhPUD@FTn$#EMAE6}_eJ~2fRyhblyw243SFN!7j-X1V79_%E
zALFi^SAoC2#eu9|5a;UTpaf(n;t`R@m8sJiCta0v?3fwC=wplR+-Zl6GDl^}AO|UM
zDXk_Lx8(NhLee^&oa&C{Dg`P|RRm(6w7M+5uOny9WLEc8260s!!sW2-{b_L~YqfOO
zF&cvn#M}z5(k5YU{R!vv-iovXgoKiirL{b(JcbAN7<V3yI4R5~Q2;Y3Q_R(QR3>O)
z`mF$n5hXt^Z5zk$%h?HSEVPLt%96)9p<#1g+;MrMq)@X+DCX74q%e36j>0feYiio@
z$VdAghes2qjI&~EF^oBm2jp#&D+@MW+G(=G+&nJnIJxEyyiiiWnW?;WStaq*59^(S
zJG6dI|9%}zz;~P}@4)tRd>$B)vVi?!f(102evc~8fa-RYG$X9q7x@ByItOj>ji7m^
zGe4M29%X9&iLL3-w&#p<Z}31PiA;G~zL<xc>0P#JKw203N#&pdC}wVH2f}G|lDMwB
z5HSkw%59<c??VbAQcUy@pMU8U@1GXXtdub!J%ksONqnFym82N66H*bv=W5TO(yYpb
zav~AZvSkyGz+y%CK6rK+Lw%WL`S6$hdx+EBbH3jfw!%nJX$$K}iJ0*cBt0I&OB$sd
z+*>a;bMz@luMQ*S4IOJMV``2eO6@clm(Yfyd&P&#K2nS$Nc>$rxb2Q*bR|I(55AYw
zf1sJyZ;DOU5T5J0e$2Jssokf(6M0y}F&uLq6y9DBW;nXPSxxa;VRdG5VK>`vO0*lL
zUy8WQ4c|TDhR$3IZ2I;9@eF$NJd3B?TRZZ*&x<Irm~(<WV(5#D_{lBKbRZ>3yz~Ho
zup?@5m(W7ZkwuHwqIkNmBJrnmrufYJsNiZDbD}z${NxHO*<9^2ASnR=lGSy-DUf;;
zED8Myw8GNST?ZqrPrvHh7y+|8EJk>QM1AhaVwec;EQ3TmKQz7?+;3PZIzjzcWA-0^
zn+1OX#oSaL+qS36KC|=S^s$MqA8ULZ1WS7@w$&Ca*=vp!4xoHN_-X4ij#xiE0OWkE
z0eoATrvxXdxw;uNYC+RGV?!nI#zBDl0p)Sdi`n!)29c@N32!Jele4q(TW<{foJdj(
zaV7nZPS_D%XkI68Aq>m|lm(C@i_^KTTP_X|#t&>~OXF%C>0TQKxJO7OhoILF-s+wO
z6Y;-b@ZYc!5jwLDFAqnpCuu71iX)^^q!*%@bTeso>Aq~R@yM5pRm#<TW74#jIS(3Z
zrr`-b#B48rQ?LS{0PcvLksaP%J?$^IJ9ExFGWBD!3ip5`!Q>y@dq3zdZ|{9-nL0}b
zmwuC=sj$6+fb&{seXmtF=b-gV<0#rstqP!_@}sh7jLLMXdp;kZm+9%g??U1D6(InO
zUu(I(p#D!C_tcmPkhTH3W81cqj%}-B+qP}nwrzK8+qV72-k#k#n1lWPK-Ed%dhP<%
za^wfW3OSkWY_)(8_V`5bH3ZBM)05B<(DO`mY)q-g25=)TP-+lZjk(!##=BnkLs}Bb
zfFWOrvbwO+U?3w3ATh9Pu3;E@*|6YGw{I7d=jA{f@*<)vrKnJmyl*>=m8eJOp|)qk
zcrz<+Z)j*+mw2vT13jU7lE|_<N;o0CMXV?CGL|r3DX56iRPS|yl7us?nIYB#6Kc_o
zzVWadB5~EAh~tUO`**H<?N0c3qS!XaRawT_DJ4w##2s`rCJ53`8^VK}{@4}bpXi>O
z5oU=2N(N~N3FX;?h~Ke0;jY2;1LY0DW`7JGzgJ;)qc|`@aCpL?qoHS(Gk#8<<P04V
zCG!}tZU09P2>(Y+K{AZ>PY;~`)dQmY#<Dt$a?&Z5tOc@wR?C>_G+cACC2#q79_7x)
z+Wewo+s1mO4!!IpkL|K$3OXCw>{8`Y5c-g;mpK>>1KOzw^blVE0O(O7XkdVTH1s~;
zRI0rbZM=tq=-Q77_-_&Swcm`>pM#g~-G`pt2VGxv{^L`mJ#k^v>r`Pu=Hp4w0G<p6
zd4{OjOeQzvD1I|y8tWSl)p8#HVa@NepQLy_p^dk2&&l3Q=T@N3((YTaVHqurg3`BJ
zvq)tK{>d>vde3E5Mw;NvsZ6ODGX>OB1M$T;G-@xv^t9KC1>Nqtv#S}w9HcYHN3Gl5
zgMQk?S_$Wi+;l<;!6#=TSvtm}eR#mstSJvVZbSM;YIcTZc@t~J^h_;wR8!T;!PSa-
zHm_z@Q(6Dbl}i%n4HtkKNABCx=aW{5_AVeH@b}*Nj*;1Jg~fSCtgwoynOTd4yMOt}
z#nlLx$TjwM*{;Luk`m#g{@7jlUQ#5WI|eUEhs$w{HLD3HxbhEQAE9ecR|D}uNXmR|
z6%5RSS;$Q8oqIdat6$6-34{G-77ceqS$BJ4!5D{F;KG%&{&qssZsk`<BWA0>vo~QJ
zGToaEY)N@ff{OUdZulF^ljy-&`iCJ1J)e|>4m90T0!^R6%ddC`W7HKkdtu{yZK5Y^
zampmT>EDrcZQiS;B(X#jq{48u(b<eaUbDnvIUSbus{4`Qt9Z-0@_+Zp^Fi-&5UE$V
z&GFH4_GXhlBT<AT9i>{Z!Wrh35$07XRt_JIxr%^YV9jD=%@(E_B(dHYxf<t1M}~s4
zq9=IHIBLr)e}=UPa^-r<t0Ay(TMcF#cz)}>hw}T$y8A9a6?wk6xG`Sq<58jUe)Mp)
z!K<-*I=?!BrL=K3lh*8aY{TFkPj{yt6I}K5p~-iy0bj(`RYyz@Y%FMPKL+24YPBbk
zEou~oQ?!y7*H*GTx9Z2W;VDvcNk5%bG72%;i3E_~7@{ohk{eu)j94xr^u0{1_-PgG
zY<otM<g<M|ko5+eb9$e@OKbjp(;pc|ZWRD9X+jlFokX3AcDIm~{PpQ$%dP?6)PH%;
z8J8AcLgtz5Qg<j^xqz;V0qTr&$95vDi61QUo!yrvo+poAur7G*0HJ_!RJGptqDm8&
z5$^Ce`sO)j#w~d4zNRXRTt;U{DxKCuUPb{st}tiid&_swU1?RNX~=Nh;PDTbjA>16
zC`f1+%O)c674Vl}bD3{^QH%5Q1X|#H{kXvI+H;7Nr_JHe>FMsOSOvxTlNG)|CZmLf
zJVrrOEAd&~SW@Q_9=r^K#+d5-w;pyixSXL0<OzBn(%sRO@-JUgssXmZdl^;ba(#a@
zRG^w2C+yl~5~4V1!G(40Wh0ZIkZsh*l`$KVWAICQ0C=Q%zU!A8_T;+6kB>zMG`)~*
z^V1@3k9Dh@&>Z-DTz90aW`;b9Q3J$cugLNfWBc3N1iD`UDeb=d3@4)DMm2dk%X6DB
zFdq~Vb1mCT3(_+>c{rn$V(9^@RN$=Y;o&`oqFf0L^-lpQTRK|`=q}raZHxrukB0na
zrII1a7s#DXfo-LK+fEpXO&ghs%s}rT>lxHOjG4;TO&4eOG)zh;7rY$xvm_+;8*y2)
z`tkF?RX}3?jN|I_$a{`-ckpDOJq>K?R7l;A0X55DG<M^?yx0zYp)~gugWyE?v3_Ww
zKaLP|MI8m9@l3MI{kZtDX&Qzpd3b9z8Jvw8aOo66Ks+x}`tuebT<pW2>{8K$7}9+#
zpQAQH+WS27TsF%R(~ILUC;cldUpg;XUVJ2k&bw`BkAZqSH=RcwIsW^kUEO93KKFaU
zI9`x`BhT~MXd&3fxY;~5+>;x4J#?YoV^&Xhx%uU?g_LXU(qvM*@YWm}Hby(5g#-yZ
zXrhz%xbDreDGL#$*i7RQ-t2TY(#kL&3pph3G<o^7a!gZbBDbKNgNxbH#Q6C*lZ5Ni
zKZC>H)DqANvbhOw<}>)Oyb=Z`k&P(t5?nmaqPLJ~3*{-|l}DPLNnS#W%VBaOC%%9D
zTs2)?aMNsnhp?gpaqf2UC*R&uuoLfexHSW|g0a+sjSHFH{1p++6(|4^?4kUa*<Ppo
z*!L2;H1wL0=y@G%hVBy{87ogPL+h_!lgsKNViq1ba`9ag357u9+4l&zSfgL}9*3zF
z<9R1B3*tOKsABU4i2BBO%vBSMA@}|+$HeH-Uo8SYr#a&fH$Il}%9+3$cJ)V!aJ6&K
zj{Ny_MzStiW@vPLB#Id<BE>B*9<*z{;^vj<Il#>DIhdOSCXW(E%sHz5ygt&j=D5Na
zSVd&|Sah0X_?w@zb*p_HrT|(P#QrNwj&6j-zlZg9x#eJ^RTqQ@KL&Ol$!B?O_q`Ku
z+{2pa3CWal>36onZk^y-xC1I0cAkP?;6UN1&U_07i?e<(CfC}P^#iysz0C#ljm#t+
zLIT}ewumW8_5e=(i^{fIar_R$o&}cNpBU_32epX}5DI|fY|15$@}rJ6M2%z7wlFf~
z!n*BmUneDUaf$9(bSZR$dbf4YcmyU8wFu#M?{Ny0yp%Fp4U{yzq;%b6=hAZOqWTlf
zo{e$}knL+|qdW!ST?-{jI5PwvpM4Lt5WhKu3xvjax<d57yWON!oWSQ|OmcpISQ>*S
z%UqLoUlMxS^R(yl?$8I&#!d6Hd8+x>Ukyx0faX9(VBqz5qNbC6>qiyS6QgthpI>Sx
z7=x)1YK)*u9MA0!5*}%NQvTdjFhX7%!+HSqT^+q0rk;L%>+YQYfS5}nw6-%%`u-0!
zkpBOvkxc9e^^Y1P|D^`9`^NA;YAn8>#j-%{{jL408bT^ywNi;1@Hr^W%cj}le67B1
zS~GXf#$KVyy=hy<y=J6U-D1lnFk7DFsy~V(3Z{?@O$j+hLkj9aCLj<kuoHnuP$l5X
zZ$4uPZvbpN&AAKpGkUvo`?CGf`2xPO#BYUf04C9;9uT1Y_fFqul^~u<(b-mJoK}6>
zliH9?n)0!@bFqh8sAuYNNohE1qh`=;LaRme9_m9+{|#(fzk&4XC(17vl2rY(JcHJ6
zWHbrmdn!9V#VQjnNHt~MSIYvs@g!M~msI=lLc0s1<=agp7%2`+Y6Wu9QMwg_rZz|U
zaV<0R>F1*Aw!0|BGK?0w+b4h6y0@fp&2H5SJoD#qm87ZweTDB2`C>fAB3MCB21cbD
zQa~=7BS&HAu&=Zvs3sIs_m^o-tiW!J*vGHjim5?%X8NTYL0jHxM9=zMSa0X+);MAs
z?ne_s;8Pi~&YFIG0z%|3!UMuXSRRrVYjq|0RR`4l9BL|rVDp#VCL_rdoMt0LAgFSE
zAHp-S<-kmj6gsTxbr>@lHt)s!KZcgBv}6?-$_-SoB;0MX;A%0?->w^Trxenz^}s^-
zVP8<IsWMO>X$ef-)8w5pr3AY~xgdwUc1#J1rGnCmssYAA)cYoO2B5uSHq|ynOvZ=+
zE!=n{dpTLz3o384oUeE9^{1Py%$eHETrcvBNp8pO_@^pj(aRM%_~S0@ym~rn(;|DJ
zU_@%J6$0w%;;A!ux|u#+i(B^6Sth`x$UM&X_&(!DySFJq*eouGnqLu)@ewGop(K~8
zGC?!b@0>{^<ny=9xVvF`j}Io_ayf(zOP(%ZVvwWE0N0TIl&SI}Cr25#yQtnjW-#dp
z9Kfc`Y4nkYfT3Q(uuZAt5gf;$ZN&}S8?7GO4+rAENrNb(P9BA;;Zt!0ey;b8?QZ-&
z$Fo>wt7XS2-2uWu-q`GJ$VzcGh4T9>8Mh!vfB$WIufbjEQ~OcAqt7r}{b=EN4*;kq
z@fgF82sKr=&G+A}*q$enEBM5XS^|O47LRFW6N!{y#ZnLP85908qULQI5C?9g^d^k3
zqr61AuLw>PIC2SG@<UhAo_}8+=m_w`h?^e>yDqmRIJ@TdBH^7@1COl`;;An=zoQ}d
zIn`?ZSTt?eD6@f6!hxR+JueELkGhS#O^}u!rN*sh$NNXR3ZqZ~Ba=he`?S_}qI90T
zN1Z4UJh-N8@B@zDs@QM6^OUtlpI~(SwTu5gbnm4dsIp>%%dEvW$#AaI#=E2z>i;DR
zMjZ3Hy%0mU_yM8aNlEoem`0%sD{2_TV+#XN0te&Cpbf2iHyjz4R0`f0qO79fk*84b
zABo#SIe;1%C~GvJ6fp~&)x;_N?4Q&4u56G0f*L@PA1=TL1Px+@l^N?%g8`Xk5vnZO
zEXqUEI!l|6FiWShU|yT536Zv)=kSIhcs>Mq9OlR`VXVqK`eb-ejYdIhLjkp9Zt~*t
zBOR^~Z?an}*xa&n8QLXt0gWU!_3%Y59!UYiIdypk#vAKcQl^~Wv_T1#P%B}GBT~Cc
zLjus*EH>|$`uBcCqfytcdP1jnz=H`KHT0Edc&OCy3)i+Q!4Y*VSSU>DPY#>fx^xB(
z!oWC4Lq;tEs;G^N7}+>}8BLcOOm^ns`+^x@^=HpfJXk41NMo~Rq~nh^hIzjezE!zl
z%eXR2w6C#{o1p3Ly@#K4@<00;$o0P6@4_p^F$D&DqmIz%fOL;*gm}=fTkAz9#!)dm
z4V475P1^ej=DcUK(+A#i(dCat7Ov7)cbeK12m=j2!H+@S-EXYKJ$rtHLTw=r)S69c
zVP`2VuQ>h{+m^M|iP`nIyUcjV-JL}W_YHZ&qOh>@+{r5cE7SboUGev`rzk4hGxJT*
zdCSW{1#g5Jdx4g4U+OGzVQu&cMlWbO<^u-UBUnrV&SBM@9@(bsR=u^(oe}p|n!hPz
z3{wC+^j}3-QqE5psoAW*{<n|hlm;cM*{x0?N?=sn-5FlK{jvQethYGN^g*a7|ERra
z)VVU-TJTI!E`TEx`-~bfm`Om>)}nBN$=Z@FXsSHu;<Bw)$?z1FU3;=tA!{OeM35J$
zL$Y38J-(02Odkadj(sT(8pB46;Ij^ofHRPESU)xar4wEg2}4<ZH)C5YHnSi)2?UHY
z1R0((0+NieveOopi3?k&IdOIO8y7A6Y3Sfq&fH$)VXDLXsYdKN2cDydp`hI&2Z(~@
z4(FGmNSxIc!6k2ptHe)Ma4`>yIm-^z>}olEXD<iZW^rd#LB|^8U{b$?`v<rS4oV_`
zQP_Y<pl4t>7|OumRnE6F2-=i;;1|RK1nACi=76b9n(=n)pNY{LX9;2o)-!IvcoIGG
z0_xp+^xNz$uYF;$>^&Wo&~Ex1iU4TAW#?+!N7P~pGls;oK{*K4l!DS5*=4}cpmz{s
z3LWBYxX*19vx#L@C}21vIknaW8YJPYdo@j~NR_M@w;LA`OL%;;D-H==N;re+r`mOj
zRrh;et^iiw^%+VxCDFTDT`Gttc`ns$gN3MShlBC50|S13t~U?Td*CGMTf)z-&jJ7q
z2_=Bz(f-3faK%ky$aaA&3$<jZ`|UE4c3J`l7izHGpHz|-adpesqZsZt@obcu?^+P7
ze~sE5M<8^B7V3QjR_P%!HF8vKxV}zuT6Z<Vy!3l&f{-cWC`Y-mNJamsWKM)c+&op2
zk)2u$lTeT*{quD9SQsTbPPy-YPd`xp|54%5T(I{K6-fU@1*-eTvAWlP@{2f|-})}y
zQ>s&N)Xp{r=!x_|cGn8vOk$VSD@9eBG{P2Y><xccnwFtmG@Dy5>RV~3pPJFClu>D$
zL9#JGK>=hy0i^N3z@gd_1ES?sBwoJ#xE#uXZMk0!*$>>eX)lv6JiVs?zS)P6ho9$;
zut5!X`jwv$03-hf5|dFcPf5i7pL9n2VqdOdA|mfLWd8NRo&))WS<;N3MHrNz2FK3~
zN!;^f2u`3TZ~I$AFFhYXSO&d4IiJg}jvGJi2`J^4uJk&J&ttT!SwqiPo=RztSkR!$
z@SgM2`SsWKMQiQ`aO?eD>SJ{YN|}i0^7@BYbLq}V83rj2nD9-kcwiuCz4vOt=TIcM
zcu4=wZk1cR=aZ{io$W8R3&>{R8y}EudOODzi|X21%?<h`mSac!m~{8Df=-A6kMrrJ
zj1ssNL(2ICc1vz;wMv^>TRJMG3>}>mQ?)V(>Zq!y=T0jwZC=9jb&&DqDZ5qSo$Dkh
zNH2Y_k%(99NfnfEZBjDJsIa~>{hFXvLJgA(n}~Gj0wc^Fx-h8JD~|N6{L9xk5PS!e
zhW2bXV0XGQWw&$^=pRn!Ef$>Y_+YqO(G^YKdVz3g;AwX78#rJuUB68YtIiX5I*(bq
z_%!xmu#hQsc`7P9=lbO6ZIT3i$=8rnKCKmx?)xU8m>Y?P+WqW?$v_{wA<CD(02&<G
zg@_z`C1=FS$16XZ1<o;M5FuRrc;Y^fzdN>?Z!0%}4grg94`frSJ>lz9X_T#ZB2%&D
z7^|k&vov)bvJ;HB@gDO4JFT%R(E<kFC6Q;SbnJZFb0*7besl@R3l7cdI*bXU#dc&<
zUL^GyjLB1&V!)}nPi}oMjiGK{C!lV04G9wHPVpk(id}wHY&s_yfmuxv*)1vL*}(qD
zLMw{^I-@&>LXq|mI%N?IncSXsnPLe8^$)?%op{7qw$Z7JCHfBOvHJ3gU>_xBmP_je
zN8%<o(S37R<BWOJ8IZc+i-4%S);nH8)T*((J34f5<S3^g5<kw3V{;fBHv+l*{FQ1_
zm~7*841qCveI5BNo#tQP%~gSg&hs+<aZWwme4F2)NV;$N7&#SIb;Nf55@8UpzSYhB
zeJGP^&_f1sG44X-%r9w6Sy6m^zHE9(Z3hJ2j1Rv(u4)4ACX&XQtU3(e@*L>y5aLKc
z@b9I<=~Y6@H#}u*iLZn7Bj!#XuYhYso}=5^XJuX|MaW&>aC1ezndGKO??fXp!u#qv
zkUgfliOFRN6ZvTnC-Md-P-q6`gS(LrB8&@`TYVueiHu#>e<4b3WPVe19oAs<3p;Q4
zj-!p2_H)dV$`{*kDc+vBt!UP^refKcghA6Rs+ASf4fxc-rO_MbO8k-Cd^zsm(m6gR
zs7{u46|i#RWV;#P;-x(iu|~(ZoD&Y<5t;0$HHSt17LnXmn5g=llOsS=3zuwW0=J^1
z+kHe6iI@};^=2r_WEm-s-sF}@dqNUH{A?E&EH>N+LKqMXAE8Of>#B*zJ2k*Ks0A#0
zFb-|h5Xl1<AAqM~te=wued*>3=j=%rnH;VJifXrnIuU|~dbx|z4+cpghNy9sxHlM5
zdEIhyixY=hp_(M_-L3NVL6BEcZhdV-!n86$^sD1a@ryG+9sj6>;oxjwnosfA_y|aj
z+AQ9mzPG`~SJpxY+~pe`q@!yD;FG1dR+mh8G~M?Cf6^n2-=HL`85T$;r1fm#$BIn^
zAM33B89Hv&>W%yLGPqkkL$`>hul2VjG+@n55uU>W)}c6$b{s<E)0dP}>9j7<O0y1A
zBWjZd9YGniQmJ+A_;LrICIPA&Aed{e**PKTKUYEEpM+f#L@O#2$YAxjQ2g?ysKGGc
zSfudMV1~}CQO%xLK?ERVM2){^^%@s=d)GR9n1Im8Yh-_r`SPc@5*ZkQAKKyx_kDoK
zJM|-r(?N>p5`yV-I@{|JDj_{Cnlee5&Y?A~FUFmP1%s9H=DtRhBUajzkCuWAiF#M9
zvFsy$uoozg<tcT0-29EnJ>xrw-8)8ABSXK$W@hpGMR~Bvc^7J!-F?OJGf?67ur7QQ
z3dcoWSkb9uYRaRE?S>)%U+7v`P|~87d^P|Tbr3~(FP~w3KVyHkKfY1An_N`;Q}%3+
z2bbxl)YPIKuV^@+3)<O+y&&P&0t>xX6}L8JvFa0KuUpup^YmwDi&h+f3?O<JyXs;7
zibL^K7#=@1TtOzoYlEonkk!{@tnB5nsj?VVS7xddq#N=aSm_&OhbzSot5;{e;ba)T
zT&g9)o%_{#0dP|~t$9zTFwi}gOqNo9M{*qX;vHxRjhAzjQYKxqu{kg4QPqwUiH~iD
z!Usxl5;K!ly!bA>7i3oQKo;d0+nd|EnLNN;f+XDy-W!wgxJU(`Kyuo9^axuizTr+$
zF`R3-Ufp0V#++z4@X9S+ZfF0X?X=!*-MSZCbep4XhOdF3g96wlP3hAMoymg-n$hq0
z?3{Hq?;(t1X)`tf1%0*mS#$~+rJ78o|4f_;GUv+m+5wt%R>K-&l7sw&icX->n7u=y
zQ9aJt0J8j)+GkdXd@i~NCqW)$diEs~lmQ})7)`9D5}GKC@$>J<p-fZDl%9OP20&vN
zFTwWg{O0-Ies4+I6~tVg;{>PqKkYd70_wj`thP|X2mAtV+ruW{;`#>p*ZqVj)6>88
zS!;Pe>hW(c<bBzN0D59+=&;XWp)LPI2(<qrm+)Q8{6`4>{}KZI|NE>$=@e_$5_!mF
z(dD}01Y}Or(xio)T_C4XIA__yO08vMMYXb4$#X-~!G)_~5xqeQX@feynLDtmyv3hs
z50V3s8j`dlK%baY7B26NkieVD_F(%#_-^hOkk^IYChw`+j@M21?ZfxZsmIRl18LWf
z-Ve;GoI4PZ(9Y6c-UImrJ{CnvL>HM{6i_Zba|DGU{t2(h?Hyd)OW#)!&|%!nD;1>3
z2%bi^M-O?!k~v+q<wckC{FYCQeTvQ59QtLJQ!kbA%k>|Qo+YmdT!I}`Q=T}Ci5~~v
z0}L*75qOjADEW*H7H|x=!M&r}RnGRy7TZ4NE@qB)9E_T6IILX@1WH})4^R(VT<h(A
z0OPNl+ie<z+3$5NEq=I~u8ZnEA$4W5)4$DZwM`QfF6PzRoqrM9>lz*KHdJd-c9)(L
zsw^*<Y-6N#7B1<=X>WO{G=Rh%e}j@#zle?4odl;ZEn2y(_-WNYM7h?YL{-viZ<^<~
z+F!HQXp7e*T~<0hwj;};invFh%4OHF=KUKs7;u3_@F<CFY-Cn=SdJHX+G%FQx&4|Q
zt-5jRUfSXh)F^NwcX_OEAre6f4FOv0Vido-j5|$8gmWx0TODfy<WcG|W7H83b%5P(
z;dy!`3aU${6(lxOo^r?w!ZX+m@rl;Sc{o?qOdKr*OYQb=fo54m@&)W{WF_b;V&9pX
zh)*PHxxNDTBTM79>>n({VQ-KoI45^<!=88+`sZcGyX&h~I9ae#bB`^uaP&Tnj;IPm
zkVulp-0p?}Hr`YZ1@aSDsdV1VtVG@InJqi66^v$>@_@E4GCmg+*?Mt4i6iF9$@L@E
zs|Cp<uK=%jNzS5$xR*Q>ns|m=n371fQ3+I-h&k<^xC2h&Hf2K9YKZYwHZe1rtRJJ>
zwte`u_p7svFNrH8s5feKI%)c<MI*&t!DvqFAd4=)F<V3=2@_~Lq{GFkDL%QcKnnPG
zvZc(OuM2od(?y!w+X)3NTLhW05l$t?NoEh<02E$8z|CC=Al@M<Z@rc5`|{vHjf)mL
z^UrVBX@n0#Fx|UErZ}SJ_|X0`r%H@)qzX}-!X)NoI^Mg)APH}THGQ#)9``HKj5;$R
zSdu<*qoJvXWQ;8GKQIwq?9>%|@~Rbzgei6RiDPA+$ShqC=wMQDIVyN7n?&h^44AaM
zvz1-iP+s_J!2qKBIYP|iDAcA9WYZD>+Fi={u~ni!?zfVE21yQw(0&?CuynL3AT6xb
zv-S6{DuMc%nwzX6(m2Na)U71yg|1uLyTh2(BGTU$^DBV~I0rGnW)7uM3yge#%Lqq*
z1*7jcFD5{^k`uhdh0E&R4`kB$={B2A_OtVak4L^=D0{$b`L#@}h)+$eN0fibn@Z-2
zBM?2S$l$erQ;c^98S3qpa+O(4O;a!8eYHwBanuN4<>?lF9T1?kNDlukojpV_d+$IY
zR`8M7n;erwPTe0uA|`}6I+qjD_5Dzn;;RC|g7cuH=KQjX;{=UM)^R;6S8kUG+mKM%
zw6Lzj`32H{)^+{oz11Fshbw%J1PH-1Du_(pfa@3YSZD7u@}yq=$0`-XE|DQYjr;9k
zb>#c+hl%j*O^>7?0=!g2pHJoAT6!`O<|GPD3fWp!7VOJ4*}~F<E-ou;o>zVw4=ULL
z*qGsS9Y_~8bcj-<?6L<-@yCmkzqO=Y$%}15bdeg!=ITA_#E1T5Hte~Ltr|cH3ddqt
zObUkTyM#3!r@Abkq}x%#Rt56~0DbY!*n?r?{~4#+gsTG{elPuuH`#}Yk0YgnK|~r0
z9*rk6K|O5}kq`ylQrKCu$!%ic2@tu}fFu$+su1As^>mVmDd{Z8<dLa~N)p;pHR>_Y
z#^|u)OvJ)}HaDuan>#8$ie`C^4Wqr$uMw#(X!@?9%j*FW0?|@>;qkm#h718@CXo@x
ze!pQ8i+P+cY}&Gk;qf$#6}j09jtsJmiY$t_j~&2cmIS-$T6UXAPS!;~<+ZqDWBVKd
z8UG>!h3bB>%kV3=?a>VzM!E=KtEU1aTkY;Tt;9({GWuDs+zzs=Y<`JN-4F&59y7!%
z<Q$itTeqAWYx)lFEM+g?os+RfSSCq}^0LcTC<#X)u>L5AB$N!n<0l|$0)^}Ax+E3Q
zi!d-@K6Z`Fv=}OY0CD60Dw_c!!|x(mqwQXq$7FbE(E)C_vdA7n%3`K`_)ZcPUE2<b
zzFj)1(H;B;zyVSi)kF|d8=8b>i}11dT|?`h^+xyY)*{4dhgUfE%v~Ew1R9b;ekE47
zHupDhGTRTHn)V4-w>CO{P(oc@zwWn^r%gG?;>eZ(NdU$6!12D29`joUTG?cbW#j{R
zk4TTl)5_WvAQVT2!JA%0LSM_A`NX<qoWn_QEsb)Hl7{1#?fWrj94NA={Hr)rf_KFg
zJ0c_T^UkB09;f@BaY7{PE|ZcvVr?f3O@J>lXfTAx4Axbt8=ve11!qKQV*|Fa*ivqR
zGpH!KWEj#YHbvkPXY_l~b&p^a%IfV}URt`w0Qwo7n!2={G}<wo{QBB<_VfzQVH_G|
zTCiXG{xL=~#&C+~by_fA<9U1-!J`)e8BoDsxJVeT!0<dfjCVSF1LSgdFY@!;%pv(q
zcHZmWVN)++c!oO5yLSa~V%KM_Jgr_o#-yoWR{j?L083+9{s1OKYboJ5S;iX&PpBp-
zDvhp~jxa?;e10KHDssdwv<Nhor|l68o6GKZB#?r#1Ix?nafB~81&Rp-=v^ADC$YOR
z%YKKSNC3h9JALa3vCV|Ch~xi&1LOb5EY5y8{R0Qbf5CzIA8`C9v%rgGfts`ItZ_w2
z6bRL~s-WwL2yDf-(z0<|s?2s-l)0)_<#k1GQD1WXOI0h+s%m0&i6?q#@+V?g2C+FG
z@(uZhJ%L-YCmsfBfQNe5cUE$Xkf;n_<LB(W$0>Jk^rL(C)@Nt;_^n&d{ioL#a+N{X
zy`7)_&poJJ@)ebCIWeU?Djhg}%2=QWCQO`fHU<{e(AI6d_!dc58F3gyq#ojz!R$S!
zSr66E<g(`jS?RKd>hO+jm9d>$vg_j#`chLz89;hD;@^VwOGCH*K*4kU*6$MOJlVhR
z&ip<t<1ON^tC?s{%4JQ918<9JZP^G2W>pi?mA0K^Q@2P?!q;!PN^G#Yft9)O=xDrq
zUx1z-oo!=^J`t^^#lCGyMu#o$B&Q4Q>0G9EAMeN=tkX>rO|{X(N$naYoR;w83aanL
ze)VeQwA&Pe?)<om(L6HB>Jwp~Ht|Y~8`46KIE%E$K?J|xD?x0W5Rp4Kl?%AXaq5oD
zkwHGYQ><m9g3-0p4YwC(1P0U1=-rYq60(Hx#MC96iDqhaQ}!2MGbnAS!wB4#5$r5)
zL5V|J+YM){uZJnot=TO9^Pa~cxHb)}f@lwiorjdercG5;a8&fnl#4|(9o;6pDH?^h
z<DTO}tx-s)>`BVWZat3R4C^Y6$b^RJnMG`F%b7;;P+MbwZ?%+cl92Qsk#e|vaW+Pq
z<AY?)eJxznS5a4y%}C)8vrvN}j$Ywf9|jFF)Mc>Y+vs<}e8nW&?KG9;_4T7@<v)w%
zjTtQDn-GRTKc=V+5?ZffbI}{4D_0UZ6Ot!W=AnciOQYAR<?&_~)!}1tx^xOuyUS53
z4&4W-EWRSY8TY6^A?wlR$rhh1?zS-6{pJNs%RopMTZ<U}!VIn-o+pG&iSsd?us-K^
zk+CXp2=X-Z9Y{^Hs_}uRUcK1@s7^=O)g%kTf)T%g5<kIv7_%aI!*rlwRww3L)+_mo
z*c%I+z2*hw3lwX=zi&oRU@8$vxCaQGuKAK$Mb$2AIFyXo<KKFsB#M1eehJO@Fipe(
zWNWKJwY3c1)gCZ1JS5{nWN;xAKM{vX{UQvTxv9Rum7Ld*Kxs^XBMjGb7vEqH0f{aA
zln^%cdeS(%bsc{R=I@}@{8^+tyXRHQOmyfKIyNe_bKE18(<C{ae;c^BQzLf@`o1aZ
zMw2X|&ZMVz+*USlTzM1@47j8$U`w-=vlmUfhgjW*RXA0eBg?dIL5!)icO4fqa81T^
zKa~L<H~rprQcvd;z2gDG2oDIVe01?+YDX)Yn)+4@456LqQr%#4r9kNMAbQ3pW#<;`
z!(uZBP<TjHq>U{il{+h^?K|e2y&tc`jOtqtq<5duZwE^xrzd$m+O553r8TjP{h{m(
zzOBU-q4bH}(bI5yK|>|h^v=w;kD$6U6>RJ_-1fh%2BwB5L5WpR+4d#PM+15#>$Vxp
z5G}YpQ1@LK_^dC?y(fF7tk(dv9|i-6>rH>W>^i*~J$^-Nmx-;eNR-r;UU=k5dBI!E
zwf9371V9HJ8BvVV#m$Z_>rtD0aJ3ktu<_U^ve4Gizw2A+*Aov_Ma+1g4rUyq&qR&~
z1x&2+oRqZ3y%N7E8`K|Qou#ZM49Gyveu)C~<W*`jTM3E26l+RUE*li+_6<`iBq>#A
zL{;GPg*B1Wo4@WZ6b-AtZegtb^w}X;!OHTPb4A`!gdFmr_Z=X~QoaH8P)*OqX)Y{G
zUsp^bcZb~+y`jl{xoO|!aVED**f;5|_)Dk>w*IJ_1PqEMJyyC67B5+I`F5PvZ$#OG
z01Kl6E#L&h{j;_8yyMkP&6euPm6WX5=lt?jRj}yDM9=j?FkjC{q5Fck1zA%*d`64g
z<r6J%b|@u3c?r7rXRW7Rji=EH$QXJ9(2Q5sais}3Ue?Z7lR9(>W$KAeutkho8Syih
z=Kb9owLIcwKQyQAKmPI?=Ux19;o%yfF54alhD07vxr|Q`5()V0)Y08C+zU;rg)Rd8
zgn=(wqbNq?Aqn2qbu8PqrPNKU>bDKjY**=U$71}SpIa)|0au22H($emJ3(%~Xes4I
zl|aM}V8)p6oThtCX}Pc!(V;a0*h^wjGt<u6>G6N_+}roed;jFHW2y`zJrvfG6^>9*
z)Cm*7WRcdAzv7G)CEP(VTC+wPliLzYP#Epvwf-R_EAV%oa-U9l?BI!e_Uw-jt%N(U
zhy@XhMRbh*4?;C4b`hU>Kkf^7H0Eaer8y4(EC!>`lP|8(-TzP6hdf!lcf0eT8I}i^
z+FA5)kbiE*#B_FsV^z|7qK4cH>?LnpW!f~AO;5NT`xux|l#6%#{XC{<V+3NqN!GJz
z8s;rFR+<|u0tj9LE%Re*X!#DLlh^R9TFUz)rfZ-uM#aOeo<_VqZCR#GumRo2o(Kbm
z?&rr-)^gG*-On#khGIFwcp+k9ZxUidevKs0S4F|3CKb6M%%eoFeM1D~Xzpz6(qpmD
zzo;_)$}Qu1h1n6GxPVh;YI(xMZvR8-^N~!XA|pk=Zmzeho5i<{I_XW@WXv1P@canI
z9cEpNGfN`7rIJ!JjCqTDns<RUXoMhGz`~OT@8cwb3ML{cOvuH;{gWDp97;#bl75n8
z2tOV^qohpKP5zHkF!Ebo`7T+3Nj?<J(8N85<SQ39991wPfAa6gNarIo7BNZ&yn%y?
zU%oJnLJ@{+*bH6J#2j6Ni@Vo#g!bL$pGh1LhiCpp^gQ9k!)7Q0R{%(lmk-}B9HDrk
zLFU(9pZ}2t*8dT0WHHkJlLo<mrGfqbO5;C|P~|L;^W$t*TQ^R~<2AJ}OIzc!5Ivg1
zTU0NrmJ3@p-u1UHoLj1F(P&y~Oez_eE+{oO5|%YDDp74Z&A~jJ1=NChpyJ0AJ%T|2
zgaU|b^ES_)3)U2%#I;&K>(@DNGB@5YzP-0@Gj20)GjOMAmp}V|gGdtYIE~gnIE->}
zebOkU5GN>u3xGQyUoandqQW6ZI@|Q%Cjp8~2;ykU*nB-}=2df<AJHu<e(9Iis~aw<
zJ)tmgt&K^?@6~i(j;EerJ2Fjywt4wsq%XKMs@LsX$2aV*e?MS-`_@b-0&=S~bvCX(
z8(r`X4#tW2gGL1yGNS0-$EC>M1GWY#XCGbN>NYN1kvx;}ZgMRH6K_~qN}D>otnhBC
z!0Xy4Zt*ZwOKvi!JQ!|t@3tB-+r4x)0?s}iw;i{P5E&D5A6(d=0>W=_fNsz5Zgkya
zT9*@D_l68*gAddYU8D_HeA8KV?C{JLvb0@@4kQiXDb8ix%|{|*a9G&<1Op0)3|w+<
zs-B)NpKU(kdLwN{vDxXx`gWd1R<>uConf0-P>>RyOmiqb^Oz&6N!lQo7c@lQpG`Lk
zZ3T|OwuOKBc2<7n7vFP1*p#^ReZGe_yW641dK0~#)a)=tG@jl*k%Ed?W_4<<?$|}j
zX-*F~@f6T<9p0Tcm4J7WF}KOLJQvALt`z$y{{5QMtLk0O&{|flE068(!;G$Ca8)Lp
z+rLLr@*H4(7*%2ATt+;UmJ+<6UTHxMh0Ze+8aOf%|8kvh?2&)RR~zb?M4Mo93|VM9
z=Svw`NZR?_yG-=#6h#wA4(RH+Ro^GK*3oB_|0p+{(l9aV2^ex8&;Ip`xM*?P>vd{4
z8quLRog#5E2+Nf`B7FqT=&-|}k;69Kn>sJy_a5T{f21+})rZ*nQt{&<5X+H6%=j{;
zp&1YQn6w+=d((q-o4!H|LIi(8!$a5&9)w&i6k5FjZo{VmDCdbMVKi2VgEduLLO0uY
zMq1O1o`Z(u5@IbE;Pqx}F$=Lyc!{ttwR-c}nXa;Co21l<1JQw^#KEom(9=xQbw?2w
zX|UKH5jc-tpCGJ!se5!nS=HU00R!ulc7Y|uUW{hM{u8QRW%%z&Q!)0ijXEPWwi*g!
zIAxEv*r?0qH@);pzB&A<13;B>crmG&?zWQan{$by&v_Y@HX4_mw2H}5mX0NU*((+;
zO`A!tX%RGxUO5=pMyttqVxY)@zJ`m%>iDGF&g{tg%c=j(B%Pq%J6PtERgW^uPt3{^
zG>o5K<>Ll|banz_nY6vFxRi{-VSeKYK?<3993)5O+BS?{z_nOiY0zYCnkQ68lrhnp
z0?fHy9veuIeL}NV0Nw4NOArFyPnXUkE2qJEgHVuBa=d6{WG2Z7=p3f57ecUj=LTZ*
z9-zs(vmZ82=1s(%K=3=qKmU2Nkq|OCp<FFoMmIhA3lOLP_OBJq$$R^wrHngLDgV>0
zA-DyO^oZ~2wR8*&i);DY4E=|IFYTE1K9qVz$UY%;%-$YBxPebVrUu!@2`@x1wO-!e
z%dx1)jPbhU6)l`T#_*(-_PGVSom?kNxq^2o*^Hhi5CjTze^v?pTKQc2hLYLpAy9sE
zuG-BJiYe(wb)>U_Ci~|EA(cZ6IN7!+*>`*rAhEzf0(FSl%ksR;PDg24<bD)yUC@HH
zV--vm_XPc?kkl<N!a8$$MITbZmzXH8TJ_!1LhCDFWmWoJ`L#1j2gSgvqbOrJfjL61
zrC9!J9_Qo*9CURb!D3Y|YZ*C;n#i91e#~HZ0YYhH4BPItjos3r&tLv?I^t0iROEVa
zP;tJfk__Q+D>1pRS2$=fyySIYcs==rYZ?a4$#Gea3&8?4R6@TPCDG|Onm-<#sNFZ?
zAp8T~{Hz#uaFE(ECPjt`k?NI%H<W&p<RmtJNC0_^lay~jAWC}el-N3*FCygr8DZS#
z<QhtN0WsepE~7{3ZDsTUmLrVvG(SjAo>=jnwC5RiX)U!M&W7bmE;GW9#$f}O*Shhb
zb(K-D`FJq~gWT{DtbkUKy~yZfDc#9zs-)={l~(b3=vlm?sj~T~-0_`uEWH4X62*yx
zKtvfk!RPiUA5R8-++t_f0M=<5-=eQfFpt+O1uz29btCh7J%37Cfh>u<LEqw6T>s)B
zg2%n}K`FOAp3N2BrI(lOY<!>VE$IqU1K{ymOJ6;zoX*rW0u@o}>)$=0R_23;Cl#6G
z<~fgus<6Qk#qgV!IebC8AV3~t39MhF$;A)6Y;JCq7Fn9V5M3G@=Q;Qc1kqJKO2(*@
zGqWsB?un}h85?-W9<nSaS)(q*Z`EzVHIXaQyA8275-Os0H8o5wth65HDMX3(BN6to
zl;3~a>%`&}i&!Hl5_>Z0_YlPG1r%vEYnx+f!+Dk&DLBcXqWE&tlM#{l`9rWf;Eqx{
zDCtPTp|%7EgmU9m5PjX;M6Td3a%NL7ai_6y4h-BKSili9Nb>ZUQ0@be{nJHk2GGCN
z2%-_e<O=EpaRgOs5zxiUW_90Wb>H^`C%PWQgguPhq*E;V{)o%sJk6{1P%f@6G%fyF
zdc-tF=(=Bg;d}KBrGaD&c|3wXYB<Yih%tWRcFq$MVy0YSg5sXvd%$wV;nfQT00I5*
zrP>bDkeCv@n|@CA8yzJq;gAuNL)H<>C!`=o*|FtPN`+qc)cp9qzVL7~%^?u|-sAn1
zC$WbAZ|}Y9wf}-yyTu*#%W1v&A5h@@AJGNe!N@;QF#H!3xc>o#hqCf18o~Hfy|ZK?
zBQf)!Va!N0@f2`LKbSC!3<@J7=>i*NML}jUX_!4vr1We>ZaEQgAt$zyV3C-B=u)^p
zOjICkQ#~9cG7y&j$@GNj9}?MHJAoWnzC_$bzl|QJ8>}6#-IvbZPVbi;h|{0dpNZpv
zeGxvPUZWe{1St>PUH?%I-31Dcq~bV7ayi%Gj~_}X#gqPfSlpiht*X)+9#z7_@ZnFd
z+s{CXWVUnJG*;#i3Td3@+I3(1gfPmvDCYhj48k8~K>Fk{&;3>17Db3>ndwm-t;N-h
z6%)d9Hm%hw=4=D7h@0urPtCgJN9nkA=elvjwl&*kkAlnN$}OiW<BpG1xc?#d>U9AR
zcvZgr#?`PK-bCGo^5XjL(x1qDL`R0Y11EPFnsFF8^kui?C2Sj?<>(rOUhE{BJ?fgl
z+(=a?59@<ghQ0nQ{uqdA#L#yB-|$a6d0MRnx^7iy`M>Je*WU}|r`J4RPE+%oUlOD0
z`&B42s;|y&m6=-cL%w_T@t*tq!3W(!i@(ag19?Cy2=MTUnO$`*3RY3Cc`pozL0pU*
zCIqoi^D50NK#?%}9umP+ncMKjqDfZ-@QdWN_+)2&VRGLK?qd2Y?$Y0@)t*cKqHe6Y
zEgRyLQxLmWVP!2V<QI3foPz6-X2DyXihMu4X?|>Y1=k>K6cO23r2C!k>bCLXa<X1P
zX?F8&tF7BktGPY0=~$XxEP->kr^xKJ@YCwFAclf=qv8SLy4N|!#b+uUt6JEXU?pO<
zg3RDVDnG4?26Q--`aIw748_I1AIpR>B;Sa~ajMz~X8KK$VX~A__VL7L$cs+eJtisc
zLlXI&L>HdC3!EpVCsCRnEIYZBT@^{}tB=0Ew@0B@9Y>=4#(fLB%y?w;zjK)fjcS{p
z&g(P!aEBsLsi@`KbX+k&VG`VU0(kr(r%z!>>mGs^+8Y)J65~*p*#rEU;d#`TO>O!L
z^rh`FP#M@~f9=wJG`1yZc|na`QMwAf3ra8Sdz)Bj@q=8ljtEMh(KHl{L3FkR<~zs_
zpny$K_7;vr47TPjp0zOaVMRGVl9l2{i;WRvFA*M-<hb{gekFR2ahr+*oy`=9T0%=M
zyq-TO{`8!xH~hU!-S5k2oTiMP8QBK~fGv!z9<rHM!ikJQ#R=Jd0kRJei3gF{mXiF-
zQ1L+U2D4;h3r%m*OM3NErGmf5P{s<Wc%Xdy=_$NjKMjdv8<^2)-OxZ~9G()owbqOm
zxQqsrFfN;+-IG%gFC=RW=Bnq`|ERzN|B_m`6giSnhu?=jcEU%R&^>|zHftoK$aNA;
z1p9bMkxKC;B~OV}?TItSrYUHUoBh^_>Bs+FRP>AX%UT62U=};_P2Mcb#XP_K%K8{|
zyys)6gjk>Bu=1%bhQ}`AUvI0@@IvH(_<04&fEX{Q-x!MRri8n=G~8U@=G)o)3QX5~
zoF);84A~A9>6v9S9<0$VmQG*+L?+i?IjD9)1A=Ee=_=J7z<2YJG^WIe&Kwg)^3yOl
zE-|ik9Q!MnHsrJZcOBKi_S(IQtrl0o&M#muC3LCiM=;3^%Z-P_EltcY%hK~-g0TBO
zjO0XxGw!3s_5(v-DbGN3g#%LIw{#e{W9|02Lcws+MSa~+k`@je3)aEpud^>!EZ$Y!
z@@|JilaqYOosq@8oVtom$vg(mBS8t`^m;0TP}RX(<lygJ9hR5ytVV5t4yZguQ27b~
zp=N$sKSZMB7-p4KfQ9^JfrGGg3|CD*i#hpmG&6p*>>tkT;|sE^iCnPq=AM4($V{2*
z2_or7H&Mw2{Z<XBtc=9HkjXCvuk6Hiu;3NH%#ONP$DsF=5OQ%Vx-Jk{hyu`6wXODb
zGRW-Sg`h}A8iM9uLoB|RJt&r@>G3x`<!2c>lB?5IosG~3+unhnS4xLRdwL{h^5BJh
zYp+Pp1O8sd&LsAaP<gmxE@<QEg$Ru&WV-Ed;IE#q;5DyO>%KCq#tAbDm0=PZnGx#U
z->T9LrOXs^^NrkZedmPnS!i!FUWCCd*1(N=*>zMOEJcJSZYv=kh7P28%aV{_YLr<x
zjg+nwTb0EA)D%Dp*fKJN;2mO|O$Mv`kdGxE3J#Nkke6%0JjILY<#`rfbtQRpI)T}^
zF708L6~43{hhH)p(A(FYsV>|w{uS{|E}?>7$((i5zy)oqwow#9?+`T*v6;`xmUb?-
zGW<R#l0SFD=_O)h!7w$yR5B=%hkk1|@J0Q)$~9DSYy|wxq=^4SC)&(T4N`jVZb=^6
zc2`|~vU#Bh15kejV%!`+ncOP$gc{`veShtxL68gPO8h>BDy9KO7xBwg^5~8b1IOzt
zD7I9`LiI^cPK}7Xx*>a->8Yk_m)2$dQ(Rr6_o1+H4v-{5@@fZO*BsD}Jc;%e)%j@9
zBl>NgZ|=*JV2qVhF2iV*IE%XE;s<9a4_;uoxqr_8gQt#-jKnQG=)I~ly)~b+dZzVq
zlw4`3N^u&CGAq3gU2FwO5xTMHgei@v`#6yI`4&ww{Q~bD%7Z9abpD|{%}%eL8Q*cA
z$7zx=j4fk$kye%udO1+IgT{}6hVgTjJV%G>I0g=V48el^69E}g09m*~B!cjO#tr@i
zr3Z!jLf9kU`mY+RJ%TQ&vXIaUGk|+Q!lsGDUDbN#0r&kAl^%lVO8T1z5HBK@%Ll6s
z3C9N>4<aAy0r3Vd>K=y@83+Zk7n66N2X|!<JQ}Yjf3_r~eb@H&(tG^QF83Q*n(=E(
v<v$lWoki81mF!HN-3%N}en}bF+nNzNGBR>foHZHz#~G5MvLdxY`housFUq+f
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4493d7c749e1594ca4d103574fa53808018342a2
GIT binary patch
literal 10387
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
Ri2ldyZOywHb!xT|{||Gy4@Cd~
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -1852,16 +1852,24 @@ ContentChild::ActorDestroy(ActorDestroyR
 
     nsCOMPtr<nsIConsoleService> svc(do_GetService(NS_CONSOLESERVICE_CONTRACTID));
     if (svc) {
         svc->UnregisterListener(mConsoleListener);
         mConsoleListener->mChild = nullptr;
     }
     mIsAlive = false;
 
+#ifdef MOZ_NUWA_PROCESS
+    if (IsNuwaProcess()) {
+        // The Nuwa cannot go through the full XPCOM shutdown path or deadlock
+        // will result.
+        QuickExit();
+    }
+#endif
+
     XRE_ShutdownChildProcess();
 }
 
 void
 ContentChild::ProcessingError(Result aCode, const char* aReason)
 {
     switch (aCode) {
         case MsgDropped:
--- a/dom/ipc/PreallocatedProcessManager.cpp
+++ b/dom/ipc/PreallocatedProcessManager.cpp
@@ -286,17 +286,17 @@ PreallocatedProcessManagerImpl::GetSpare
 /**
  * Publish a ContentParent to spare process list.
  */
 void
 PreallocatedProcessManagerImpl::PublishSpareProcess(ContentParent* aContent)
 {
   MOZ_ASSERT(NS_IsMainThread());
 
-  if (Preferences::GetBool("dom.ipc.processPriorityManager.testMode")) {
+  if (Preferences::GetBool("dom.ipc.preallocatedProcessManager.testMode")) {
     AutoJSContext cx;
     nsCOMPtr<nsIMessageBroadcaster> ppmm =
       do_GetService("@mozilla.org/parentprocessmessagemanager;1");
     mozilla::unused << ppmm->BroadcastAsyncMessage(
       NS_LITERAL_STRING("TEST-ONLY:nuwa-add-new-process"),
       JS::NullHandleValue, JS::NullHandleValue, cx, 1);
   }
 
@@ -332,17 +332,17 @@ PreallocatedProcessManagerImpl::IsNuwaRe
 
 void
 PreallocatedProcessManagerImpl::OnNuwaReady()
 {
   NS_ASSERTION(!mIsNuwaReady, "Multiple Nuwa processes created!");
   ProcessPriorityManager::SetProcessPriority(mPreallocatedAppProcess,
                                              hal::PROCESS_PRIORITY_MASTER);
   mIsNuwaReady = true;
-  if (Preferences::GetBool("dom.ipc.processPriorityManager.testMode")) {
+  if (Preferences::GetBool("dom.ipc.preallocatedProcessManager.testMode")) {
     AutoJSContext cx;
     nsCOMPtr<nsIMessageBroadcaster> ppmm =
       do_GetService("@mozilla.org/parentprocessmessagemanager;1");
     mozilla::unused << ppmm->BroadcastAsyncMessage(
       NS_LITERAL_STRING("TEST-ONLY:nuwa-ready"),
       JS::NullHandleValue, JS::NullHandleValue, cx, 1);
   }
   NuwaFork();
--- a/dom/ipc/tests/test_NuwaProcessCreation.html
+++ b/dom/ipc/tests/test_NuwaProcessCreation.html
@@ -2,99 +2,66 @@
 <html>
 <!--
 Test if Nuwa process created successfully.
 -->
 <head>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
-<body>
+<body onload="setup()">
 
 <script type="application/javascript;version=1.7">
 "use strict";
 
-SimpleTest.waitForExplicitFinish();
-SimpleTest.requestFlakyTimeout("untriaged");
-
-function TestLoader() {}
-
-TestLoader.prototype = {
-  _waitingTask: 0,
-  onTestReady: null,
-  unlockTestReady: function() {
-    this._waitingTask--;
-    this._maybeLoadTest();
-  },
-  lockTestReady: function() {
-    this._waitingTask++;
-  },
-  _maybeLoadTest: function() {
-    if (this._waitingTask == 0) {
-      this.onTestReady();
-    }
-  }
-}
-
-var testLoader = new TestLoader();
-testLoader.lockTestReady();
-window.addEventListener('load', function() {
-  testLoader.unlockTestReady();
-});
-
-function setPref(pref, value) {
-  testLoader.lockTestReady();
-  if (value !== undefined && value !== null) {
-    SpecialPowers.pushPrefEnv({'set': [[pref, value]]}, function() { testLoader.unlockTestReady(); });
-  } else {
-    SpecialPowers.pushPrefEnv({'clear': [[pref]]}, function() { testLoader.unlockTestReady(); });
-  }
-}
-
-setPref('dom.ipc.processPriorityManager.testMode', true);
-setPref('dom.ipc.processPriorityManager.enabled', true);
-setPref('dom.ipc.processPriorityManager.BACKGROUND.LRUPoolLevels', 2);
-
 function runTest()
 {
-  // Shutdown preallocated process.
-  SpecialPowers.setBoolPref('dom.ipc.processPrelaunch.enabled', false);
+  info("Launch the Nuwa process");
   let cpmm = SpecialPowers.Cc["@mozilla.org/childprocessmessagemanager;1"]
                           .getService(SpecialPowers.Ci.nsISyncMessageSender);
   let seenNuwaReady = false;
   let msgHandler = {
     receiveMessage: function receiveMessage(msg) {
       msg = SpecialPowers.wrap(msg);
       if (msg.name == 'TEST-ONLY:nuwa-ready') {
         ok(true, "Got nuwa-ready");
         is(seenNuwaReady, false, "Already received nuwa ready");
         seenNuwaReady = true;
       } else if (msg.name == 'TEST-ONLY:nuwa-add-new-process') {
         ok(true, "Got nuwa-add-new-process");
         is(seenNuwaReady, true, "Receive nuwa-add-new-process before nuwa-ready");
-        testEnd();
+        shutdown();
       }
     }
   };
-  let timeout = setTimeout(function() {
-    ok(false, "Nuwa process is not launched");
-    testEnd();
-  }, 240000);
 
-  function testEnd() {
+  function shutdown() {
+    info("Shut down the test case");
     cpmm.removeMessageListener("TEST-ONLY:nuwa-ready", msgHandler);
     cpmm.removeMessageListener("TEST-ONLY:nuwa-add-new-process", msgHandler);
-    clearTimeout(timeout);
+
     SimpleTest.finish();
   }
 
   cpmm.addMessageListener("TEST-ONLY:nuwa-ready", msgHandler);
   cpmm.addMessageListener("TEST-ONLY:nuwa-add-new-process", msgHandler);
 
 
   // Setting this pref to true should cause us to prelaunch a process.
   SpecialPowers.setBoolPref('dom.ipc.processPrelaunch.enabled', true);
 }
 
-testLoader.onTestReady = runTest;
+function setup()
+{
+  info("Set up preferences for testing the Nuwa process.");
+  SimpleTest.waitForExplicitFinish();
+
+  SpecialPowers.pushPrefEnv({
+    'set': [
+      ['dom.ipc.processPrelaunch.enabled', false],
+      ['dom.ipc.preallocatedProcessManager.testMode', true]
+    ]
+  }, runTest);
+}
+
 </script>
 </body>
 </html>
--- a/dom/ipc/tests/test_NuwaProcessDeadlock.html
+++ b/dom/ipc/tests/test_NuwaProcessDeadlock.html
@@ -2,101 +2,67 @@
 <html>
 <!--
 Test if Nuwa process created successfully.
 -->
 <head>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
-<body>
+<body onload="setup()">
 
 <script type="application/javascript;version=1.7">
 "use strict";
 
-SimpleTest.waitForExplicitFinish();
-SimpleTest.requestFlakyTimeout("untriaged");
-
-function TestLoader() {}
-
-TestLoader.prototype = {
-  _waitingTask: 0,
-  onTestReady: null,
-  unlockTestReady: function() {
-    this._waitingTask--;
-    this._maybeLoadTest();
-  },
-  lockTestReady: function() {
-    this._waitingTask++;
-  },
-  _maybeLoadTest: function() {
-    if (this._waitingTask == 0) {
-      this.onTestReady();
-    }
-  }
-}
-
-var testLoader = new TestLoader();
-testLoader.lockTestReady();
-window.addEventListener('load', function() {
-  testLoader.unlockTestReady();
-});
-
-function setPref(pref, value) {
-  testLoader.lockTestReady();
-  if (value !== undefined && value !== null) {
-    SpecialPowers.pushPrefEnv({'set': [[pref, value]]}, function() { testLoader.unlockTestReady(); });
-  } else {
-    SpecialPowers.pushPrefEnv({'clear': [[pref]]}, function() { testLoader.unlockTestReady(); });
-  }
-}
-
-setPref('dom.ipc.processPriorityManager.testMode', true);
-setPref('dom.ipc.processPriorityManager.enabled', true);
-setPref('dom.ipc.processPriorityManager.BACKGROUND.LRUPoolLevels', 2);
-setPref('dom.ipc.processPrelaunch.testMode', true);  // For testing deadlock.
-
 function runTest()
 {
-  // Shutdown preallocated process.
-  SpecialPowers.setBoolPref('dom.ipc.processPrelaunch.enabled', false);
+  info("Launch the Nuwa process");
   let cpmm = SpecialPowers.Cc["@mozilla.org/childprocessmessagemanager;1"]
                           .getService(SpecialPowers.Ci.nsISyncMessageSender);
   let seenNuwaReady = false;
   let msgHandler = {
     receiveMessage: function receiveMessage(msg) {
       msg = SpecialPowers.wrap(msg);
       if (msg.name == 'TEST-ONLY:nuwa-ready') {
         ok(true, "Got nuwa-ready");
         is(seenNuwaReady, false, "Already received nuwa ready");
         seenNuwaReady = true;
       } else if (msg.name == 'TEST-ONLY:nuwa-add-new-process') {
         ok(true, "Got nuwa-add-new-process");
         is(seenNuwaReady, true, "Receive nuwa-add-new-process before nuwa-ready");
-        testEnd();
+        shutdown();
       }
     }
   };
-  let timeout = setTimeout(function() {
-    ok(false, "Nuwa process is not launched");
-    testEnd();
-  }, 240000);
 
-  function testEnd() {
+  function shutdown() {
+    info("Shut down the test case");
     cpmm.removeMessageListener("TEST-ONLY:nuwa-ready", msgHandler);
     cpmm.removeMessageListener("TEST-ONLY:nuwa-add-new-process", msgHandler);
-    clearTimeout(timeout);
-    setPref('dom.ipc.processPrelaunch.testMode', false);
+
     SimpleTest.finish();
   }
 
   cpmm.addMessageListener("TEST-ONLY:nuwa-ready", msgHandler);
   cpmm.addMessageListener("TEST-ONLY:nuwa-add-new-process", msgHandler);
 
 
   // Setting this pref to true should cause us to prelaunch a process.
   SpecialPowers.setBoolPref('dom.ipc.processPrelaunch.enabled', true);
 }
 
-testLoader.onTestReady = runTest;
+function setup()
+{
+  info("Set up preferences for testing deadlock in the Nuwa process.");
+  SimpleTest.waitForExplicitFinish();
+
+  SpecialPowers.pushPrefEnv({
+    'set': [
+      ['dom.ipc.processPrelaunch.enabled', false],
+      ['dom.ipc.preallocatedProcessManager.testMode', true],
+      ['dom.ipc.processPrelaunch.testMode', true]  // For testing deadlock
+    ]
+  }, runTest);
+}
+
 </script>
 </body>
 </html>
--- a/mobile/android/base/AndroidManifest.xml.in
+++ b/mobile/android/base/AndroidManifest.xml.in
@@ -251,16 +251,20 @@
         </activity-alias>
 
 #ifdef MOZ_ANDROID_TAB_QUEUE
         <!-- The main reason for the Tab Queue build flag is to not mess with the VIEW intent filter
              before the rest of the plumbing is in place -->
 
         <service android:name="org.mozilla.gecko.tabqueue.TabQueueService" />
 
+        <activity android:name="org.mozilla.gecko.tabqueue.TabQueuePrompt"
+                  android:launchMode="singleTop"
+                  android:theme="@style/OverlayActivity" />
+
         <activity android:name="org.mozilla.gecko.tabqueue.TabQueueDispatcher"
                   android:label="@MOZ_APP_DISPLAYNAME@"
                   android:launchMode="singleTask"
                   android:theme="@style/TabQueueActivity">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.BROWSABLE" />
@@ -423,17 +427,17 @@
 
 #ifdef MOZ_ANDROID_SHARE_OVERLAY
         <!-- Share overlay activity
 
              Setting launchMode="singleTop" ensures onNewIntent is called when the Activity is
              reused. Ideally we create a new instance but Android L breaks this (bug 1137928). -->
         <activity android:name="org.mozilla.gecko.overlays.ui.ShareDialog"
                   android:label="@string/overlay_share_label"
-                  android:theme="@style/ShareOverlayActivity"
+                  android:theme="@style/OverlayActivity"
                   android:configChanges="keyboard|keyboardHidden|mcc|mnc|locale|layoutDirection"
                   android:launchMode="singleTop"
                   android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
 
             <intent-filter>
                 <action android:name="android.intent.action.SEND" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="text/plain" />
--- a/mobile/android/base/BrowserApp.java
+++ b/mobile/android/base/BrowserApp.java
@@ -46,16 +46,17 @@ import org.mozilla.gecko.mozglue.Context
 import org.mozilla.gecko.mozglue.RobocopTarget;
 import org.mozilla.gecko.overlays.ui.ShareDialog;
 import org.mozilla.gecko.preferences.ClearOnShutdownPref;
 import org.mozilla.gecko.preferences.GeckoPreferences;
 import org.mozilla.gecko.prompts.Prompt;
 import org.mozilla.gecko.prompts.PromptListItem;
 import org.mozilla.gecko.sync.setup.SyncAccounts;
 import org.mozilla.gecko.tabqueue.TabQueueHelper;
+import org.mozilla.gecko.tabqueue.TabQueuePrompt;
 import org.mozilla.gecko.tabs.TabHistoryController;
 import org.mozilla.gecko.tabs.TabHistoryController.OnShowTabHistory;
 import org.mozilla.gecko.tabs.TabHistoryFragment;
 import org.mozilla.gecko.tabs.TabHistoryPage;
 import org.mozilla.gecko.tabs.TabsPanel;
 import org.mozilla.gecko.toolbar.AutocompleteHandler;
 import org.mozilla.gecko.toolbar.BrowserToolbar;
 import org.mozilla.gecko.toolbar.BrowserToolbar.TabEditingState;
@@ -162,16 +163,17 @@ public class BrowserApp extends GeckoApp
     public static final String GUEST_BROWSING_ARG = "--guest";
 
     private static final String STATE_ABOUT_HOME_TOP_PADDING = "abouthome_top_padding";
 
     private static final String BROWSER_SEARCH_TAG = "browser_search";
 
     // Request ID for startActivityForResult.
     private static final int ACTIVITY_REQUEST_PREFERENCES = 1001;
+    private static final int ACTIVITY_REQUEST_TAB_QUEUE = 2001;
 
     @RobocopTarget
     public static final String EXTRA_SKIP_STARTPANE = "skipstartpane";
 
     private BrowserSearch mBrowserSearch;
     private View mBrowserSearchContainer;
 
     public ViewGroup mBrowserChrome;
@@ -709,16 +711,18 @@ public class BrowserApp extends GeckoApp
         });
         mBrowserToolbar.setTabHistoryController(tabHistoryController);
 
         final String action = intent.getAction();
         if (Intent.ACTION_VIEW.equals(action)) {
             // Show the target URL immediately in the toolbar.
             mBrowserToolbar.setTitle(intent.getDataString());
 
+            showTabQueuePromptIfApplicable(intent);
+
             Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.INTENT);
         } else if (GuestSession.NOTIFICATION_INTENT.equals(action)) {
             GuestSession.handleIntent(this, intent);
         }
 
         if (HardwareUtils.isTablet()) {
             mTabStrip = (Refreshable) (((ViewStub) findViewById(R.id.new_tablet_tab_strip)).inflate());
         }
@@ -2422,16 +2426,21 @@ public class BrowserApp extends GeckoApp
                         Log.d(LOGTAG, "Read persisted locale " + locale);
                         if (locale == null) {
                             return;
                         }
                         onLocaleChanged(Locales.getLanguageTag(locale));
                     }
                 });
                 break;
+
+            case ACTIVITY_REQUEST_TAB_QUEUE:
+                TabQueueHelper.processTabQueuePromptResponse(resultCode, this);
+                break;
+
             default:
                 super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
     private void showFirstrunPager() {
         if (mFirstrunPane == null) {
             final ViewStub firstrunPagerStub = (ViewStub) findViewById(R.id.firstrun_pager_stub);
@@ -3413,16 +3422,18 @@ public class BrowserApp extends GeckoApp
             // GeckoApp.ACTION_HOMESCREEN_SHORTCUT means we're opening a bookmark that
             // was added to Android's homescreen.
             final TelemetryContract.Method method =
                 (isViewAction ? TelemetryContract.Method.INTENT : TelemetryContract.Method.HOMESCREEN);
 
             Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, method);
         }
 
+        showTabQueuePromptIfApplicable(intent);
+
         super.onNewIntent(intent);
 
         if (AppConstants.MOZ_ANDROID_BEAM && NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
             String uri = intent.getDataString();
             GeckoAppShell.sendEventToGecko(GeckoEvent.createURILoadEvent(uri));
         }
 
         // Only solicit feedback when the app has been launched from the icon shortcut.
@@ -3463,16 +3474,32 @@ public class BrowserApp extends GeckoApp
                     GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Feedback:Show", null));
                 }
             }
         } finally {
             StrictMode.setThreadPolicy(savedPolicy);
         }
     }
 
+    private void showTabQueuePromptIfApplicable(final Intent intent) {
+        ThreadUtils.postToBackgroundThread(new Runnable() {
+            @Override
+            public void run() {
+                // We only want to show the prompt if the browser has been opened from an external url
+                if (AppConstants.NIGHTLY_BUILD && AppConstants.MOZ_ANDROID_TAB_QUEUE
+                                               && mInitialized
+                                               && Intent.ACTION_VIEW.equals(intent.getAction())
+                                               && TabQueueHelper.shouldShowTabQueuePrompt(BrowserApp.this)) {
+                    Intent promptIntent = new Intent(BrowserApp.this, TabQueuePrompt.class);
+                    startActivityForResult(promptIntent, ACTIVITY_REQUEST_TAB_QUEUE);
+                }
+            }
+        });
+    }
+
     @Override
     protected NotificationClient makeNotificationClient() {
         // The service is local to Fennec, so we can use it to keep
         // Fennec alive during downloads.
         return new ServiceNotificationClient(getApplicationContext());
     }
 
     private void resetFeedbackLaunchCount() {
--- a/mobile/android/base/fxa/receivers/FxAccountDeletedService.java
+++ b/mobile/android/base/fxa/receivers/FxAccountDeletedService.java
@@ -4,16 +4,18 @@
 
 package org.mozilla.gecko.fxa.receivers;
 
 import org.mozilla.gecko.background.common.log.Logger;
 import org.mozilla.gecko.fxa.FxAccountConstants;
 import org.mozilla.gecko.fxa.sync.FxAccountNotificationManager;
 import org.mozilla.gecko.fxa.sync.FxAccountSyncAdapter;
 import org.mozilla.gecko.sync.config.AccountPickler;
+import org.mozilla.gecko.sync.repositories.android.AndroidBrowserHistoryDataExtender;
+import org.mozilla.gecko.sync.repositories.android.ClientsDatabase;
 import org.mozilla.gecko.sync.repositories.android.FennecTabsRepository;
 
 import android.app.IntentService;
 import android.content.Context;
 import android.content.Intent;
 
 /**
  * A background service to clean up after a Firefox Account is deleted.
@@ -58,19 +60,53 @@ public class FxAccountDeletedService ext
       return;
     }
 
     Logger.info(LOG_TAG, "Firefox account named " + accountName + " being removed; " +
         "deleting saved pickle file '" + FxAccountConstants.ACCOUNT_PICKLE_FILENAME + "'.");
     deletePickle(context);
 
     // Delete client database and non-local tabs.
-    Logger.info(LOG_TAG, "Deleting the entire clients database and non-local tabs");
+    Logger.info(LOG_TAG, "Deleting the entire Fennec clients database and non-local tabs");
     FennecTabsRepository.deleteNonLocalClientsAndTabs(context);
 
+
+    // Clear Firefox Sync client tables.
+    try {
+      Logger.info(LOG_TAG, "Deleting the Firefox Sync clients database.");
+      ClientsDatabase db = null;
+      try {
+        db = new ClientsDatabase(context);
+        db.wipeClientsTable();
+        db.wipeCommandsTable();
+      } finally {
+        if (db != null) {
+          db.close();
+        }
+      }
+    } catch (Exception e) {
+      Logger.warn(LOG_TAG, "Got exception deleting the Firefox Sync clients database; ignoring.", e);
+    }
+
+    // Clear Firefox Sync history data table.
+    try {
+      Logger.info(LOG_TAG, "Deleting the Firefox Sync extended history database.");
+      AndroidBrowserHistoryDataExtender historyDataExtender = null;
+      try {
+        historyDataExtender = new AndroidBrowserHistoryDataExtender(context);
+        historyDataExtender.wipe();
+      } finally {
+        if (historyDataExtender != null) {
+          historyDataExtender.close();
+        }
+      }
+    } catch (Exception e) {
+      Logger.warn(LOG_TAG, "Got exception deleting the Firefox Sync extended history database; ignoring.", e);
+    }
+
     // Remove any displayed notifications.
     new FxAccountNotificationManager(FxAccountSyncAdapter.NOTIFICATION_ID).clear(context);
 
     // Bug 1147275: Delete cached oauth tokens. There's no way to query all
     // oauth tokens from Android, so this is tricky to do comprehensively. We
     // can query, individually, for specific oauth tokens to delete, however.
   }
 
--- a/mobile/android/base/home/RemoteTabsBaseFragment.java
+++ b/mobile/android/base/home/RemoteTabsBaseFragment.java
@@ -4,16 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 package org.mozilla.gecko.home;
 
 import android.accounts.Account;
 import android.content.Context;
 import android.database.Cursor;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.v4.content.Loader;
 import android.util.Log;
 import android.view.ContextMenu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 
 import org.mozilla.gecko.GeckoProfile;
@@ -34,16 +35,19 @@ import java.util.List;
  * Fragment backed by <code>ExpandableListAdapter<code> to displays tabs from other devices.
  */
 public abstract class RemoteTabsBaseFragment extends HomeFragment implements RemoteClientsListener {
     // Logging tag name.
     private static final String LOGTAG = "GeckoRemoteTabsBaseFragment";
 
     private static final String[] STAGES_TO_SYNC_ON_REFRESH = new String[] { "clients", "tabs" };
 
+    // Update the "Last synced:" timestamps this frequently.
+    private static final long LAST_SYNCED_TIME_UPDATE_INTERVAL_IN_MILLISECONDS = 60 * 1000; // Once a minute.
+
     // Cursor loader ID.
     protected static final int LOADER_ID_REMOTE_TABS = 0;
 
     // Dialog fragment TAG.
     protected static final String DIALOG_TAG_REMOTE_TABS = "dialog_tag_remote_tabs";
 
     // Maintain group collapsed and hidden state.
     // Only accessed from the UI thread.
@@ -66,27 +70,36 @@ public abstract class RemoteTabsBaseFrag
     protected RemoteTabsSyncListener mSyncStatusListener;
 
     // Reference to the View to display when there are no results.
     protected View mEmptyView;
 
     // The footer view to display when there are hidden devices not shown.
     protected View mFooterView;
 
+    // Used to post update last synced time requests.  Should always execute on the main (UI) thread.
+    protected Handler mHandler;
+
+    // Runnable to update last synced time.
+    protected Runnable mLastSyncedTimeUpdateRunnable;
+
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
         mRefreshLayout = (GeckoSwipeRefreshLayout) view.findViewById(R.id.remote_tabs_refresh_layout);
         mRefreshLayout.setColorScheme(
                 R.color.swipe_refresh_orange, R.color.swipe_refresh_white,
                 R.color.swipe_refresh_orange, R.color.swipe_refresh_white);
         mRefreshLayout.setOnRefreshListener(new RemoteTabsRefreshListener());
 
         mSyncStatusListener = new RemoteTabsSyncListener();
         FirefoxAccounts.addSyncStatusListener(mSyncStatusListener);
+
+        mHandler = new Handler(); // Attached to current (assumed to be UI) thread.
+        mLastSyncedTimeUpdateRunnable = new LastSyncTimeUpdateRunnable();
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
 
         // This races when multiple Fragments are created. That's okay: one
         // will win, and thereafter, all will be okay. If we create and then
@@ -101,16 +114,22 @@ public abstract class RemoteTabsBaseFrag
     @Override
     public void onDestroyView() {
         super.onDestroyView();
 
         if (mSyncStatusListener != null) {
             FirefoxAccounts.removeSyncStatusListener(mSyncStatusListener);
             mSyncStatusListener = null;
         }
+
+        if (mLastSyncedTimeUpdateRunnable != null) {
+            mHandler.removeCallbacks(mLastSyncedTimeUpdateRunnable);
+            mLastSyncedTimeUpdateRunnable = null;
+            mHandler = null;
+        }
     }
 
     @Override
     public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
         if (!(menuInfo instanceof RemoteTabsClientContextMenuInfo)) {
             // Long pressed item was not a RemoteTabsGroup item. Superclass
             // can handle this.
             super.onCreateContextMenu(menu, view, menuInfo);
@@ -219,16 +238,17 @@ public abstract class RemoteTabsBaseFrag
                 if (sState.isClientHidden(client.guid)) {
                     it.remove();
                     mHiddenClients.add(client);
                 }
             }
 
             mAdapter.replaceClients(clients);
             updateUiFromClients(clients, mHiddenClients);
+            scheduleLastSyncedTime();
         }
 
         @Override
         public void onLoaderReset(Loader<Cursor> loader) {
             super.onLoaderReset(loader);
             mAdapter.replaceClients(null);
         }
     }
@@ -273,9 +293,30 @@ public abstract class RemoteTabsBaseFrag
     protected static class RemoteTabsClientContextMenuInfo extends HomeContextMenuInfo {
         protected final RemoteClient client;
 
         public RemoteTabsClientContextMenuInfo(View targetView, int position, long id, RemoteClient client) {
             super(targetView, position, id);
             this.client = client;
         }
     }
+
+    /**
+     * The Runnable that schedules a future update and updates the last synced time.
+     */
+    protected class LastSyncTimeUpdateRunnable implements Runnable  {
+        @Override
+        public void run() {
+            updateAndScheduleLastSyncedTime();
+        }
+    }
+
+    protected void scheduleLastSyncedTime() {
+        // Pushes back any existing schedule callback.
+        mHandler.postDelayed(mLastSyncedTimeUpdateRunnable, LAST_SYNCED_TIME_UPDATE_INTERVAL_IN_MILLISECONDS);
+    }
+
+    protected void updateAndScheduleLastSyncedTime() {
+        // This does not hit the database; it just makes consumers update their views.  Perfect!
+        mAdapter.notifyDataSetChanged();
+        scheduleLastSyncedTime();
+    }
 }
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -189,16 +189,21 @@
 
 <!ENTITY pref_tracking_protection_title "Tracking protection">
 <!ENTITY pref_tracking_protection_summary "&brandShortName; will prevent sites from tracking you">
 <!ENTITY pref_donottrack_title "Do not track">
 <!ENTITY pref_donottrack_summary "&brandShortName; will tell sites that you do not want to be tracked">
 
 <!ENTITY tab_queue_toast_message "Open later">
 <!ENTITY tab_queue_toast_action "Open now">
+<!ENTITY tab_queue_prompt_title "Opening multiple links?">
+<!ENTITY tab_queue_prompt_text "Open them without switching to Firefox each time.">
+<!ENTITY tab_queue_prompt_tip_text "you can change this later in Settings">
+<!ENTITY tab_queue_prompt_positive_action_button "Enable">
+<!ENTITY tab_queue_prompt_negative_action_button "Not now">
 <!-- Localization note (tab_queue_notification_text_plural) : The
      formatD is replaced with the number of tabs queued.  The
      number of tabs queued is always more than one.  We can't use
      Android plural forms, sadly. See Bug #753859. -->
 <!ENTITY tab_queue_notification_text_plural "&formatD; tabs queued">
 <!-- Localization note (tab_queue_notification_title_plural) : This is the
      title of a notification; we expect more than one tab queued. -->
 <!ENTITY tab_queue_notification_title_plural "Tabs Queued">
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -418,16 +418,17 @@ gbjar.sources += [
     'sqlite/MatrixBlobCursor.java',
     'sqlite/SQLiteBridge.java',
     'sqlite/SQLiteBridgeException.java',
     'SuggestClient.java',
     'SurfaceBits.java',
     'Tab.java',
     'tabqueue/TabQueueDispatcher.java',
     'tabqueue/TabQueueHelper.java',
+    'tabqueue/TabQueuePrompt.java',
     'tabqueue/TabQueueService.java',
     'Tabs.java',
     'tabs/PrivateTabsPanel.java',
     'tabs/TabCurve.java',
     'tabs/TabHistoryController.java',
     'tabs/TabHistoryFragment.java',
     'tabs/TabHistoryItemRow.java',
     'tabs/TabHistoryPage.java',
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..df814faba2b7c2970645db530f6257a2d96ab729
GIT binary patch
literal 954
zc$@*c14aCaP)<h;3K|Lk000e1NJLTq002k;001@!1^@s6WX0e1000AlNkl<Zc-rlo
zU5HIl6vr2$6nRl1F9;7Jn#5ojbI)E|lCO-++<VrRk_bg4Ul9+UP*Nfv4{F@bS^LEc
zkGyy>FTP41@FFRUF~<1*Sn)8aIgNYHo;l~9`>*vj-FxouuDkYH|GftCq~@S;6fvG4
ztM3r&PQ&`q@3>M5mQIJf%UE1Yte+dJfBqZ9_>ov|hrEic=NZNxfe{rHs>8X2BN-9_
z=HG1E3wcp7RD}pQ5t)QLYMB!eWbub#)l$oxNJ#o^OIu-F4Ng?BJ`2?(Kfoqqb+>%D
zWCGi(sOIRUNy3pJ#;zKis9?MgSyw6a8lAwAV7yp^(|2^6a?_Ly7i6`>AslHIw`Cd*
zF@A6c$KsJpPv!35NZ_FwoIV5hXSg628eGDmQ17e3=_^9q16dUX-XiH}oxx$;71PJ9
zAGzV0nox~!e8!zI9uC(L<6Xn}<!=G&Ad6wqHcqStI2C))&B2TjWYy(}7k}?twb7|%
zVb#L8aH7pH+*%<V7$#ZL&-6ScfA0d0d<m}LP^h**g&IPPm;N(NZ#D<snB-0?T;LLp
z&w6v5ChT;DzvaiRtfr<Jj$!?s7&k$sB38R&cAy=l099Jy#HyKofRmE&aEbM|N{&qm
z3iU4Gm{1eMk=#uuY*SvSJ6|`vzi{M^+|e=qtrTJr;)+<`Oa9^Tc1v61*vQkW?9F!x
zC$W1iht1ftV&Kgja5xsf8ur#FX(6<`>sGOgLcI!l$!DDB5{@6L=7etq@Qfosy_>TG
zuHnc?<cHqc<gJ9O4dcn;Yk3o=!Fc_5ymJMo#JJkwV5rteVRH@1Q9=G}0<{uc%Y+K0
z;maBv3ULJtl&D;oCZj_}0DbaVEr)@Y44=m0ja0*7>?s9$84Q|^!cby;GOci=96%aG
zj7Cy9Jv9eE%H|lPNz(Ni)-O{4s9W}bAdM0qS~~7Q%$yIhr~qk}+-?wKc@W@q$&D&x
zMLy#}86O4;j@)iQ)+7U{JiKE-@5O0^tV*m5VtneTL++Hr0kSSJ#mM5Vg!`O#GWA2X
zNbFU^`dl)Au%lQm%!O){tgMM)6=$>E1Xu^vELq2`$XjB3L+s6gJgC)rlZo}i{=yNU
zt$~^idD6;D3rCBC*bg|bhzqkIml8+7>SKL2m5fg$+aT|f^|?PABlzOaG>#Aa5Rc10
c*g^*M3pS0r)Cy1iH2?qr07*qoM6N<$g6Yx5Z~y=R
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe4a03dabda5caf5cbd656404dee41172a80f3f8
GIT binary patch
literal 675
zc$@*F0$lxxP)<h;3K|Lk000e1NJLTq001xm001Ni1^@s6&qcWk0007NNkl<Zc-qyN
zJ7^VA5I{%#p(29X2x1|2v5_=NP+rL186zfsS26GHTtyHGh@gU?_(6LS8%bf|2MxP3
ztrj+7VIdZRS}1C%2!aq16XW+*FNJw;Kkx15z_fGE9cJ&nvruMOybUb$&?<hhf^UKd
zFZ*H70;mF3ynU=VZI%Aa3|4wFe4}q^73G^D^mu5jcQKTaAToYae)e#!<%cl0g7VD>
zluklf;1Ku5mT$JwtIEo|V8O3YG!3CW$>p0TQf1{`aD;;eez4x|Eb@WS`2u_1?6QJC
z(pTP`tFru=0(%~JW|ODW5Qo~u+PvTvE-90|jqnt-!w+e>RlH-BzOmwO7JAtT(G*^J
zF(=wDa(nYCR(d<jd3y-}=0FNKq8%CKkGEgs=D-S9?beA%leU!&&2YA!$79fr!E5Ul
zTBWD45-L9D&|A}Od3Nm^;V8s`6)z-A{;95}4_Xii4zbWwTKPcCQHTpGy-vJ{lZ)t3
zH{`A25lDhnnn-`0<CU311xL6&Q{@#8LsD4rkxP(1@PQwC%d*H@p<jWTgOCQRxWy&N
zv<bm?S>$a*3|VjqtkR@Qm}juiPZraFPEa5BHd>*NxymbzKqskdZM9W=mXAE{hi>49
zn-*EcdtH-PoOXX7pxXq3XWh}(X?ZtBLSDFsn4A1NA@80QZkU0*3C3|f3%<|T^HZ)E
zP!tF5)>gU;FRi?LUO>_Gj`hyBLe~>+U@{Q14a$Uj=EnLRBKW-#(pD%VtklnnpIgb>
z$RL!N5%t!x;*0-mV4@zG0jL6Q#AKnXtn|ShxBue4mHr;ck-wamHbk)Gp)LRb002ov
JPDHLkV1nVmKMeo?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b9c6f1ad5ffee5f487e213700bb7e7126872a8bc
GIT binary patch
literal 1289
zc$@(V1@`)hP)<h;3K|Lk000e1NJLTq003YB002k`1^@s631{$Q000EgNkl<Zc-rlp
zX^0#}6o8*63LYRHAl|ped%dDYXLq_^A)Y8ByEEOd5Ji6|f+(U!B)=4Y_+JqfBxHx`
zSBQcLq9B6)5Cl;Jikj%gTqe;qF&b}qvq-VRX55|buIcIe;IY4UXXcyQs;*b>6$A!g
z73`}yo+7JW)vPuXt6%4S;_Et7)H1Li1d1Us>NK+Wk+$mZ1%uVvj%l6)fqdz7o0pPR
z-;3nF!8n^_cqIh#ldmoQ;3W4CV)di^9s~v><@gdOe{muIF-ccl0D;owyI}QQSQD0j
zHaO<w4;ZXAw>dr?0_DqhfivmLcr*n1%Xd#ZIR~q^Ah0k=cj96vzo5usgh2W7UEpd6
z%!fF-sBrmifABQ~=F8WNJ48-Nu?GTv<V(owK>(m_;tNZa?{>%UL*4Nq-vvGjbw+YC
zWO2I}`HZtIqmBsjMTUnUj*}qYll+v`6Hr%(o974lUgfK8{^a9Is4E>4o##_NF+LLH
z`x^N+ez?~1<s{0VeDxsIm9&fJ`joF39|-dOEx7kXUC}(g%%^-}bsywSV^w4S)Zodz
ze7T8E7-sooajO^c7XP9wz6bK8ZKG4j#xMT&V44`e)tP#_WmX&&<j=|17Vm~UNiE(f
z1*d&ds@pnQ+yu`^y^ZIQe;4G5&hVi{%z1yvqEkotn$@2=Q+Gg~$iLDO4;Y>wdv5H2
zvgK=wTYSkUMh$tAW;iK-cz`$cZdvO>+KtZkDL=Jw3VA{q-k=$O%i#^KmmTP+%9klO
z$*==?l4MasGyale@@W@k>Sic_DaNy;#?qI3>59q!16j4Rpr?b!Mn=BH-!(_K7trT~
z9~V4o)-+yf98`7r39H*c$a~Q(=|g-lIUOIn^q#EoGkwXIburDNTMODf;wvSVVQiFE
zou$Ypt2X(PpD^A6MN#$#lZBqFYF9zNWC2pf8=*+#MZBbIGkg*N_JO@X-R2pd<V);H
zOmsaIjjt`dgfuv}OyiJ+<ja)hOFm_I9h3oCeA~USm#2$QB+U)rkRB>u@@0xlIZ|bI
z|K00HzKgj7bG*j4d}92WY!pG6w9N8@$*K*W<j;T9V_fNR+S%<bt)3d3a5<n_#%{7|
z9DE`h4S6GVlTVC4r6#_1c)CO^&eTZ$t|V)&fMH^4P4gIHe6I#yz)mvJ)i8{-%(4UJ
zAbynPSK<m8sqB*c_o#?>SI0zGKvj@#Zda00@nD=Kqb`FA;c_ypKC7~P8ANjB3{;ht
zi4NBm->9PeUgx{PF{nCn3m~z2ref314tczWQGyt?WDJLY<m2{{y(WxIb9tX5LhlJa
z=?Q~Trehn&X{$aQ!jZpK`U7CZaoJSH?hrlgY^mkNc-rFQQU~NyzD$WyF$Z-;ss|*&
z<!R2}BnS9VcX}<MjO$9Cb~egp5d!~aR2xT<#dk^?`5WXSZ3xUq`UJ@0vjva*8Qq;Y
z6#{!d^q0EI0uEEY=~Yt%`XlG9Ip0vSesa2T5(F06ZOQ7>97g`Sww*W;0*mLS7p^)~
zGrl%JV(qKRX*?bRgY_d2<5No*`Cmxt0|L3N3vH=H`=2}9wY}bgKp{6+ec9&=FrC$x
z9|nP9kk%#QIMEj0l)IGY>NC~nBHk6rjxPTI3T{LMp*|_M00000NkvXXu0mjfRy}dM
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..03ba871f61efbab70f5ffaf4662be3b96d989b0c
GIT binary patch
literal 1861
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
F{{t>Zcenrm
rename from mobile/android/base/resources/drawable/firstrun_button_background.xml
rename to mobile/android/base/resources/drawable/button_background_action_orange_round.xml
--- a/mobile/android/base/resources/drawable/firstrun_button_background.xml
+++ b/mobile/android/base/resources/drawable/button_background_action_orange_round.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/.  -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
-          android:drawable="@drawable/firstrun_button_pressed" />
+          android:drawable="@drawable/button_pressed_action_orange_round" />
     <item android:state_enabled="true"
-          android:drawable="@drawable/firstrun_button_enabled" />
+          android:drawable="@drawable/button_enabled_action_orange_round" />
 </selector>
rename from mobile/android/base/resources/drawable/firstrun_button_enabled.xml
rename to mobile/android/base/resources/drawable/button_enabled_action_orange_round.xml
rename from mobile/android/base/resources/drawable/firstrun_button_pressed.xml
rename to mobile/android/base/resources/drawable/button_pressed_action_orange_round.xml
copy from mobile/android/base/resources/drawable/firstrun_button_background.xml
copy to mobile/android/base/resources/drawable/tab_queue_dismiss_button_foreground.xml
--- a/mobile/android/base/resources/drawable/firstrun_button_background.xml
+++ b/mobile/android/base/resources/drawable/tab_queue_dismiss_button_foreground.xml
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
+
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/.  -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
+
     <item android:state_pressed="true"
-          android:drawable="@drawable/firstrun_button_pressed" />
-    <item android:state_enabled="true"
-          android:drawable="@drawable/firstrun_button_enabled" />
-</selector>
+          android:color="@color/tab_queue_dismiss_button_foreground_pressed" />
+
+    <item android:color="@color/tab_queue_dismiss_button_foreground"/>
+
+</selector>
\ No newline at end of file
--- a/mobile/android/base/resources/layout-mdpi/firstrun_welcome_fragment.xml
+++ b/mobile/android/base/resources/layout-mdpi/firstrun_welcome_fragment.xml
@@ -47,17 +47,17 @@
                       android:paddingTop="20dp"
                       android:paddingBottom="30dp"
                       android:gravity="center"
                       android:textAppearance="@style/TextAppearance.FirstrunRegular.Body"
                       android:text="@string/firstrun_welcome_subtext"/>
 
             <Button android:id="@+id/welcome_account"
                     style="@style/Widget.Firstrun.Button"
-                    android:background="@drawable/firstrun_button_background"
+                    android:background="@drawable/button_background_action_orange_round"
                     android:layout_gravity="center"
                     android:text="@string/firstrun_welcome_button_account"/>
 
             <TextView android:id="@+id/welcome_browse"
                       android:layout_width="@dimen/firstrun_content_width"
                       android:layout_height="wrap_content"
                       android:minHeight="92dp"
                       android:padding="20dp"
--- a/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml
+++ b/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml
@@ -47,17 +47,17 @@
                       android:paddingTop="20dp"
                       android:paddingBottom="30dp"
                       android:gravity="center"
                       android:textAppearance="@style/TextAppearance.FirstrunRegular.Body"
                       android:text="@string/firstrun_welcome_subtext"/>
 
             <Button android:id="@+id/welcome_account"
                     style="@style/Widget.Firstrun.Button"
-                    android:background="@drawable/firstrun_button_background"
+                    android:background="@drawable/button_background_action_orange_round"
                     android:layout_gravity="center"
                     android:text="@string/firstrun_welcome_button_account"/>
 
             <TextView android:id="@+id/welcome_browse"
                       android:layout_width="@dimen/firstrun_content_width"
                       android:layout_height="wrap_content"
                       android:padding="20dp"
                       android:gravity="center"
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/resources/layout/tab_queue_prompt.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/tab_queue_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false">
+
+    <LinearLayout
+        android:layout_width="@dimen/tab_queue_container_width"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom|center"
+        android:background="@android:color/white"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="@dimen/tab_queue_content_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:fontFamily="sans-serif-light"
+            android:gravity="center_horizontal"
+            android:paddingTop="40dp"
+            android:text="@string/tab_queue_prompt_title"
+            android:textColor="@color/text_and_tabs_tray_grey"
+            android:textSize="20sp"
+
+            tools:text="Opening multiple links?" />
+
+        <TextView
+            android:id="@+id/text"
+            android:layout_width="@dimen/tab_queue_content_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:lineSpacingMultiplier="1.25"
+            android:paddingTop="20dp"
+            android:text="@string/tab_queue_prompt_text"
+            android:textColor="@color/placeholder_grey"
+            android:textSize="16sp"
+
+            tools:text="Open them without switching to Firefox each time." />
+
+        <TextView
+            android:id="@+id/tip_text"
+            android:layout_width="@dimen/tab_queue_content_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:paddingBottom="30dp"
+            android:paddingTop="20dp"
+            android:text="@string/tab_queue_prompt_tip_text"
+            android:textColor="@color/action_orange"
+            android:textSize="14sp"
+            android:textStyle="italic"
+
+            tools:text="you can change this later in Settings" />
+
+        <FrameLayout
+            android:id="@+id/bottom_container"
+            android:layout_width="match_parent"
+            android:layout_height="52dp"
+            android:layout_gravity="center"
+            android:layout_marginBottom="40dp">
+
+            <ImageView
+                android:id="@+id/enabled_confirmation"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:src="@drawable/img_check"
+                android:visibility="gone" />
+
+            <LinearLayout
+                android:id="@+id/button_container"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/cancel_button"
+                    style="@style/Widget.BaseButton"
+                    android:layout_width="@dimen/tab_queue_button_width"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:background="@color/android:white"
+                    android:text="@string/tab_queue_prompt_negative_action_button"
+                    android:textColor="@drawable/tab_queue_dismiss_button_foreground"
+                    android:textSize="16sp"
+
+                    tools:text="Not now" />
+
+                <Button
+                    android:id="@+id/ok_button"
+                    style="@style/Widget.BaseButton"
+                    android:layout_width="@dimen/tab_queue_button_width"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center"
+                    android:background="@drawable/button_background_action_orange_round"
+                    android:text="@string/tab_queue_prompt_positive_action_button"
+                    android:textColor="@android:color/white"
+                    android:textSize="16sp"
+
+                    tools:text="Enable" />
+
+            </LinearLayout>
+
+        </FrameLayout>
+
+    </LinearLayout>
+
+</FrameLayout>
\ No newline at end of file
--- a/mobile/android/base/resources/values-large-v11/dimens.xml
+++ b/mobile/android/base/resources/values-large-v11/dimens.xml
@@ -13,9 +13,11 @@
     <dimen name="browser_toolbar_favicon_size">16dp</dimen>
 
     <dimen name="tabs_counter_size">26sp</dimen>
     <dimen name="panel_grid_view_column_width">200dp</dimen>
 
     <dimen name="reading_list_row_height">96dp</dimen>
     <dimen name="reading_list_row_padding_right">15dp</dimen>
 
+    <dimen name="tab_queue_container_width">360dp</dimen>
+
 </resources>
--- a/mobile/android/base/resources/values/colors.xml
+++ b/mobile/android/base/resources/values/colors.xml
@@ -65,16 +65,21 @@
   <!-- highlight-focused on private nav button: 10% white over background_private -->
   <color name="highlight_nav_focused_pb">#FF3F423F</color>
 
   <!-- Firstrun tour-->
   <color name="firstrun_background">#99000000</color>
   <color name="firstrun_tabstrip">#1193CB</color>
   <color name="firstrun_pager_background">#16A3DF</color>
 
+  <!-- Tab Queue -->
+  <color name="tab_queue_dismiss_button_foreground">#16A3DF</color>
+  <color name="tab_queue_dismiss_button_foreground_pressed">#1193CB</color>
+  <color name="tab_queue_background">#16A3DF</color>
+
   <!--
       Application theme colors
   -->
   <!-- Default colors -->
   <color name="text_color_tertiary">#9198A1</color>
 
   <!-- Default inverse colors -->
   <color name="text_color_primary_inverse">#F5F5F5</color>
--- a/mobile/android/base/resources/values/dimens.xml
+++ b/mobile/android/base/resources/values/dimens.xml
@@ -60,16 +60,20 @@
          commonly-used size of favicon and, performance permitting, fetch the remainder from the
          database. The largest available size is always stored in the database, regardless of this
          value.-->
     <dimen name="favicon_largest_interesting_size">32dp</dimen>
 
     <dimen name="firstrun_content_width">300dp</dimen>
     <dimen name="firstrun_min_height">180dp</dimen>
 
+    <dimen name="tab_queue_content_width">260dp</dimen>
+    <dimen name="tab_queue_button_width">148dp</dimen>
+    <dimen name="tab_queue_container_width">@dimen/match_parent</dimen>
+
     <!-- Site security icon -->
     <!-- If one of these values changes, they all should. -->
     <dimen name="site_security_bottom_margin">.5dp</dimen>
     <dimen name="new_tablet_site_security_unknown_inset_top">1dp</dimen>
     <dimen name="new_tablet_site_security_unknown_inset_bottom">-1dp</dimen>
 
     <!-- Regular page row on about:home -->
     <dimen name="page_row_height">64dp</dimen>
@@ -202,9 +206,13 @@
     <dimen name="find_in_page_text_margin_left">5dip</dimen>
     <dimen name="find_in_page_text_margin_right">12dip</dimen>
     <dimen name="find_in_page_text_padding_left">10dip</dimen>
     <dimen name="find_in_page_text_padding_right">10dip</dimen>
     <dimen name="find_in_page_status_margin_right">10dip</dimen>
     <dimen name="find_in_page_matchcase_padding">10dip</dimen>
     <dimen name="find_in_page_control_margin_top">2dip</dimen>
 
+    <!-- http://blog.danlew.net/2015/01/06/handling-android-resources-with-non-standard-formats/ -->
+    <item name="match_parent" type="dimen">-1</item>
+    <item name="wrap_content" type="dimen">-2</item>
+
 </resources>
--- a/mobile/android/base/resources/values/themes.xml
+++ b/mobile/android/base/resources/values/themes.xml
@@ -101,18 +101,18 @@
     </style>
 
     <style name="Gecko.Preferences" parent="GeckoPreferencesBase">
         <item name="floatingHintEditTextStyle">@style/FloatingHintEditText</item>
     </style>
 
     <style name="GeckoStartPane" parent="GeckoBase"/>
 
-    <!-- Make the share overlay activity appear like an overlay. -->
-    <style name="ShareOverlayActivity">
+    <!-- Make an activity appear like an overlay. -->
+    <style name="OverlayActivity">
         <item name="android:windowBackground">@android:color/transparent</item>
         <item name="android:windowNoTitle">true</item>
         <item name="android:windowIsTranslucent">true</item>
         <item name="android:backgroundDimEnabled">true</item>
 
         <!-- Set the app's title bar color in the recent app switcher.
 
              Note: We'd prefer not to show up in the recent app switcher (bug 1137928). -->
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -236,17 +236,21 @@
   <string name="pref_import_android_summary">&pref_import_android_summary;</string>
   <string name="pref_update_autodownload">&pref_update_autodownload2;</string>
   <string name="pref_update_autodownload_wifi">&pref_update_autodownload_wifi;</string>
   <string name="pref_update_autodownload_disabled">&pref_update_autodownload_never;</string>
   <string name="pref_update_autodownload_enabled">&pref_update_autodownload_always;</string>
 
   <string name="pref_tab_queue_title">&pref_tab_queue_title;</string>
   <string name="pref_tab_queue_summary">&pref_tab_queue_summary;</string>
-
+  <string name="tab_queue_prompt_title">&tab_queue_prompt_title;</string>
+  <string name="tab_queue_prompt_text">&tab_queue_prompt_text;</string>
+  <string name="tab_queue_prompt_tip_text">&tab_queue_prompt_tip_text;</string>
+  <string name="tab_queue_prompt_positive_action_button">&tab_queue_prompt_positive_action_button;</string>
+  <string name="tab_queue_prompt_negative_action_button">&tab_queue_prompt_negative_action_button;</string>
   <string name="tab_queue_toast_message">&tab_queue_toast_message;</string>
   <string name="tab_queue_toast_action">&tab_queue_toast_action;</string>
   <string name="tab_queue_notification_text_singular">&tab_queue_notification_text_singular;</string>
   <string name="tab_queue_notification_text_plural">&tab_queue_notification_text_plural;</string>
   <string name="tab_queue_notification_title_singular">&tab_queue_notification_title_singular;</string>
   <string name="tab_queue_notification_title_plural">&tab_queue_notification_title_plural;</string>
 
   <string name="pref_about_firefox">&pref_about_firefox;</string>
--- a/mobile/android/base/tabqueue/TabQueueHelper.java
+++ b/mobile/android/base/tabqueue/TabQueueHelper.java
@@ -29,16 +29,64 @@ import org.json.JSONObject;
 public class TabQueueHelper {
     private static final String LOGTAG = "Gecko" + TabQueueHelper.class.getSimpleName();
 
     public static final String FILE_NAME = "tab_queue_url_list.json";
     public static final String LOAD_URLS_ACTION = "TAB_QUEUE_LOAD_URLS_ACTION";
     public static final int TAB_QUEUE_NOTIFICATION_ID = R.id.tabQueueNotification;
 
     public static final String PREF_TAB_QUEUE_COUNT = "tab_queue_count";
+    public static final String PREF_TAB_QUEUE_LAUNCHES = "tab_queue_launches";
+    public static final String PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN = "tab_queue_times_prompt_shown";
+
+    public static final int MAX_TIMES_TO_SHOW_PROMPT = 3;
+    public static final int EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT = 3;
+
+    // result codes for returning from the prompt
+    public static final int TAB_QUEUE_YES = 201;
+    public static final int TAB_QUEUE_NO = 202;
+
+    /**
+     * Check if we should show the tab queue prompt
+     *
+     * @param context
+     * @return true if we should display the prompt, false if not.
+     */
+    public static boolean shouldShowTabQueuePrompt(Context context) {
+        final SharedPreferences prefs = GeckoSharedPrefs.forApp(context);
+
+        boolean isTabQueueEnabled = prefs.getBoolean(GeckoPreferences.PREFS_TAB_QUEUE, false);
+        int numberOfTimesTabQueuePromptSeen = prefs.getInt(PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN, 0);
+
+        // Exit early if the feature is already enabled or the user has seen the
+        // prompt more than MAX_TIMES_TO_SHOW_PROMPT times.
+        if (isTabQueueEnabled || numberOfTimesTabQueuePromptSeen >= MAX_TIMES_TO_SHOW_PROMPT) {
+            return false;
+        }
+
+        final int viewActionIntentLaunches = prefs.getInt(PREF_TAB_QUEUE_LAUNCHES, 0) + 1;
+        if (viewActionIntentLaunches < EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT) {
+            // Allow a few external links to open before we prompt the user.
+            prefs.edit().putInt(PREF_TAB_QUEUE_LAUNCHES, viewActionIntentLaunches).apply();
+        } else if (viewActionIntentLaunches == EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT) {
+            // Reset to avoid repeatedly showing the prompt if the user doesn't interact with it and
+            // we get more external VIEW action intents in.
+            final SharedPreferences.Editor editor = prefs.edit();
+            editor.remove(TabQueueHelper.PREF_TAB_QUEUE_LAUNCHES);
+
+            int timesPromptShown = prefs.getInt(TabQueueHelper.PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN, 0) + 1;
+            editor.putInt(TabQueueHelper.PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN, timesPromptShown);
+            editor.apply();
+
+            // Show the prompt
+            return true;
+        }
+
+        return false;
+    }
 
     /**
      * Reads file and converts any content to JSON, adds passed in URL to the data and writes back to the file,
      * creating the file if it doesn't already exist.  This should not be run on the UI thread.
      *
      * @param profile
      * @param url      URL to add
      * @param filename filename to add URL to
@@ -142,9 +190,42 @@ public class TabQueueHelper {
         } catch (IllegalArgumentException e) {
             Log.e(LOGTAG, "Error deleting Tab Queue data file.", e);
         }
 
         // TODO: Use profile shared prefs when bug 1147925 gets fixed.
         final SharedPreferences prefs = GeckoSharedPrefs.forApp(context);
         prefs.edit().remove(PREF_TAB_QUEUE_COUNT).apply();
     }
+
+    public static void processTabQueuePromptResponse(int resultCode, Context context) {
+        final SharedPreferences prefs = GeckoSharedPrefs.forApp(context);
+        final SharedPreferences.Editor editor = prefs.edit();
+
+        switch (resultCode) {
+            case TAB_QUEUE_YES:
+                editor.putBoolean(GeckoPreferences.PREFS_TAB_QUEUE, true);
+
+                // By making this one more than EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT we ensure the prompt
+                // will never show again without having to keep track of an extra pref.
+                editor.putInt(TabQueueHelper.PREF_TAB_QUEUE_LAUNCHES,
+                                     TabQueueHelper.EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT + 1);
+                break;
+
+            case TAB_QUEUE_NO:
+                // The user clicked the 'no' button, so let's make sure the user never sees the prompt again by
+                // maxing out the pref used to count the VIEW action intents received and times they've seen the prompt.
+
+                editor.putInt(TabQueueHelper.PREF_TAB_QUEUE_LAUNCHES,
+                                     TabQueueHelper.EXTERNAL_LAUNCHES_BEFORE_SHOWING_PROMPT + 1);
+
+                editor.putInt(TabQueueHelper.PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN,
+                                     TabQueueHelper.MAX_TIMES_TO_SHOW_PROMPT + 1);
+                break;
+
+            default:
+                // We shouldn't ever get here.
+                Log.w(LOGTAG, "Unrecognized result code received from the tab queue prompt: " + resultCode);
+        }
+
+        editor.apply();
+    }
 }
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/tabqueue/TabQueuePrompt.java
@@ -0,0 +1,157 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.tabqueue;
+
+import org.mozilla.gecko.Locales;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.animation.TransitionsTracker;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.MotionEvent;
+import android.view.View;
+import com.nineoldandroids.animation.Animator;
+import com.nineoldandroids.animation.AnimatorListenerAdapter;
+import com.nineoldandroids.animation.AnimatorSet;
+import com.nineoldandroids.animation.ObjectAnimator;
+import com.nineoldandroids.view.ViewHelper;
+
+public class TabQueuePrompt extends Locales.LocaleAwareActivity {
+    public static final String LOGTAG = "Gecko" + TabQueuePrompt.class.getSimpleName();
+
+    // Flag set during animation to prevent animation multiple-start.
+    private boolean isAnimating;
+
+    private View containerView;
+    private View buttonContainer;
+    private View enabledConfirmation;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        showTabQueueEnablePrompt();
+    }
+
+    private void showTabQueueEnablePrompt() {
+        setContentView(R.layout.tab_queue_prompt);
+
+        findViewById(R.id.ok_button).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onConfirmButtonPressed();
+            }
+        });
+        findViewById(R.id.cancel_button).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                setResult(TabQueueHelper.TAB_QUEUE_NO);
+                finish();
+            }
+        });
+
+        containerView = findViewById(R.id.tab_queue_container);
+        buttonContainer = findViewById(R.id.button_container);
+        enabledConfirmation = findViewById(R.id.enabled_confirmation);
+
+        ViewHelper.setTranslationY(containerView, 500);
+        ViewHelper.setAlpha(containerView, 0);
+
+        final Animator translateAnimator = ObjectAnimator.ofFloat(containerView, "translationY", 0);
+        translateAnimator.setDuration(400);
+
+        final Animator alphaAnimator = ObjectAnimator.ofFloat(containerView, "alpha", 1);
+        alphaAnimator.setStartDelay(200);
+        alphaAnimator.setDuration(600);
+
+        final AnimatorSet set = new AnimatorSet();
+        set.playTogether(alphaAnimator, translateAnimator);
+        set.setStartDelay(400);
+        TransitionsTracker.track(set);
+
+        set.start();
+    }
+
+    @Override
+    public void finish() {
+        super.finish();
+
+        // Don't perform an activity-dismiss animation.
+        overridePendingTransition(0, 0);
+    }
+
+    private void onConfirmButtonPressed() {
+        enabledConfirmation.setVisibility(View.VISIBLE);
+        ViewHelper.setAlpha(enabledConfirmation, 0);
+
+        final Animator buttonsAlphaAnimator = ObjectAnimator.ofFloat(buttonContainer, "alpha", 0);
+        buttonsAlphaAnimator.setDuration(300);
+
+        final Animator messagesAlphaAnimator = ObjectAnimator.ofFloat(enabledConfirmation, "alpha", 1);
+        messagesAlphaAnimator.setDuration(300);
+        messagesAlphaAnimator.setStartDelay(200);
+
+        final AnimatorSet set = new AnimatorSet();
+        set.playTogether(buttonsAlphaAnimator, messagesAlphaAnimator);
+        TransitionsTracker.track(set);
+
+        set.addListener(new AnimatorListenerAdapter() {
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        slideOut();
+                        setResult(TabQueueHelper.TAB_QUEUE_YES);
+                    }
+                }, 1000);
+            }
+        });
+
+        set.start();
+    }
+
+    /**
+     * Slide the overlay down off the screen and destroy it.
+     */
+    private void slideOut() {
+        if (isAnimating) {
+            return;
+        }
+
+        isAnimating = true;
+
+        ObjectAnimator animator = ObjectAnimator.ofFloat(containerView, "translationY", containerView.getHeight());
+        animator.addListener(new AnimatorListenerAdapter() {
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                finish();
+            }
+
+        });
+        animator.start();
+    }
+
+    /**
+     * Close the dialog if back is pressed.
+     */
+    @Override
+    public void onBackPressed() {
+        slideOut();
+    }
+
+    /**
+     * Close the dialog if the anything that isn't a button is tapped.
+     */
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        slideOut();
+        return true;
+    }
+}
\ No newline at end of file
--- a/toolkit/components/telemetry/TelemetryPing.jsm
+++ b/toolkit/components/telemetry/TelemetryPing.jsm
@@ -245,16 +245,25 @@ this.TelemetryPing = Object.freeze({
     options.addClientId = aOptions.addClientId || false;
     options.addEnvironment = aOptions.addEnvironment || false;
     options.overwrite = aOptions.overwrite || false;
 
     return Impl.savePing(aType, aPayload, options);
   },
 
   /**
+   * Send the persisted pings to the server.
+   *
+   * @return Promise A promise that is resolved when all pings finished sending or failed.
+   */
+  sendPersistedPings: function() {
+    return Impl.sendPersistedPings();
+  },
+
+  /**
    * The client id send with the telemetry ping.
    *
    * @return The client id as string, or null.
    */
    get clientID() {
     return Impl.clientID;
    },
 
--- a/toolkit/components/telemetry/TelemetrySession.jsm
+++ b/toolkit/components/telemetry/TelemetrySession.jsm
@@ -34,17 +34,16 @@ const IS_CONTENT_PROCESS = (function() {
 const PAYLOAD_VERSION = 4;
 const PING_TYPE_MAIN = "main";
 const PING_TYPE_SAVED_SESSION = "saved-session";
 const RETENTION_DAYS = 14;
 
 const REASON_ABORTED_SESSION = "aborted-session";
 const REASON_DAILY = "daily";
 const REASON_SAVED_SESSION = "saved-session";
-const REASON_IDLE_DAILY = "idle-daily";
 const REASON_GATHER_PAYLOAD = "gather-payload";
 const REASON_TEST_PING = "test-ping";
 const REASON_ENVIRONMENT_CHANGE = "environment-change";
 const REASON_SHUTDOWN = "shutdown";
 
 const ENVIRONMENT_CHANGE_LISTENER = "TelemetrySession::onEnvironmentChange";
 
 const MS_IN_ONE_HOUR  = 60 * 60 * 1000;
@@ -93,17 +92,17 @@ const SCHEDULER_RETRY_ATTEMPTS = 3;
 const SCHEDULER_MIDNIGHT_TOLERANCE_MS = 15 * 60 * 1000;
 
 // Coalesce the daily and aborted-session pings if they are both due within
 // two minutes from each other.
 const SCHEDULER_COALESCE_THRESHOLD_MS = 2 * 60 * 1000;
 
 // Seconds of idle time before pinging.
 // On idle-daily a gather-telemetry notification is fired, during it probes can
-// start asynchronous tasks to gather data.  On the next idle the data is sent.
+// start asynchronous tasks to gather data.
 const IDLE_TIMEOUT_SECONDS = 5 * 60;
 
 // The frequency at which we persist session data to the disk to prevent data loss
 // in case of aborted sessions (currently 5 minutes).
 const ABORTED_SESSION_UPDATE_INTERVAL_MS = 5 * 60 * 1000;
 
 var gLastMemoryPoll = null;
 
@@ -1458,20 +1457,16 @@ let Impl = {
     Services.obs.addObserver(this, "idle-daily", false);
   },
 
   detachObservers: function detachObservers() {
     if (!this._initialized)
       return;
     Services.obs.removeObserver(this, "idle-daily");
     Services.obs.removeObserver(this, "cycle-collector-begin");
-    if (this._isIdleObserver) {
-      idleService.removeIdleObserver(this, IDLE_TIMEOUT_SECONDS);
-      this._isIdleObserver = false;
-    }
   },
 
   /**
    * Perform telemetry initialization for either chrome or content process.
    */
   enableTelemetryRecording: function enableTelemetryRecording(testing) {
 
 #ifdef MOZILLA_OFFICIAL
@@ -1785,31 +1780,18 @@ let Impl = {
     this.gatherStartupHistograms();
     this._slowSQLStartup = Telemetry.slowSQL;
   },
 
   setAddOns: function setAddOns(aAddOns) {
     this._addons = aAddOns;
   },
 
-  sendIdlePing: function sendIdlePing(aTest) {
-    this._log.trace("sendIdlePing");
-    if (this._isIdleObserver) {
-      idleService.removeIdleObserver(this, IDLE_TIMEOUT_SECONDS);
-      this._isIdleObserver = false;
-    }
-    if (aTest) {
-      return this.send(REASON_TEST_PING);
-    } else if (Telemetry.isOfficialTelemetry) {
-      return this.send(REASON_IDLE_DAILY);
-    }
-  },
-
   testPing: function testPing() {
-    return this.sendIdlePing(true);
+    return this.send(REASON_TEST_PING);
   },
 
   /**
    * This observer drives telemetry.
    */
   observe: function (aSubject, aTopic, aData) {
     if (!this._log) {
       this._log = Log.repository.getLoggerWithMessagePrefix(LOGGER_NAME, LOGGER_PREFIX);
@@ -1853,29 +1835,28 @@ let Impl = {
     case "sessionstore-windows-restored":
       Services.obs.removeObserver(this, "sessionstore-windows-restored");
       this._hasWindowRestoredObserver = false;
       // Check whether debugger was attached during startup
       let debugService = Cc["@mozilla.org/xpcom/debug;1"].getService(Ci.nsIDebug2);
       gWasDebuggerAttached = debugService.isDebuggerAttached;
       this.gatherStartup();
       break;
-    case REASON_IDLE_DAILY:
+    case "idle-daily":
       // Enqueue to main-thread, otherwise components may be inited by the
       // idle-daily category and miss the gather-telemetry notification.
       Services.tm.mainThread.dispatch((function() {
-        // Notify that data should be gathered now, since ping will happen soon.
+        // Notify that data should be gathered now.
+        // TODO: We are keeping this behaviour for now but it will be removed as soon as
+        // bug 1127907 lands.
         Services.obs.notifyObservers(null, "gather-telemetry", null);
-        // The ping happens at the first idle of length IDLE_TIMEOUT_SECONDS.
-        idleService.addIdleObserver(this, IDLE_TIMEOUT_SECONDS);
-        this._isIdleObserver = true;
       }).bind(this), Ci.nsIThread.DISPATCH_NORMAL);
-      break;
-    case "idle":
-      this.sendIdlePing(false, this._server);
+      // TODO: This is just a fallback for now. Remove this when we have ping send
+      // scheduling properly factored out and driven independently of this module.
+      TelemetryPing.sendPersistedPings();
       break;
 
 #ifdef MOZ_WIDGET_ANDROID
     // On Android, we can get killed without warning once we are in the background,
     // but we may also submit data and/or come back into the foreground without getting
     // killed. To deal with this, we save the current session data to file when we are
     // put into the background. This handles the following post-backgrounding scenarios:
     // 1) We are killed immediately. In this case the current session data (which we
@@ -2057,17 +2038,16 @@ let Impl = {
       overrideEnvironment: oldEnvironment,
     };
     TelemetryPing.send(getPingType(payload), payload, options);
   },
 
   _isClassicReason: function(reason) {
     const classicReasons = [
       REASON_SAVED_SESSION,
-      REASON_IDLE_DAILY,
       REASON_GATHER_PAYLOAD,
       REASON_TEST_PING,
     ];
     return classicReasons.indexOf(reason) != -1;
   },
 
   /**
    * Get an object describing the current state of this module for AsyncShutdown diagnostics.
--- a/toolkit/components/telemetry/docs/main-ping.rst
+++ b/toolkit/components/telemetry/docs/main-ping.rst
@@ -10,16 +10,18 @@ This ping is triggered by different scen
 * ``aborted-session`` - this ping is regularly saved to disk (every 5 minutes), overwriting itself, and deleted at shutdown. If a previous aborted session ping is found at startup, it gets sent to the server. The first aborted-session ping is generated as soon as Telemetry starts
 * ``environment-change`` - the :doc:`environment` changed, so the session measurements got reset and a new subsession starts
 * ``shutdown`` - triggered when the browser session ends
 * ``daily`` - a session split triggered in 24h hour intervals at local midnight. If an ``environment-change`` ping is generated by the time it should be sent, the daily ping is rescheduled for the next midnight
 * ``saved-session`` - the *"classic"* Telemetry payload with measurements covering the whole browser session (only submitted for a transition period)
 
 Most reasons lead to a session split, initiating a new *subsession*. We reset important measurements for those subsessions.
 
+*Note:* ``saved-session`` is sent with a different ping type (``saved-session``, not ``main``), but otherwise has the same format as discussed here.
+
 Structure::
 
     {
       version: 4,
 
       info: {
         reason: <string>, // what triggered this ping: "saved-session", "environment-change", "shutdown", ...
         revision: <string>, // the Histograms.json revision
--- a/toolkit/components/telemetry/docs/pings.rst
+++ b/toolkit/components/telemetry/docs/pings.rst
@@ -24,12 +24,12 @@ The telemetry server team is working tow
 * `2XX` - success, don't resubmit
 * `4XX` - there was some problem with the request - the client should not try to resubmit as it would just receive the same response
 * `5XX` - there was a server-side error, the client should try to resubmit later
 
 Ping types
 ==========
 
 * :doc:`main <main-ping>` - contains the information collected by Telemetry (Histograms, hang stacks, ...)
-* :doc:`saved-session <main-ping>` - contains the *"classic"* Telemetry payload with measurements covering the whole browser session. Used to make storage of saved-session easier server-side.
+* :doc:`saved-session <main-ping>` - has the same format as a main ping, but it contains the *"classic"* Telemetry payload with measurements covering the whole browser session. This is only a separate type to make storage of saved-session easier server-side.
 * ``activation`` - *planned* - sent right after installation or profile creation
 * ``upgrade`` - *planned* - sent right after an upgrade
 * ``deletion`` - *planned* - on opt-out we may have to tell the server to delete user data
--- a/toolkit/components/telemetry/tests/unit/head.js
+++ b/toolkit/components/telemetry/tests/unit/head.js
@@ -13,16 +13,57 @@ const MILLISECONDS_PER_MINUTE = 60 * 100
 const MILLISECONDS_PER_HOUR = 60 * MILLISECONDS_PER_MINUTE;
 const MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR;
 
 const HAS_DATAREPORTINGSERVICE = "@mozilla.org/datareporting/service;1" in Components.classes;
 
 let gOldAppInfo = null;
 let gGlobalScope = this;
 
+/**
+ * Decode the payload of an HTTP request into a ping.
+ * @param {Object} request The data representing an HTTP request (nsIHttpRequest).
+ * @return {Object} The decoded ping payload.
+ */
+function decodeRequestPayload(request) {
+  let s = request.bodyInputStream;
+  let payload = null;
+  let decoder = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON)
+
+  if (request.getHeader("content-encoding") == "gzip") {
+    let observer = {
+      buffer: "",
+      onStreamComplete: function(loader, context, status, length, result) {
+        this.buffer = String.fromCharCode.apply(this, result);
+      }
+    };
+
+    let scs = Cc["@mozilla.org/streamConverters;1"]
+              .getService(Ci.nsIStreamConverterService);
+    let listener = Cc["@mozilla.org/network/stream-loader;1"]
+                  .createInstance(Ci.nsIStreamLoader);
+    listener.init(observer);
+    let converter = scs.asyncConvertData("gzip", "uncompressed",
+                                         listener, null);
+    converter.onStartRequest(null, null);
+    converter.onDataAvailable(null, null, s, 0, s.available());
+    converter.onStopRequest(null, null, null);
+    let unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
+                    .createInstance(Ci.nsIScriptableUnicodeConverter);
+    unicodeConverter.charset = "UTF-8";
+    let utf8string = unicodeConverter.ConvertToUnicode(observer.buffer);
+    utf8string += unicodeConverter.Finish();
+    payload = decoder.decode(utf8string);
+  } else {
+    payload = decoder.decodeFromStream(s, s.available());
+  }
+
+  return payload;
+}
+
 function loadAddonManager(id, name, version, platformVersion) {
   let ns = {};
   Cu.import("resource://gre/modules/Services.jsm", ns);
   let head = "../../../../mozapps/extensions/test/xpcshell/head_addons.js";
   let file = do_get_file(head);
   let uri = ns.Services.io.newFileURI(file);
   ns.Services.scriptloader.loadSubScript(uri.spec, gGlobalScope);
   createAppInfo(id, name, version, platformVersion);
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryPing.js
@@ -71,52 +71,16 @@ function wrapWithExceptionHandler(f) {
   return wrapper;
 }
 
 function registerPingHandler(handler) {
   gHttpServer.registerPrefixHandler("/submit/telemetry/",
 				   wrapWithExceptionHandler(handler));
 }
 
-function decodeRequestPayload(request) {
-  let s = request.bodyInputStream;
-  let payload = null;
-  let decoder = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON)
-
-  if (request.getHeader("content-encoding") == "gzip") {
-    let observer = {
-      buffer: "",
-      onStreamComplete: function(loader, context, status, length, result) {
-        this.buffer = String.fromCharCode.apply(this, result);
-      }
-    };
-
-    let scs = Cc["@mozilla.org/streamConverters;1"]
-              .getService(Ci.nsIStreamConverterService);
-    let listener = Cc["@mozilla.org/network/stream-loader;1"]
-                  .createInstance(Ci.nsIStreamLoader);
-    listener.init(observer);
-    let converter = scs.asyncConvertData("gzip", "uncompressed",
-                                         listener, null);
-    converter.onStartRequest(null, null);
-    converter.onDataAvailable(null, null, s, 0, s.available());
-    converter.onStopRequest(null, null, null);
-    let unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                    .createInstance(Ci.nsIScriptableUnicodeConverter);
-    unicodeConverter.charset = "UTF-8";
-    let utf8string = unicodeConverter.ConvertToUnicode(observer.buffer);
-    utf8string += unicodeConverter.Finish();
-    payload = decoder.decode(utf8string);
-  } else {
-    payload = decoder.decodeFromStream(s, s.available());
-  }
-
-  return payload;
-}
-
 function checkPingFormat(aPing, aType, aHasClientId, aHasEnvironment) {
   const MANDATORY_PING_FIELDS = [
     "type", "id", "creationDate", "version", "application", "payload"
   ];
 
   const APPLICATION_TEST_DATA = {
     buildId: "2007010101",
     name: APP_NAME,
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryPing_idle.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetryPing_idle.js
@@ -1,20 +1,72 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Check that TelemetrySession notifies correctly on idle-daily.
 
-const Cu = Components.utils;
+const { utils: Cu, interfaces: Ci, classes: Cc } = Components;
 
+Cu.import("resource://testing-common/httpd.js", this);
+Cu.import("resource://gre/modules/PromiseUtils.jsm", this);
 Cu.import("resource://gre/modules/Services.jsm", this);
+Cu.import("resource://gre/modules/Task.jsm", this);
+Cu.import("resource://gre/modules/TelemetryFile.jsm", this);
+Cu.import("resource://gre/modules/TelemetryPing.jsm", this);
 Cu.import("resource://gre/modules/TelemetrySession.jsm", this);
 
+const PREF_ENABLED = "toolkit.telemetry.enabled";
+const PREF_FHR_UPLOAD_ENABLED = "datareporting.healthreport.uploadEnabled";
+
+let gHttpServer = null;
+
 function run_test() {
   do_test_pending();
+  do_get_profile();
 
-  Services.obs.addObserver(function observeTelemetry() {
-    Services.obs.removeObserver(observeTelemetry, "gather-telemetry");
-    do_test_finished();
-  }, "gather-telemetry", false);
+  Services.prefs.setBoolPref(PREF_ENABLED, true);
+  Services.prefs.setBoolPref(PREF_FHR_UPLOAD_ENABLED, true);
+
+  // Start the webserver to check if the pending ping correctly arrives.
+  gHttpServer = new HttpServer();
+  gHttpServer.start(-1);
+
+  run_next_test();
+}
+
+add_task(function* testSendPendingOnIdleDaily() {
+  // Create a valid pending ping.
+  const PENDING_PING = {
+    id: "2133234d-4ea1-44f4-909e-ce8c6c41e0fc",
+    type: "test-ping",
+    version: 4,
+    application: {},
+    payload: {},
+  };
+  yield TelemetryFile.savePing(PENDING_PING, true);
 
+  // Telemetry will not send this ping at startup, because it's not overdue.
+  yield TelemetryPing.setup();
+  TelemetryPing.setServer("http://localhost:" + gHttpServer.identity.primaryPort);
+
+  let pendingPromise = new Promise(resolve =>
+    gHttpServer.registerPrefixHandler("/submit/telemetry/", request => resolve(request)));
+
+  let gatherPromise = PromiseUtils.defer();
+  Services.obs.addObserver(gatherPromise.resolve, "gather-telemetry", false);
+
+  // Check that we are correctly receiving the gather-telemetry notification.
   TelemetrySession.observe(null, "idle-daily", null);
-}
+  yield gatherPromise;
+  Assert.ok(true, "Received gather-telemetry notification.");
+
+  Services.obs.removeObserver(gatherPromise.resolve, "gather-telemetry");
+
+  // Check that the pending ping is correctly received.
+  let request = yield pendingPromise;
+  let ping = decodeRequestPayload(request);
+
+  // Validate the ping data.
+  Assert.equal(ping.id, PENDING_PING.id);
+  Assert.equal(ping.type, PENDING_PING.type);
+
+  gHttpServer.stop(do_test_finished);
+});
--- a/toolkit/components/telemetry/tests/unit/test_TelemetrySession.js
+++ b/toolkit/components/telemetry/tests/unit/test_TelemetrySession.js
@@ -168,52 +168,16 @@ function getSavedPingFile(basename) {
     try {
       pingFile.remove(true);
     } catch (e) {
     }
   });
   return pingFile;
 }
 
-function decodeRequestPayload(request) {
-  let s = request.bodyInputStream;
-  let payload = null;
-  let decoder = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON)
-
-  if (request.getHeader("content-encoding") == "gzip") {
-    let observer = {
-      buffer: "",
-      onStreamComplete: function(loader, context, status, length, result) {
-        this.buffer = String.fromCharCode.apply(this, result);
-      }
-    };
-
-    let scs = Cc["@mozilla.org/streamConverters;1"]
-              .getService(Ci.nsIStreamConverterService);
-    let listener = Cc["@mozilla.org/network/stream-loader;1"]
-                  .createInstance(Ci.nsIStreamLoader);
-    listener.init(observer);
-    let converter = scs.asyncConvertData("gzip", "uncompressed",
-                                         listener, null);
-    converter.onStartRequest(null, null);
-    converter.onDataAvailable(null, null, s, 0, s.available());
-    converter.onStopRequest(null, null, null);
-    let unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                    .createInstance(Ci.nsIScriptableUnicodeConverter);
-    unicodeConverter.charset = "UTF-8";
-    let utf8string = unicodeConverter.ConvertToUnicode(observer.buffer);
-    utf8string += unicodeConverter.Finish();
-    payload = decoder.decode(utf8string);
-  } else {
-    payload = decoder.decodeFromStream(s, s.available());
-  }
-
-  return payload;
-}
-
 function checkPingFormat(aPing, aType, aHasClientId, aHasEnvironment) {
   const MANDATORY_PING_FIELDS = [
     "type", "id", "creationDate", "version", "application", "payload"
   ];
 
   const APPLICATION_TEST_DATA = {
     buildId: "2007010101",
     name: APP_NAME,
deleted file mode 100644
--- a/toolkit/modules/Dict.jsm
+++ /dev/null
@@ -1,249 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["Dict"];
-
-/**
- * Transforms a given key into a property name guaranteed not to collide with
- * any built-ins.
- */
-function convert(aKey) {
-  return ":" + aKey;
-}
-
-/**
- * Transforms a property into a key suitable for providing to the outside world.
- */
-function unconvert(aProp) {
-  return aProp.substr(1);
-}
-
-/**
- * A dictionary of strings to arbitrary JS objects. This should be used whenever
- * the keys are potentially arbitrary, to avoid collisions with built-in
- * properties.
- *
- * @param aInitial An object containing the initial keys and values of this
- *                 dictionary. Only the "own" enumerable properties of the
- *                 object are considered.
- *                 If |aInitial| is a string, it is assumed to be JSON and parsed into an object.
- */
-this.Dict = function Dict(aInitial) {
-  if (aInitial === undefined)
-    aInitial = {};
-  if (typeof aInitial == "string")
-    aInitial = JSON.parse(aInitial);
-  var items = {}, count = 0;
-  // That we don't look up the prototype chain is guaranteed by Iterator.
-  for (var [key, val] in Iterator(aInitial)) {
-    items[convert(key)] = val;
-    count++;
-  }
-  this._state = {count: count, items: items};
-  return Object.freeze(this);
-}
-
-Dict.prototype = Object.freeze({
-  /**
-   * The number of items in the dictionary.
-   */
-  get count() {
-    return this._state.count;
-  },
-
-  /**
-   * Gets the value for a key from the dictionary. If the key is not a string,
-   * it will be converted to a string before the lookup happens.
-   *
-   * @param aKey The key to look up
-   * @param [aDefault] An optional default value to return if the key is not
-   *                   present. Defaults to |undefined|.
-   * @returns The item, or aDefault if it isn't found.
-   */
-  get: function Dict_get(aKey, aDefault) {
-    var prop = convert(aKey);
-    var items = this._state.items;
-    return items.hasOwnProperty(prop) ? items[prop] : aDefault;
-  },
-
-  /**
-   * Sets the value for a key in the dictionary. If the key is a not a string,
-   * it will be converted to a string before the set happens.
-   */
-  set: function Dict_set(aKey, aValue) {
-    var prop = convert(aKey);
-    var items = this._state.items;
-    if (!items.hasOwnProperty(prop))
-      this._state.count++;
-    items[prop] = aValue;
-  },
-
-  /**
-   * Sets a lazy getter function for a key's value. If the key is a not a string,
-   * it will be converted to a string before the set happens.
-   * @param aKey
-   *        The key to set
-   * @param aThunk
-   *        A getter function to be called the first time the value for aKey is
-   *        retrieved. It is guaranteed that aThunk wouldn't be called more
-   *        than once.  Note that the key value may be retrieved either
-   *        directly, by |get|, or indirectly, by |listvalues| or by iterating
-   *        |values|.  For the later, the value is only retrieved if and when
-   *        the iterator gets to the value in question.  Also note that calling
-   *        |has| for a lazy-key does not invoke aThunk.
-   *
-   * @note No context is provided for aThunk when it's invoked.
-   *       Use Function.bind if you wish to run it in a certain context.
-   */
-  setAsLazyGetter: function Dict_setAsLazyGetter(aKey, aThunk) {
-    let prop = convert(aKey);
-    let items = this._state.items;
-    if (!items.hasOwnProperty(prop))
-      this._state.count++;
-
-    Object.defineProperty(items, prop, {
-      get: function() {
-        delete items[prop];
-        return items[prop] = aThunk();
-      },
-      configurable: true,
-      enumerable: true     
-    });
-  },
-
-  /**
-   * Returns whether a key is set as a lazy getter.  This returns
-   * true only if the getter function was not called already.
-   * @param aKey
-   *        The key to look up.
-   * @returns whether aKey is set as a lazy getter.
-   */
-  isLazyGetter: function Dict_isLazyGetter(aKey) {
-    let descriptor = Object.getOwnPropertyDescriptor(this._state.items,
-                                                     convert(aKey));
-    return (descriptor && descriptor.get != null);
-  },
-
-  /**
-   * Returns whether a key is in the dictionary. If the key is a not a string,
-   * it will be converted to a string before the lookup happens.
-   */
-  has: function Dict_has(aKey) {
-    return (this._state.items.hasOwnProperty(convert(aKey)));
-  },
-
-  /**
-   * Deletes a key from the dictionary. If the key is a not a string, it will be
-   * converted to a string before the delete happens.
-   *
-   * @returns true if the key was found, false if it wasn't.
-   */
-  del: function Dict_del(aKey) {
-    var prop = convert(aKey);
-    if (this._state.items.hasOwnProperty(prop)) {
-      delete this._state.items[prop];
-      this._state.count--;
-      return true;
-    }
-    return false;
-  },
-
-  /**
-   * Returns a shallow copy of this dictionary.
-   */
-  copy: function Dict_copy() {
-    var newItems = {};
-    for (var [key, val] in this.items)
-      newItems[key] = val;
-    return new Dict(newItems);
-  },
-
-  /*
-   * List and iterator functions
-   *
-   * No guarantees whatsoever are made about the order of elements.
-   */
-
-  /**
-   * Returns a list of all the keys in the dictionary in an arbitrary order.
-   */
-  listkeys: function Dict_listkeys() {
-    return [unconvert(k) for (k in this._state.items)];
-  },
-
-  /**
-   * Returns a list of all the values in the dictionary in an arbitrary order.
-   */
-  listvalues: function Dict_listvalues() {
-    var items = this._state.items;
-    return [items[k] for (k in items)];
-  },
-
-  /**
-   * Returns a list of all the items in the dictionary as key-value pairs
-   * in an arbitrary order.
-   */
-  listitems: function Dict_listitems() {
-    var items = this._state.items;
-    return [[unconvert(k), items[k]] for (k in items)];
-  },
-
-  /**
-   * Returns an iterator over all the keys in the dictionary in an arbitrary
-   * order. No guarantees are made about what happens if the dictionary is
-   * mutated during iteration.
-   */
-  get keys() {
-    // If we don't capture this._state.items here then the this-binding will be
-    // incorrect when the generator is executed
-    var items = this._state.items;
-    return (unconvert(k) for (k in items));
-  },
-
-  /**
-   * Returns an iterator over all the values in the dictionary in an arbitrary
-   * order. No guarantees are made about what happens if the dictionary is
-   * mutated during iteration.
-   */
-  get values() {
-    // If we don't capture this._state.items here then the this-binding will be
-    // incorrect when the generator is executed
-    var items = this._state.items;
-    return (items[k] for (k in items));
-  },
-
-  /**
-   * Returns an iterator over all the items in the dictionary as key-value pairs
-   * in an arbitrary order. No guarantees are made about what happens if the
-   * dictionary is mutated during iteration.
-   */
-  get items() {
-    // If we don't capture this._state.items here then the this-binding will be
-    // incorrect when the generator is executed
-    var items = this._state.items;
-    return ([unconvert(k), items[k]] for (k in items));
-  },
-
-  /**
-   * Returns a String representation of this dictionary.
-   */
-  toString: function Dict_toString() {
-    return "{" +
-      [(key + ": " + val) for ([key, val] in this.items)].join(", ") +
-      "}";
-  },
-
-  /**
-   * Returns a JSON representation of this dictionary.
-   */
-  toJSON: function Dict_toJSON() {
-    let obj = {};
-    for (let [key, item] of Iterator(this._state.items)) {
-      obj[unconvert(key)] = item;
-    }
-    return JSON.stringify(obj);
-  },
-});
--- a/toolkit/modules/PropertyListUtils.jsm
+++ b/toolkit/modules/PropertyListUtils.jsm
@@ -19,32 +19,32 @@
  * <integer> / <real>  NSNumber       TYPE_PRIMITIVE    number
  *                                    TYPE_INT64        String [1]
  * Not Available       NSNull         TYPE_PRIMITIVE    null   [2]
  *                                    TYPE_PRIMITIVE    undefined [3]
  * <date/>             NSDate         TYPE_DATE         Date
  * <data/>             NSData         TYPE_UINT8_ARRAY  Uint8Array
  * <array/>            NSArray        TYPE_ARRAY        Array
  * Not Available       NSSet          TYPE_ARRAY        Array  [2][4]
- * <dict/>             NSDictionary   TYPE_DICTIONARY   Dict (from Dict.jsm)
+ * <dict/>             NSDictionary   TYPE_DICTIONARY   Map
  *
  * Use PropertyListUtils.getObjectType to detect the type of a Property list
  * object.
  *
  * -------------
  * 1) Property lists supports storing U/Int64 numbers, while JS can only handle
  *    numbers that are in this limits of float-64 (±2^53).  For numbers that
  *    do not outbound this limits, simple primitive number are always used.
  *    Otherwise, a String object.
  * 2) About NSNull and NSSet values: While the xml format has no support for
  *    representing null and set values, the documentation for the binary format
  *    states that it supports storing both types.  However, the Cocoa APIs for
  *    serializing property lists do not seem to support either types (test with
  *    NSPropertyListSerialization::propertyList:isValidForFormat). Furthermore,
- *    if an array or a dictioanry contains a NSNull or a NSSet value, they cannot
+ *    if an array or a dictionary (Map) contains a NSNull or a NSSet value, they cannot
  *    be serialized to a property list.
  *    As for usage within OS X, not surprisingly there's no known usage of
  *    storing either of these types in a property list.  It seems that, for now,
  *    Apple is keeping the features of binary and xml formats in sync, probably as
  *    long as the XML format is not officially deprecated.
  * 3) Not used anywhere.
  * 4) About NSSet representation: For the time being, we represent those
  *    theoretical NSSet objects the same way NSArray is represented.
@@ -59,18 +59,16 @@ this.EXPORTED_SYMBOLS = ["PropertyListUt
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 Cu.importGlobalProperties(['File']);
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
-XPCOMUtils.defineLazyModuleGetter(this, "Dict",
-                                  "resource://gre/modules/Dict.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "ctypes",
                                   "resource://gre/modules/ctypes.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Services",
                                   "resource://gre/modules/Services.jsm");
 
 this.PropertyListUtils = Object.freeze({
   /**
    * Asynchronously reads a file as a property list.
@@ -172,17 +170,17 @@ this.PropertyListUtils = Object.freeze({
       return this.TYPE_PRIMITIVE;
 
     // Given current usage, we could assume that aObject was created in the
     // scope of this module, but in future, this util may be used as part of
     // serializing js objects to a property list - in which case the object
     // would most likely be created in the caller's scope.
     let global = Cu.getGlobalForObject(aObject);
 
-    if (global.Dict && aObject instanceof global.Dict)
+    if (aObject instanceof global.Map)
       return this.TYPE_DICTIONARY;
     if (Array.isArray(aObject))
       return this.TYPE_ARRAY;
     if (aObject instanceof global.Date)
       return this.TYPE_DATE;
     if (aObject instanceof global.Uint8Array)
       return this.TYPE_UINT8_ARRAY;
     if (aObject instanceof global.String && "__INT_64_WRAPPER__" in aObject)
@@ -497,40 +495,40 @@ BinaryPropertyListReader.prototype = {
         configurable: true,
         enumerable: true
       });
     }, this);
     return array;
   },
 
   /**
-   * Reads dictionary from the buffer and wraps it as a Dict object (as defined
-   * in Dict.jsm).
+   * Reads dictionary from the buffer and wraps it as a Map object.
    * @param aObjectOffset
    *        the offset in the buffer at which the dictionary starts
    * @param aNumberOfObjects
    *        the number of keys in the dictionary
-   * @return Dict.jsm-style dictionary.
+   * @return Map-style dictionary.
    */
   _wrapDictionary: function(aObjectOffset, aNumberOfObjects) {
     // A dictionary in the binary format is stored as a list of references to
     // key-objects, followed by a list of references to the value-objects for
     // those keys. The size of each list is aNumberOfObjects * this._objectRefSize.
-    let dict = new Dict();
+    let dict = new Proxy(new Map(), LazyMapProxyHandler());
     if (aNumberOfObjects == 0)
       return dict;
 
     let keyObjsRefs = this._readUnsignedInts(aObjectOffset, this._objectRefSize,
                                              aNumberOfObjects);
     let valObjsRefs =
       this._readUnsignedInts(aObjectOffset + aNumberOfObjects * this._objectRefSize,
                              this._objectRefSize, aNumberOfObjects);
     for (let i = 0; i < aNumberOfObjects; i++) {
       let key = this._readObject(keyObjsRefs[i]);
       let readBound = this._readObject.bind(this, valObjsRefs[i]);
+
       dict.setAsLazyGetter(key, readBound);
     }
     return dict;
   },
 
   /**
    * Reads an object at the spcified index in the object table
    * @param aObjectIndex
@@ -718,26 +716,27 @@ XMLPropertyListReader.prototype = {
     // <dict>
     //   <key>my true bool</key>
     //   <true/>
     //   <key>my string key</key>
     //   <string>My String Key</string>
     // </dict>
     if (aDOMElt.children.length % 2 != 0)
       throw new Error("Invalid dictionary");
-    let dict = new Dict();
+    let dict = new Proxy(new Map(), LazyMapProxyHandler());
     for (let i = 0; i < aDOMElt.children.length; i += 2) {
       let keyElem = aDOMElt.children[i];
       let valElem = aDOMElt.children[i + 1];
 
       if (keyElem.localName != "key")
         throw new Error("Invalid dictionary");
 
       let keyName = this._readObject(keyElem);
       let readBound = this._readObject.bind(this, valElem);
+
       dict.setAsLazyGetter(keyName, readBound);
     }
     return dict;
   },
 
   _wrapArray: function XPLR__wrapArray(aDOMElt) {
     // <array>
     //   <string>...</string>
@@ -758,8 +757,59 @@ XMLPropertyListReader.prototype = {
         },
         configurable: true,
         enumerable: true
       });
     });
     return array;
   }
 };
+
+/**
+   * Simple handler method to proxy calls to dict/Map objects to implement the
+   * setAsLazyGetter API. With this, a value can be set as a function that will
+   * evaluate its value and only be called when it's first retrieved.
+   * @member _lazyGetters
+   *         Set() object to hold keys invoking LazyGetter.
+   * @method get
+   *         Trap for getting property values. Ensures that if a lazyGetter is present
+   *         as value for key, then the function is evaluated, the value is cached,
+   *         and its value will be returned.
+   * @param  target
+   *         Target object. (dict/Map)
+   * @param  name
+   *         Name of operation to be invoked on target.
+   * @param  key
+   *         Key to be set, retrieved or deleted. Keys are checked for laziness.
+   * @return Returns value of "name" property of target by default. Otherwise returns
+   *         updated target.
+   */
+function LazyMapProxyHandler () {
+  return {
+    _lazyGetters: new Set(),
+    get: function(target, name) {
+      switch (name) {
+        case "setAsLazyGetter":
+          return (key, value) => {
+            this._lazyGetters.add(key);
+            target.set(key, value);
+          };
+        case "get":
+          return key => {
+            if (this._lazyGetters.has(key)) {
+              target.set(key, target.get(key)());
+              this._lazyGetters.delete(key);
+            }
+            return target.get(key);
+          };
+        case "delete":
+          return key => {
+            if (this._lazyGetters.has(key)) {
+              this._lazyGetters.delete(key);
+            }
+            return target.delete(key);
+          };
+        default:
+          return target[name];
+      }
+    }
+  }
+}
--- a/toolkit/modules/moz.build
+++ b/toolkit/modules/moz.build
@@ -17,17 +17,16 @@ EXTRA_JS_MODULES += [
     'BinarySearch.jsm',
     'BrowserUtils.jsm',
     'CertUtils.jsm',
     'CharsetMenu.jsm',
     'ClientID.jsm',
     'debug.js',
     'DeferredTask.jsm',
     'Deprecated.jsm',
-    'Dict.jsm',
     'FileUtils.jsm',
     'Finder.jsm',
     'Geometry.jsm',
     'GMPInstallManager.jsm',
     'GMPUtils.jsm',
     'Http.jsm',
     'InlineSpellChecker.jsm',
     'InlineSpellCheckerContent.jsm',
deleted file mode 100644
--- a/toolkit/modules/tests/xpcshell/test_dict.js
+++ /dev/null
@@ -1,299 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-Components.utils.import("resource://gre/modules/Dict.jsm");
-
-/**
- * Test that a few basic get, set, has and del operations work.
- */
-function test_get_set_has_del() {
-  let dict = new Dict({foo: "bar"});
-  dict.set("baz", 200);
-  do_check_eq(dict.get("foo"), "bar");
-  do_check_eq(dict.get("baz"), 200);
-  do_check_true(dict.has("foo"));
-  do_check_true(dict.has("baz"));
-  // Now delete the entries
-  do_check_true(dict.del("foo"));
-  do_check_true(dict.del("baz"));
-  do_check_false(dict.has("foo"));
-  do_check_false(dict.has("baz"));
-  // and make sure del returns false
-  do_check_false(dict.del("foo"));
-  do_check_false(dict.del("baz"));
-}
-
-/**
- * Test that the second parameter of get (default value) works.
- */
-function test_get_default() {
-  let dict = new Dict();
-  do_check_true(dict.get("foo") === undefined);
-  do_check_eq(dict.get("foo", "bar"), "bar");
-}
-
-/**
- * Test that there are no collisions with builtins.
- */
-function test_collisions_with_builtins() {
-  let dict = new Dict();
-  // First check that a new dictionary doesn't already have builtins.
-  do_check_false(dict.has("toString"));
-  do_check_false(dict.has("watch"));
-  do_check_false(dict.has("__proto__"));
-
-  // Add elements in an attempt to collide with builtins.
-  dict.set("toString", "toString");
-  dict.set("watch", "watch");
-  // This is a little evil. We set __proto__ to an object to try to make it look
-  // up the prototype chain.
-  dict.set("__proto__", {prototest: "prototest"});
-
-  // Now check that the entries exist.
-  do_check_true(dict.has("toString"));
-  do_check_true(dict.has("watch"));
-  do_check_true(dict.has("__proto__"));
-  // ...and that we aren't looking up the prototype chain.
-  do_check_false(dict.has("prototest"));
-}
-
-/**
- * Test that the "count" property works as expected.
- */
-function test_count() {
-  let dict = new Dict({foo: "bar"});
-  do_check_eq(dict.count, 1);
-  dict.set("baz", "quux");
-  do_check_eq(dict.count, 2);
-  // This shouldn't change the count
-  dict.set("baz", "quux2");
-  do_check_eq(dict.count, 2);
-
-  do_check_true(dict.del("baz"));
-  do_check_eq(dict.count, 1);
-  // This shouldn't change the count either
-  do_check_false(dict.del("not"));
-  do_check_eq(dict.count, 1);
-  do_check_true(dict.del("foo"));
-  do_check_eq(dict.count, 0);
-}
-
-/**
- * Test that the copy function works as expected.
- */
-function test_copy() {
-  let obj = {};
-  let dict1 = new Dict({foo: "bar", baz: obj});
-  let dict2 = dict1.copy();
-  do_check_eq(dict2.get("foo"), "bar");
-  do_check_eq(dict2.get("baz"), obj);
-  // Make sure the two update independent of each other.
-  dict1.del("foo");
-  do_check_false(dict1.has("foo"));
-  do_check_true(dict2.has("foo"));
-  dict2.set("test", 400);
-  do_check_true(dict2.has("test"));
-  do_check_false(dict1.has("test"));
-
-  // Check that the copy is shallow and not deep.
-  dict1.get("baz").prop = "proptest";
-  do_check_eq(dict2.get("baz").prop, "proptest");
-}
-
-// This is used by both test_listers and test_iterators.
-function _check_lists(keys, values, items) {
-  do_check_eq(keys.length, 2);
-  do_check_true(keys.indexOf("x") != -1);
-  do_check_true(keys.indexOf("y") != -1);
-
-  do_check_eq(values.length, 2);
-  do_check_true(values.indexOf("a") != -1);
-  do_check_true(values.indexOf("b") != -1);
-
-  // This is a little more tricky -- we need to check that one of the two
-  // entries is ["x", "a"] and the other is ["y", "b"].
-  do_check_eq(items.length, 2);
-  do_check_eq(items[0].length, 2);
-  do_check_eq(items[1].length, 2);
-  let ix = (items[0][0] == "x") ? 0 : 1;
-  let iy = (ix == 0) ? 1 : 0;
-  do_check_eq(items[ix][0], "x");
-  do_check_eq(items[ix][1], "a");
-  do_check_eq(items[iy][0], "y");
-  do_check_eq(items[iy][1], "b");
-}
-
-/**
- * Test the list functions.
- */
-function test_listers() {
-  let dict = new Dict({"x": "a", "y": "b"});
-  let keys = dict.listkeys();
-  let values = dict.listvalues();
-  let items = dict.listitems();
-  _check_lists(keys, values, items);
-}
-
-/**
- * Test the iterator functions.
- */
-function test_iterators() {
-  let dict = new Dict({"x": "a", "y": "b"});
-  // Convert the generators to lists
-  let keys = [x for (x in dict.keys)];
-  let values = [x for (x in dict.values)];
-  let items = [x for (x in dict.items)];
-  _check_lists(keys, values, items);
-}
-
-/**
- * Test that setting a property throws an exception in strict mode.
- */
-function test_set_property_strict() {
-  "use strict";
-  var dict = new Dict();
-  var thrown = false;
-  try {
-    dict.foo = "bar";
-  }
-  catch (ex) {
-    thrown = true;
-  }
-  do_check_true(thrown);
-}
-
-/**
- * Test that setting a property has no effect in non-strict mode.
- */
-function test_set_property_non_strict() {
-  let dict = new Dict();
-  dict.foo = "bar";
-  do_check_false("foo" in dict);
-  let realget = dict.get;
-  dict.get = "baz";
-  do_check_eq(dict.get, realget);
-}
-
-/**
- * Tests setting a property by a lazy getter.
- */
-function test_set_property_lazy_getter() {
-  let thunkCalled = false;
-
-  let setThunk = function(dict) {
-    thunkCalled = false;
-    dict.setAsLazyGetter("foo", function() {
-      thunkCalled = true;
-      return "bar";
-    });
-  };
-
-  let dict = new Dict();
-  setThunk(dict);
-
-  // Test that checking for the key existence does not invoke
-  // the getter function.
-  do_check_true(dict.has("foo"));
-  do_check_false(thunkCalled);
-  do_check_true(dict.isLazyGetter("foo"));
-
-  // Calling get the first time should invoke the getter function
-  // and unmark the key as a lazy getter.
-  do_check_eq(dict.get("foo"), "bar");
-  do_check_true(thunkCalled);
-  do_check_false(dict.isLazyGetter("foo"));
-
-  // Calling get again should not invoke the getter function
-  thunkCalled = false;
-  do_check_eq(dict.get("foo"), "bar");
-  do_check_false(thunkCalled);
-  do_check_false(dict.isLazyGetter("foo"));
-
-  // Test that listvalues works for lazy keys.
-  dict = new Dict();
-  setThunk(dict);
-  do_check_true(dict.isLazyGetter("foo"));
-
-  let listvalues = dict.listvalues();
-  do_check_false(dict.isLazyGetter("foo"));
-  do_check_true(thunkCalled);
-  do_check_true(listvalues.length, 1);
-  do_check_eq(listvalues[0], "bar");
-
-  thunkCalled = false;
-
-  // Retrieving the list again shouldn't invoke our getter.
-  listvalues = dict.listvalues();
-  do_check_false(dict.isLazyGetter("foo"));
-  do_check_false(thunkCalled);
-  do_check_true(listvalues.length, 1);
-  do_check_eq(listvalues[0], "bar");
-
-  // Test that the values iterator also works as expected.
-  dict = new Dict();
-  setThunk(dict);
-  let values = dict.values;
-
-  // Our getter shouldn't be called before the iterator reaches it.
-  do_check_true(dict.isLazyGetter("foo"));
-  do_check_false(thunkCalled);
-  do_check_eq(values.next(), "bar");
-  do_check_true(thunkCalled);
-
-  thunkCalled = false;
-  do_check_false(dict.isLazyGetter("foo"));
-  do_check_eq(dict.get("foo"), "bar");
-  do_check_false(thunkCalled);
-}
-
-// This is used by both test_construct_dict_from_json_string and test_serialize_dict_to_json_string
-function _sort_comp_arr(arr1,arr2){
-  arr1.sort();
-  arr2.sort();
-  do_check_eq(arr1.toString(),arr2.toString());
-}
-
-/**
- * Tests constructing a dictionary from a JSON string.
- */
-function test_construct_dict_from_json_string() {
-  let d1 = new Dict({a:1, b:2, c:"foobar"});
-  let d2 = new Dict(JSON.stringify(({a:1, b:2, c:"foobar"})));
-  _sort_comp_arr(d1.listkeys(),d2.listkeys());
-  do_check_eq(d1.get("a"), d2.get("a"));
-  do_check_eq(d1.get("b"), d2.get("b"));
-  do_check_eq(d1.get("c"), d2.get("c"));
-}
-
-/**
- * Tests serializing a dictionary to a JSON string.
- */
-function test_serialize_dict_to_json_string() {
-  let d1 = new Dict({a:1, b:2, c:"foobar"});
-  let d2 = new Dict(d1.toJSON());
-  _sort_comp_arr(d1.listkeys(),d2.listkeys());
-  do_check_eq(d1.get("a"), d2.get("a"));
-  do_check_eq(d1.get("b"), d2.get("b"));
-  do_check_eq(d1.get("c"), d2.get("c"));
-}
-
-var tests = [
-  test_get_set_has_del,
-  test_get_default,
-  test_collisions_with_builtins,
-  test_count,
-  test_copy,
-  test_listers,
-  test_iterators,
-  test_set_property_strict,
-  test_set_property_non_strict,
-  test_set_property_lazy_getter,
-  test_construct_dict_from_json_string,
-  test_serialize_dict_to_json_string
-];
-
-function run_test() {
-  for (let [, test] in Iterator(tests))
-    test();
-}
--- a/toolkit/modules/tests/xpcshell/xpcshell.ini
+++ b/toolkit/modules/tests/xpcshell/xpcshell.ini
@@ -6,17 +6,16 @@ support-files =
   propertyLists/bug710259_propertyListBinary.plist
   propertyLists/bug710259_propertyListXML.plist
   chromeappsstore.sqlite
   zips/zen.zip
 
 [test_BinarySearch.js]
 [test_client_id.js]
 [test_DeferredTask.js]
-[test_dict.js]
 [test_FileUtils.js]
 [test_GMPInstallManager.js]
 [test_Http.js]
 [test_Log.js]
 [test_NewTabUtils.js]
 [test_ObjectUtils.js]
 [test_PermissionsUtils.js]
 [test_Preferences.js]
--- a/widget/gonk/libdisplay/GonkDisplayJB.cpp
+++ b/widget/gonk/libdisplay/GonkDisplayJB.cpp
@@ -237,19 +237,16 @@ GonkDisplayJB::SwapBuffers(EGLDisplay dp
     // mFBDevice is present only when HWC is v1.0.
     if (mFBDevice && mFBDevice->compositionComplete) {
         mFBDevice->compositionComplete(mFBDevice);
     }
 
 #if ANDROID_VERSION == 17
     mList->dpy = dpy;
     mList->sur = sur;
-#else
-    mList->outbuf = nullptr;
-    mList->outbufAcquireFenceFd = -1;
 #endif
     eglSwapBuffers(dpy, sur);
     return Post(mFBSurface->lastHandle, mFBSurface->GetPrevFBAcquireFd());
 }
 
 bool
 GonkDisplayJB::Post(buffer_handle_t buf, int fence)
 {
@@ -260,16 +257,20 @@ GonkDisplayJB::Post(buffer_handle_t buf,
     }
 
     hwc_display_contents_1_t *displays[HWC_NUM_DISPLAY_TYPES] = {NULL};
     const hwc_rect_t r = { 0, 0, static_cast<int>(mWidth), static_cast<int>(mHeight) };
     displays[HWC_DISPLAY_PRIMARY] = mList;
     mList->retireFenceFd = -1;
     mList->numHwLayers = 2;
     mList->flags = HWC_GEOMETRY_CHANGED;
+#if ANDROID_VERSION >= 18
+    mList->outbuf = nullptr;
+    mList->outbufAcquireFenceFd = -1;
+#endif
     mList->hwLayers[0].compositionType = HWC_FRAMEBUFFER;
     mList->hwLayers[0].hints = 0;
     /* Skip this layer so the hwc module doesn't complain about null handles */
     mList->hwLayers[0].flags = HWC_SKIP_LAYER;
     mList->hwLayers[0].backgroundColor = {0};
     mList->hwLayers[0].acquireFenceFd = -1;
     mList->hwLayers[0].releaseFenceFd = -1;
     /* hwc module checks displayFrame even though it shouldn't */