# Mozilla User Preferences

/* Do not edit this file.
 *
 * If you make changes to this file while the application is running,
 * the changes will be overwritten when the application exits.
 *
 * To make a manual change to preferences, you can visit the URL about:config
 */

user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1441289625);
user_pref("app.update.lastUpdateTime.background-update-timer", 1441345564);
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1441289745);
user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1441363323);
user_pref("app.update.lastUpdateTime.experiments-update-timer", 1441289505);
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1441345444);
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1441289865);
user_pref("browser.bookmarks.restore_default_bookmarks", false);
user_pref("browser.cache.disk.capacity", 358400);
user_pref("browser.cache.disk.filesystem_reported", 1);
user_pref("browser.cache.disk.smart_size.first_run", false);
user_pref("browser.cache.frecency_experiment", 3);
user_pref("browser.download.importedFromSqlite", true);
user_pref("browser.migration.version", 30);
user_pref("browser.newtabpage.enhanced", true);
user_pref("browser.newtabpage.introShown", true);
user_pref("browser.newtabpage.storageVersion", 1);
user_pref("browser.pagethumbnails.storage_version", 3);
user_pref("browser.places.smartBookmarksVersion", 7);
user_pref("browser.search.countryCode", "AT");
user_pref("browser.search.region", "AT");
user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20150807085045");
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.slowStartup.averageTime", 10338);
user_pref("browser.slowStartup.samples", 3);
user_pref("browser.toolbarbuttons.introduced.pocket-button", true);
user_pref("datareporting.healthreport.lastDataSubmissionRequestedTime", "1441289087693");
user_pref("datareporting.healthreport.lastDataSubmissionSuccessfulTime", "1441289089977");
user_pref("datareporting.healthreport.nextDataSubmissionTime", "1441375489977");
user_pref("datareporting.healthreport.service.firstRun", true);
user_pref("datareporting.policy.dataSubmissionPolicyAcceptedVersion", 2);
user_pref("datareporting.policy.dataSubmissionPolicyNotifiedTime", "1441188290924");
user_pref("datareporting.policy.firstRunTime", "1441187972796");
user_pref("datareporting.sessions.current.activeTicks", 29);
user_pref("datareporting.sessions.current.clean", true);
user_pref("datareporting.sessions.current.firstPaint", 5114);
user_pref("datareporting.sessions.current.main", 226);
user_pref("datareporting.sessions.current.sessionRestored", 4446);
user_pref("datareporting.sessions.current.startTime", "1441289023049");
user_pref("datareporting.sessions.current.totalTime", 75887);
user_pref("datareporting.sessions.currentIndex", 2);
user_pref("datareporting.sessions.prunedIndex", 1);
user_pref("dom.apps.reset-permissions", true);
user_pref("dom.ipc.plugins.asyncInit", false);
user_pref("dom.mozApps.used", true);
user_pref("experiments.activeExperiment", false);
user_pref("extensions.blocklist.pingCountTotal", 3);
user_pref("extensions.blocklist.pingCountVersion", 3);
user_pref("extensions.bootstrappedAddons", "{}");
user_pref("extensions.databaseSchema", 17);
user_pref("extensions.enabledAddons", "%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:40.0");
user_pref("extensions.getAddons.cache.lastUpdate", 1441289626);
user_pref("extensions.getAddons.databaseSchema", 5);
user_pref("extensions.hotfix.lastVersion", "20150818.01");
user_pref("extensions.lastAppVersion", "40.0");
user_pref("extensions.lastPlatformVersion", "40.0");
user_pref("extensions.pendingOperations", false);
user_pref("extensions.shownSelectionUI", true);
user_pref("extensions.xpiState", "{\"app-global\":{\"{972ce4c6-7e08-4474-a285-3208198ce6fd}\":{\"d\":\"/opt/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}\",\"e\":true,\"v\":\"40.0\",\"st\":1439535413000,\"mt\":1438968709000}}}");
user_pref("gecko.buildID", "20150807085045");
user_pref("gecko.mstone", "40.0");
user_pref("idle.lastDailyNotification", 1441294099);
user_pref("media.gmp-gmpopenh264.lastUpdate", 1441188292);
user_pref("media.gmp-gmpopenh264.version", "1.4");
user_pref("media.gmp-manager.buildID", "20150807085045");
user_pref("media.gmp-manager.lastCheck", 1441289088);
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.predictor.cleaned-up", true);
user_pref("pdfjs.migrationVersion", 2);
user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
user_pref("pdfjs.previousHandler.preferredAction", 4);
user_pref("places.database.lastMaintenance", 1441294099);
user_pref("places.history.expiration.transient_current_max_pages", 104858);
user_pref("plugin.disable_full_page_plugin_for_types", "application/pdf");
user_pref("plugin.importedState", true);
user_pref("privacy.sanitize.migrateFx3Prefs", true);
user_pref("signon.importedFromSqlite", true);
user_pref("storage.vacuum.last.index", 0);
user_pref("storage.vacuum.last.places.sqlite", 1441294099);
user_pref("toolkit.startup.last_success", 1441289023);
