summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--README.md30
-rw-r--r--allow-searchengines-non-esr.patch13
-rw-r--r--allow-ubo-private-mode.patch18
-rw-r--r--cbindgen-vendor.tar.xzbin0 -> 5627872 bytes
-rw-r--r--context-menu.patch43
-rw-r--r--disable-data-reporting-at-compile-time.patch18
-rw-r--r--disable-pocket.patch38
-rw-r--r--hide-safe-browsing.patch21
-rw-r--r--librewolf-branding.tgzbin0 -> 914817 bytes
-rw-r--r--librewolf-pref-pane.patch782
-rwxr-xr-xlibrewolf.cfg498
-rw-r--r--librewolf.spec1904
-rw-r--r--local-settings.js7
-rw-r--r--mozilla-vpn-ad.patch30
-rw-r--r--mozilla_dirs.patch76
-rw-r--r--policies.json95
-rw-r--r--pref-naming.patch57
-rw-r--r--remove-branding-urlbar.patch11
-rw-r--r--remove-cfrprefs.patch19
-rw-r--r--remove-internal-plugin-certs.patch18
-rw-r--r--remove-organization-policy-banner.patch11
-rw-r--r--remove-snippets-from-home.patch22
-rw-r--r--remove_addons.patch74
-rw-r--r--sanitizing-description.patch11
-rw-r--r--search-config.json376
-rw-r--r--sources4
-rw-r--r--stop-undesired-requests.patch55
-rw-r--r--urlbarprovider-interventions.patch13
29 files changed, 4243 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index ee9699d..5419795 100644
--- a/.gitignore
+++ b/.gitignore
@@ -314,7 +314,6 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-62.0.3-20181002.tar.xz
/firefox-63.0.source.tar.xz
/firefox-langpacks-63.0-20181018.tar.xz
-/cbindgen-vendor.tar.xz
/firefox-langpacks-63.0.1-20181101.tar.xz
/firefox-63.0.1.source.tar.xz
/firefox-63.0.3.source.tar.xz
@@ -489,3 +488,6 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-96.0-20220111.tar.xz
/firefox-langpacks-96.0.1-20220118.tar.xz
/firefox-96.0.1.source.tar.xz
+*.spec?
+.*.swp
+*.source.tar.xz
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..48a88a6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# README for librewolf-fedora-ff
+
+## Overview
+After using the [prep-librewolf-rpm.sh](https://gitlab.com/bgstack15/librewolf-fedora) script, a modified copy of Fedora Firefox src.rpm git repo exists on the local filesystem.
+
+If this README.md exists in a directory named `for-repo`, then it is still in its source location from the above link, and not in its final location.
+
+## This repository
+This README file belongs in the modified copy of that Fedora Firefox src.rpm [git repository](https://src.fedoraproject.org/rpms/firefox). That modified git repo can be sent up to a [new web location](https://gitlab.com/bgstack15/librewolf-fedora-ff).
+
+Fedora [COPR](https://copr.fedorainfracloud.org/coprs/bgstack15/AfterMozilla/packages/) can then use rpkg to pull this new git repository, so users do not have to upload the 400MB src.rpm manually.
+
+## Using this repository
+Script `git-helper.sh` included in the [librewolf-fedora](https://gitlab.com/bgstack15/librewolf-fedora) repository will add the new git repo for librewolf-fedora-ff and fix the .gitignore.
+
+## Differences from upstream repo
+The Librewolf rpm git repo makes some changes to the Firefox rpm git repo.
+Files are added or modified:
+* this README.md
+* .gitignore
+* librewolf.spec
+* LibreWolf patches that are not named here
+* a few tarballs omitted from upstream git sources:
+ * cbindgen-vendor.tar.xz
+ * `firefox-langpacks-*.tar.xz`
+
+Files that are removed:
+* sources
+
+Fedora's dist-git project provides a lookaside cache for large assets so they do not have to be stored in source control. The `sources` file links to those files, but we embed in the librewolf src.rpm the two tarballs we need.
diff --git a/allow-searchengines-non-esr.patch b/allow-searchengines-non-esr.patch
new file mode 100644
index 0000000..6418416
--- /dev/null
+++ b/allow-searchengines-non-esr.patch
@@ -0,0 +1,13 @@
+diff --git a/browser/components/enterprisepolicies/schemas/policies-schema.json b/browser/components/enterprisepolicies/schemas/policies-schema.json
+index d436cf1ca1..ecd6e53b9e 100644
+--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
++++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
+@@ -1074,7 +1074,7 @@
+ },
+
+ "SearchEngines": {
+- "enterprise_only": true,
++ "enterprise_only": false,
+
+ "type": "object",
+ "properties": {
diff --git a/allow-ubo-private-mode.patch b/allow-ubo-private-mode.patch
new file mode 100644
index 0000000..ef08f46
--- /dev/null
+++ b/allow-ubo-private-mode.patch
@@ -0,0 +1,18 @@
+--- a/toolkit/components/extensions/Extension.jsm
++++ b/toolkit/components/extensions/Extension.jsm
+@@ -2658,6 +2658,15 @@
+ this.permissions.add(PRIVATE_ALLOWED_PERMISSION);
+ }
+
++ if (this.id === "uBlock0@raymondhill.net") {
++ ExtensionPermissions.add(this.id, {
++ permissions: [PRIVATE_ALLOWED_PERMISSION],
++ origins: [],
++ });
++ this.permissions.add(PRIVATE_ALLOWED_PERMISSION);
++ }
++
++
+ // We only want to update the SVG_CONTEXT_PROPERTIES_PERMISSION during install and
+ // upgrade/downgrade startups.
+ if (INSTALL_AND_UPDATE_STARTUP_REASONS.has(this.startupReason)) {
diff --git a/cbindgen-vendor.tar.xz b/cbindgen-vendor.tar.xz
new file mode 100644
index 0000000..7ee5ee3
--- /dev/null
+++ b/cbindgen-vendor.tar.xz
Binary files differ
diff --git a/context-menu.patch b/context-menu.patch
new file mode 100644
index 0000000..5685f96
--- /dev/null
+++ b/context-menu.patch
@@ -0,0 +1,43 @@
+diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc
+--- a/browser/base/content/browser-context.inc
++++ b/browser/base/content/browser-context.inc
+@@ -102,19 +102,16 @@
+ oncommand="gContextMenu.openLinkInPrivateWindow();"/>
+ <menuseparator id="context-sep-open"/>
+ <menuitem id="context-bookmarklink"
+ data-l10n-id="main-context-menu-bookmark-link"
+ oncommand="gContextMenu.bookmarkLink();"/>
+ <menuitem id="context-savelink"
+ data-l10n-id="main-context-menu-save-link"
+ oncommand="gContextMenu.saveLink();"/>
+- <menuitem id="context-savelinktopocket"
+- data-l10n-id="main-context-menu-save-link-to-pocket"
+- oncommand= "Pocket.savePage(gContextMenu.browser, gContextMenu.linkURL);"/>
+ <menuitem id="context-copyemail"
+ data-l10n-id="main-context-menu-copy-email"
+ oncommand="gContextMenu.copyEmail();"/>
+ <menuitem id="context-copylink"
+ data-l10n-id="main-context-menu-copy-link-simple"
+ oncommand="gContextMenu.copyLink();"/>
+ <menu id="context-sendlinktodevice"
+ class="sync-ui-item"
+@@ -254,19 +251,16 @@
+ #ifdef XP_MACOSX
+ <menuitem id="context-bookmarkpage"
+ data-l10n-id="main-context-menu-bookmark-add-mac"
+ oncommand="gContextMenu.bookmarkThisPage();"/>
+ #endif
+ <menuitem id="context-savepage"
+ data-l10n-id="main-context-menu-page-save"
+ oncommand="gContextMenu.savePageAs();"/>
+- <menuitem id="context-pocket"
+- data-l10n-id="main-context-menu-save-to-pocket"
+- oncommand="Pocket.savePage(gContextMenu.browser, gContextMenu.browser.currentURI.spec, gContextMenu.browser.contentTitle);"/>
+ <menu id="context-sendpagetodevice"
+ class="sync-ui-item"
+ data-l10n-id="main-context-menu-send-to-device"
+ hidden="true">
+ <menupopup id="context-sendpagetodevice-popup"
+ onpopupshowing="(() => { gSync.populateSendTabToDevicesMenu(event.target, gBrowser.currentURI.spec, gBrowser.contentTitle); })()"/>
+ </menu>
+ <menu id="fill-login" hidden="true">
diff --git a/disable-data-reporting-at-compile-time.patch b/disable-data-reporting-at-compile-time.patch
new file mode 100644
index 0000000..3702402
--- /dev/null
+++ b/disable-data-reporting-at-compile-time.patch
@@ -0,0 +1,18 @@
+diff --git a/browser/moz.configure b/browser/moz.configure
+index 8653bcb..935af40 100644
+--- a/browser/moz.configure
++++ b/browser/moz.configure
+@@ -5,11 +5,11 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ imply_option("MOZ_PLACES", True)
+-imply_option("MOZ_SERVICES_HEALTHREPORT", True)
++imply_option("MOZ_SERVICES_HEALTHREPORT", False)
+ imply_option("MOZ_SERVICES_SYNC", True)
+ imply_option("MOZ_DEDICATED_PROFILES", True)
+ imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", True)
+-imply_option("MOZ_NORMANDY", True)
++imply_option("MOZ_NORMANDY", False)
+
+ with only_when(target_is_linux & compile_environment):
+ option(env="MOZ_NO_PIE_COMPAT", help="Enable non-PIE wrapper")
diff --git a/disable-pocket.patch b/disable-pocket.patch
new file mode 100644
index 0000000..9f5a890
--- /dev/null
+++ b/disable-pocket.patch
@@ -0,0 +1,38 @@
+diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
+index 81de0fb201..163b4843e4 100644
+--- a/browser/components/BrowserGlue.jsm
++++ b/browser/components/BrowserGlue.jsm
+@@ -1375,8 +1375,6 @@ BrowserGlue.prototype = {
+ Normandy.init();
+ }
+
+- SaveToPocket.init();
+-
+ AboutHomeStartupCache.init();
+
+ Services.obs.notifyObservers(null, "browser-ui-startup-complete");
+diff --git a/browser/components/moz.build b/browser/components/moz.build
+index d16b27b1ea..a119166fa5 100644
+--- a/browser/components/moz.build
++++ b/browser/components/moz.build
+@@ -42,7 +42,6 @@ DIRS += [
+ "originattributes",
+ "ion",
+ "places",
+- "pocket",
+ "preferences",
+ "privatebrowsing",
+ "prompts",
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 16168e5..857a968 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -5246,8 +5246,6 @@ var XULBrowserWindow = {
+
+ SafeBrowsingNotificationBox.onLocationChange(aLocationURI);
+
+- SaveToPocket.onLocationChange(window);
+-
+ UrlbarProviderSearchTips.onLocationChange(
+ window,
+ aLocationURI,
diff --git a/hide-safe-browsing.patch b/hide-safe-browsing.patch
new file mode 100644
index 0000000..721111b
--- /dev/null
+++ b/hide-safe-browsing.patch
@@ -0,0 +1,21 @@
+--- a//browser/components/preferences/privacy.inc.xhtml
++++ b//browser/components/preferences/privacy.inc.xhtml
+@@ -1008,15 +1008,15 @@
+
+ <!-- addons, forgery (phishing) UI Security -->
+ <groupbox id="browsingProtectionGroup" data-category="panePrivacy" hidden="true">
+- <label><html:h2 data-l10n-id="security-browsing-protection"/></label>
+- <hbox align = "center">
++ <label><html:h2 data-l10n-id="security-browsing-protection" hidden="true"/></label>
++ <hbox align = "center" hidden="true">
+ <checkbox id="enableSafeBrowsing"
+ data-l10n-id="security-enable-safe-browsing"
+ class="tail-with-learn-more"/>
+ <label id="enableSafeBrowsingLearnMore"
+ class="learnMore" is="text-link" data-l10n-id="security-enable-safe-browsing-link"/>
+ </hbox>
+- <vbox class="indent">
++ <vbox class="indent" hidden="true">
+ <checkbox id="blockDownloads"
+ data-l10n-id="security-block-downloads"/>
+ <checkbox id="blockUncommonUnwanted"
diff --git a/librewolf-branding.tgz b/librewolf-branding.tgz
new file mode 100644
index 0000000..64ace83
--- /dev/null
+++ b/librewolf-branding.tgz
Binary files differ
diff --git a/librewolf-pref-pane.patch b/librewolf-pref-pane.patch
new file mode 100644
index 0000000..fb61d33
--- /dev/null
+++ b/librewolf-pref-pane.patch
@@ -0,0 +1,782 @@
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+new file mode 100644
+index 0000000..2badfe9
+--- /dev/null
++++ b/.gitlab-ci.yml
+@@ -0,0 +1,12 @@
++stages:
++ - build
++
++create-patch:
++ stage: build
++ variables:
++ GIT_DEPTH: 200
++ script:
++ - git diff 1fee314adc81000294fc0cf3196a758e4b64dace > librewolf-pref-pane.patch
++ artifacts:
++ paths:
++ - librewolf-pref-pane.patch
+diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
+index 4f3babe..97c7ec2 100644
+--- a/browser/components/preferences/jar.mn
++++ b/browser/components/preferences/jar.mn
+@@ -11,6 +11,7 @@ browser.jar:
+ content/browser/preferences/home.js
+ content/browser/preferences/search.js
+ content/browser/preferences/privacy.js
++ content/browser/preferences/librewolf.js
+ content/browser/preferences/containers.js
+ content/browser/preferences/sync.js
+ content/browser/preferences/experimental.js
+diff --git a/browser/components/preferences/librewolf.inc.xhtml b/browser/components/preferences/librewolf.inc.xhtml
+new file mode 100644
+index 0000000..b627417
+--- /dev/null
++++ b/browser/components/preferences/librewolf.inc.xhtml
+@@ -0,0 +1,206 @@
++# 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/.
++
++<script src="chrome://browser/content/preferences/librewolf.js"/>
++
++<html:template id="template-paneLibrewolf">
++
++<hbox class="subcategory" hidden="true" data-category="paneLibrewolf">
++ <html:h1 data-l10n-id="librewolf-header"/>
++</hbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-general-heading"/>
++
++ <!-- TEMPLATE FOR A NEW PREFERENCE
++ <hbox>
++ <checkbox id="librewolf-LABEL-checkbox" data-l10n-id="librewolf-LABEL-checkbox" preference="PREF" flex="1" />
++ <html:label for="librewolf-LABEL-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-LABEL-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-LABEL-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-LABEL-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="PREF" label="PREF" />
++ </vbox>
++ </vbox>
++ -->
++
++ <hbox>
++ <checkbox id="librewolf-extension-update-checkbox" data-l10n-id="librewolf-extension-update-checkbox" preference="extensions.update.autoUpdateDefault" flex="1" />
++ <html:label for="librewolf-extension-update-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-extension-update-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-extension-update-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-extension-update-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="extensions.update.autoUpdateDefault" label="extensions.update.autoUpdateDefault" />
++ <checkbox preference="extensions.update.enabled" label="extensions.update.enabled" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-autocopy-checkbox" data-l10n-id="librewolf-autocopy-checkbox" preference="clipboard.autocopy" flex="1" />
++ <html:label for="librewolf-autocopy-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-autocopy-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-autocopy-description" />
++ <checkbox preference="clipboard.autocopy" label="clipboard.autocopy" />
++ <checkbox preference="middlemouse.paste" label="middlemouse.paste" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-styling-checkbox" data-l10n-id="librewolf-styling-checkbox" preference="toolkit.legacyUserProfileCustomizations.stylesheets" flex="1" />
++ <html:label for="librewolf-styling-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-styling-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-styling-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-styling-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="toolkit.legacyUserProfileCustomizations.stylesheets" label="toolkit.legacyUserProfileCustomizations.stylesheets" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-network-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-ipv6-checkbox" data-l10n-id="librewolf-ipv6-checkbox" preference="network.dns.disableIPv6" flex="1" />
++ <html:label for="librewolf-ipv6-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-ipv6-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-ipv6-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-ipv6-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="network.dns.disableIPv6" label="network.dns.disableIPv6" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-broken-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-rfp-checkbox" data-l10n-id="librewolf-rfp-checkbox" preference="privacy.resistFingerprinting" flex="1" />
++ <html:label for="librewolf-rfp-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-rfp-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-rfp-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-rfp-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="privacy.resistFingerprinting" label="privacy.resistFingerprinting" />
++ </vbox>
++ </vbox>
++
++ <vbox class="indent">
++
++ <hbox>
++ <checkbox id="librewolf-letterboxing-checkbox" data-l10n-id="librewolf-letterboxing-checkbox" preference="privacy.resistFingerprinting.letterboxing" flex="1" />
++ <html:label for="librewolf-letterboxing-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-letterboxing-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-letterboxing-description" />
++ <checkbox preference="privacy.resistFingerprinting.letterboxing" label="privacy.resistFingerprinting.letterboxing" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-auto-decline-canvas-checkbox" data-l10n-id="librewolf-auto-decline-canvas-checkbox" preference="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" flex="1" />
++ <html:label for="librewolf-auto-decline-canvas-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-auto-decline-canvas-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-auto-decline-canvas-description" />
++ <html:div> <label data-l10n-id="librewolf-auto-decline-canvas-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" label="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" />
++ </vbox>
++ </vbox>
++
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-webgl-checkbox" data-l10n-id="librewolf-webgl-checkbox" preference="webgl.disabled" flex="1" />
++ <html:label for="librewolf-webgl-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-webgl-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-webgl-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-webgl-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="webgl.disabled" label="webgl.disabled" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-security-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-goog-safe-checkbox" data-l10n-id="librewolf-goog-safe-checkbox" preference="browser.safebrowsing.malware.enabled" flex="1" />
++ <html:label for="librewolf-goog-safe-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-goog-safe-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-goog-safe-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-goog-safe-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="browser.safebrowsing.malware.enabled" label="browser.safebrowsing.malware.enabled" />
++ <checkbox preference="browser.safebrowsing.phishing.enabled" label="browser.safebrowsing.phishing.enabled" />
++ <checkbox preference="browser.safebrowsing.blockedURIs.enabled" label="browser.safebrowsing.blockedURIs.enabled" />
++ <checkbox preference="browser.safebrowsing.provider.google4.gethashURL" label="browser.safebrowsing.provider.google4.gethashURL" id="librewolf-goog-safe-hash4"/>
++ <checkbox preference="browser.safebrowsing.provider.google4.updateURL" label="browser.safebrowsing.provider.google4.updateURL" id="librewolf-goog-safe-up4"/>
++ <checkbox preference="browser.safebrowsing.provider.google.gethashURL" label="browser.safebrowsing.provider.google.gethashURL" id="librewolf-goog-safe-hash"/>
++ <checkbox preference="browser.safebrowsing.provider.google.updateURL" label="browser.safebrowsing.provider.google.updateURL" id="librewolf-goog-safe-up"/>
++ </vbox>
++ </vbox>
++
++ <vbox class="indent">
++ <hbox>
++ <checkbox id="librewolf-goog-safe-download-checkbox" data-l10n-id="librewolf-goog-safe-download-checkbox" preference="browser.safebrowsing.downloads.enabled" flex="1" />
++ <html:label for="librewolf-goog-safe-download-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-goog-safe-download-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-goog-safe-download-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-goog-safe-download-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="browser.safebrowsing.downloads.enabled" label="browser.safebrowsing.downloads.enabled" />
++ </vbox>
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<hbox class="subcategory" hidden="true" data-category="paneLibrewolf">
++ <html:h1 data-l10n-id="librewolf-footer"/>
++</hbox>
++
++<groupbox data-category="paneLibrewolf" hidden="true">
++ <hbox>
++ <label id="librewolf-config-link-wrapper" class="sidebar-footer-link" is="text-link" flex="1">
++ <image class="sidebar-footer-icon" src="chrome://browser/skin/ion.svg" /> <!-- TODO not the typical way a picture is defined I think, and also we should copy the svg file in case they change it -->
++ <label id="librewolf-config-link" data-l10n-id="librewolf-config-link"></label>
++ </label>
++ <hbox pack="end">
++ <button id="librewolf-open-profile-button" class="accessory-button" is="highlightable-button" data-l10n-id="librewolf-open-profile"/>
++ </hbox>
++ </hbox>
++</groupbox>
++
++</html:template>
+diff --git a/browser/components/preferences/librewolf.js b/browser/components/preferences/librewolf.js
+new file mode 100644
+index 0000000..c460b8c
+--- /dev/null
++++ b/browser/components/preferences/librewolf.js
+@@ -0,0 +1,234 @@
++/* 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/. */
++
++/* import-globals-from extensionControlled.js */
++/* import-globals-from preferences.js */
++
++var { AppConstants } = ChromeUtils.import( "resource://gre/modules/AppConstants.jsm");
++XPCOMUtils.defineLazyGetter(this, "L10n", () => {
++ return new Localization([
++ "branding/brand.ftl",
++ "browser/preferences/preferences.ftl",
++ ]);
++});
++
++Preferences.addAll([
++ // IPv6
++ { id: "network.dns.disableIPv6", type: "bool" },
++ // WebGL
++ { id: "webgl.disabled", type: "bool" },
++ // RFP
++ { id: "privacy.resistFingerprinting", type: "bool" },
++ // Automatically Update Extensions
++ { id: "extensions.update.enabled", type: "bool" },
++ { id: "extensions.update.autoUpdateDefault", type: "bool" },
++ // Clipboard autocopy/paste
++ { id: "clipboard.autocopy", type: "bool" },
++ { id: "middlemouse.paste", type: "bool" },
++ // Harden
++ { id: "privacy.resistFingerprinting.letterboxing", type: "bool" },
++ // Google Safe Browsing
++ //{ id: "browser.safebrowsing.malware.enabled", type: "bool" }, // Already loaded
++ //{ id: "browser.safebrowsing.phishing.enabled", type: "bool" },
++ { id: "browser.safebrowsing.blockedURIs.enabled", type: "bool" },
++ { id: "browser.safebrowsing.provider.google4.gethashURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google4.updateURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google.gethashURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google.updateURL", type: "string" },
++ /**** Prefs that require changing a lockPref ****/
++ // Google safe browsing check downloads
++ //{ id: "browser.safebrowsing.downloads.enabled", type: "bool" }, //Also already added
++ { id: "toolkit.legacyUserProfileCustomizations.stylesheets", type: "bool" },
++ // Canvas UI when blocked
++ { id: "privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", type: "bool" },
++]);
++
++var gLibrewolfPane = {
++ _pane: null,
++
++ // called when the document is first parsed
++ init() {
++ this._pane = document.getElementById("paneLibrewolf");
++
++ // Set all event listeners on checkboxes
++ setBoolSyncListeners(
++ "librewolf-extension-update-checkbox",
++ ["extensions.update.autoUpdateDefault", "extensions.update.enabled"],
++ [true, true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-ipv6-checkbox",
++ ["network.dns.disableIPv6"],
++ [false, ],
++ );
++ setBoolSyncListeners(
++ "librewolf-autocopy-checkbox",
++ ["clipboard.autocopy", "middlemouse.paste"],
++ [true, true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-styling-checkbox",
++ ["toolkit.legacyUserProfileCustomizations.stylesheets"],
++ [true, ],
++ );
++
++ setBoolSyncListeners(
++ "librewolf-webgl-checkbox",
++ ["webgl.disabled"],
++ [false ],
++ );
++ setBoolSyncListeners(
++ "librewolf-rfp-checkbox",
++ ["privacy.resistFingerprinting"],
++ [true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-auto-decline-canvas-checkbox",
++ ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts"],
++ [true ],
++ );
++
++ setBoolSyncListeners(
++ "librewolf-letterboxing-checkbox",
++ ["privacy.resistFingerprinting.letterboxing"],
++ [true ],
++ );
++
++ setSyncListeners(
++ "librewolf-goog-safe-checkbox",
++ [
++ "browser.safebrowsing.malware.enabled",
++ "browser.safebrowsing.phishing.enabled",
++ "browser.safebrowsing.blockedURIs.enabled",
++ "browser.safebrowsing.provider.google4.gethashURL",
++ "browser.safebrowsing.provider.google4.updateURL",
++ "browser.safebrowsing.provider.google.gethashURL",
++ "browser.safebrowsing.provider.google.updateURL",
++ ],
++ [
++ true,
++ true,
++ true,
++ "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
++ "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
++ "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2",
++ "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%",
++ ],
++ [
++ false,
++ false,
++ false,
++ "",
++ "",
++ "",
++ "",
++ ]
++ );
++
++ // Set event listener on open profile directory button
++ setEventListener("librewolf-open-profile-button", "command", openProfileDirectory);
++ // Set event listener on open about:config button
++ setEventListener("librewolf-config-link", "click", openAboutConfig);
++
++ // Notify observers that the UI is now ready
++ Services.obs.notifyObservers(window, "librewolf-pane-loaded");
++ },
++};
++
++function openProfileDirectory() {
++ // Get the profile directory.
++ let currProfD = Services.dirsvc.get("ProfD", Ci.nsIFile);
++ let profileDir = currProfD.path;
++
++ // Show the profile directory.
++ let nsLocalFile = Components.Constructor(
++ "@mozilla.org/file/local;1",
++ "nsIFile",
++ "initWithPath"
++ );
++ new nsLocalFile(profileDir).reveal();
++}
++
++function openAboutConfig() {
++ window.open("about:config", "_blank");
++}
++
++function setBoolSyncListeners(checkboxid, opts, vals) {
++ setSyncFromPrefListener(checkboxid, () => readGenericBoolPrefs(opts, vals));
++ setSyncToPrefListener(checkboxid, () => writeGenericBoolPrefs(opts, vals, document.getElementById(checkboxid).checked));
++ for (let i = 1; i < opts.length; i++) {
++ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericBoolPrefs(opts, vals)));
++ }
++}
++function setSyncListeners(checkboxid, opts, onVals, offVals) {
++ setSyncFromPrefListener(checkboxid, () => readGenericPrefs(opts, onVals, offVals));
++ setSyncToPrefListener(checkboxid, () => writeGenericPrefs(opts, onVals, offVals, document.getElementById(checkboxid).checked));
++ for (let i = 1; i < opts.length; i++) {
++ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericPrefs(opts, onVals, offVals)));
++ }
++}
++
++function makeMasterCheckboxesReactive(checkboxid, func) {
++ let shouldBeChecked = func();
++ document.getElementById(checkboxid).checked = shouldBeChecked;
++}
++
++// Wrapper function in case something more is required (as I suspected in the first iteration of this)
++function getPref(pref) {
++ let retval = Preferences.get(pref);
++/* if (retval === undefined) {
++ return defaultValue;
++ } */
++ return retval._value;
++}
++// Returns true if all the preferences in prefs are equal to onVals, false otherwise TODO may need a third array for their default values because mozilla is dumb, after testing though pretty sure this was misinformation being spread by comments in default FF code that has long since been fixed
++function readGenericBoolPrefs(prefs, onVals) {
++ for (let i = 0; i < prefs.length; i++) {
++ if (getPref(prefs[i]) != onVals[i]) {
++ return false;
++ }
++ }
++ return true;
++}
++function writeGenericBoolPrefs(opts, vals, changeToOn) {
++ valsCopy = [...vals];
++ if (!changeToOn) {
++ for (let i = 0; i < vals.length; i++) {
++ valsCopy[i] = !vals[i];
++ }
++ }
++ // Start at 1 because returning sets the last one
++ for (let i = 1; i < vals.length; i++) {
++ Services.prefs.setBoolPref(opts[i], valsCopy[i]);
++ }
++ return valsCopy[0];
++}
++
++// Returns true if all the preferences in prefs are equal to onVals, false otherwise... currently the same as for Bool as offVals is ignored
++function readGenericPrefs(prefs, onVals, offVals) {
++ for (let i = 0; i < prefs.length; i ++) {
++ let temp = getPref(prefs[i]);
++ if (getPref(prefs[i]) != onVals[i]) {
++ return false;
++ }
++ }
++ return true;
++}
++function writeGenericPrefs(opts, onVals, offVals, changeToOn) {
++ let writeArr = (changeToOn) ? onVals : offVals;
++ for (let i = 1; i < opts.length; i++) {
++ let type = typeof(writeArr[i]);
++ if (type == "number") {
++ Services.prefs.setIntPref(opts[i], writeArr[i]);
++ } else if (type == "boolean") {
++ Services.prefs.setBoolPref(opts[i], writeArr[i]);
++ } else if (type == "string") {
++ Services.prefs.setCharPref(opts[i], writeArr[i]);
++ } else {
++ console.log("BADNESS 10000");
++ }
++ }
++ return writeArr[0];
++}
++
+diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
+index 91e9e46..763ab49 100644
+--- a/browser/components/preferences/preferences.js
++++ b/browser/components/preferences/preferences.js
+@@ -8,6 +8,7 @@
+ /* import-globals-from search.js */
+ /* import-globals-from containers.js */
+ /* import-globals-from privacy.js */
++/* import-globals-from librewolf.js */
+ /* import-globals-from sync.js */
+ /* import-globals-from experimental.js */
+ /* import-globals-from moreFromMozilla.js */
+@@ -190,6 +191,7 @@
+ register_module("paneHome", gHomePane);
+ register_module("paneSearch", gSearchPane);
+ register_module("panePrivacy", gPrivacyPane);
++ register_module("paneLibrewolf", gLibrewolfPane);
+ register_module("paneContainers", gContainersPane);
+ if (Services.prefs.getBoolPref("browser.preferences.experimental")) {
+ // Set hidden based on previous load's hidden value.
+diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
+index aab4a9e..907a631 100644
+--- a/browser/components/preferences/preferences.xhtml
++++ b/browser/components/preferences/preferences.xhtml
+@@ -12,6 +12,7 @@
+ <?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
+ <?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
+ <?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
++<?xml-stylesheet href="chrome://browser/skin/preferences/librewolf.css"?>
+
+ <!DOCTYPE html>
+
+@@ -128,6 +129,17 @@
+ <label class="category-name" flex="1" data-l10n-id="pane-privacy-title"></label>
+ </richlistitem>
+
++ <richlistitem id="category-librewolf"
++ class="category"
++ value="paneLibrewolf"
++ helpTopic="prefs-librewolf"
++ data-l10n-id="category-librewolf"
++ data-l10n-attrs="tooltiptext"
++ align="center">
++ <image class="category-icon"/>
++ <label class="category-name" flex="1" data-l10n-id="pane-librewolf-title"></label>
++ </richlistitem>
++
+ <richlistitem id="category-sync"
+ class="category"
+ hidden="true"
+@@ -201,6 +213,7 @@
+ #include home.inc.xhtml
+ #include search.inc.xhtml
+ #include privacy.inc.xhtml
++#include librewolf.inc.xhtml
+ #include containers.inc.xhtml
+ #include sync.inc.xhtml
+ #include experimental.inc.xhtml
+diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl
+index d276f7a..39f3660 100644
+--- a/browser/locales/en-US/browser/preferences/preferences.ftl
++++ b/browser/locales/en-US/browser/preferences/preferences.ftl
+@@ -1347,3 +1347,78 @@ choose-download-folder-title = Choose Download Folder:
+ # $service-name (String) - Name of a cloud storage provider like Dropbox, Google Drive, etc...
+ save-files-to-cloud-storage =
+ .label = Save files to { $service-name }
++
++## LibreWolf preferences
++
++# Sidebar
++pane-librewolf-title = LibreWolf
++category-librewolf =
++ .tooltiptext = about:config changes, logically grouped and easily accessible
++
++# Main content
++librewolf-header = Librewolf Preferences
++librewolf-warning-title = Heads up!
++librewolf-warning-description = We carefully choose default settings to focus on privacy and security. When changing these settings, read the descriptions to understand the implications of those changes.
++
++# Page Layout
++librewolf-general-heading = Browser Behavior
++librewolf-extension-update-checkbox =
++ .label = Update add-ons automatically
++librewolf-autocopy-checkbox =
++ .label = Enable middle click paste
++librewolf-styling-checkbox =
++ .label = Allow userChrome.css customization
++
++librewolf-network-heading = Networking
++librewolf-ipv6-checkbox =
++ .label = Enable IPv6
++
++librewolf-broken-heading = Fingerprinting
++librewolf-webgl-checkbox =
++ .label = Enable WebGL
++librewolf-rfp-checkbox =
++ .label = Enable ResistFingerprinting
++librewolf-auto-decline-canvas-checkbox =
++ .label = Silently block canvas access requests
++librewolf-letterboxing-checkbox =
++ .label = Enable letterboxing
++
++librewolf-security-heading = Security
++librewolf-goog-safe-checkbox =
++ .label = Enable Google Safe Browsing
++librewolf-goog-safe-download-checkbox =
++ .label = Scan downloads
++
++# In-depth descriptions
++librewolf-extension-update-description = Keep extensions up to date without manual intervention. A good choice for your security.
++librewolf-extension-update-warning1 = If you don't review the code of your extensions before every update, you should enable this option.
++
++librewolf-ipv6-description = Allow { -brand-short-name } to connect using IPv6.
++librewolf-ipv6-warning1 = Before you change this, make sure your OS uses the IPv6 privacy extension.
++
++librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
++
++librewolf-styling-description = Enable this if you want to customize the UI with a manually loaded theme.
++librewolf-styling-warning1 = Make sure you trust the provider of the theme.
++
++librewolf-webgl-description = WebGL is a strong fingerprinting vector.
++librewolf-webgl-warning1 = If you need to enable it, consider using an extension like Canvas Blocker.
++
++librewolf-rfp-description = ResistFingerprinting is the best in class anti-fingerprinting tool.
++librewolf-rfp-warning1 = If you need to disable it, consider using an extension like Canvas Blocker.
++
++librewolf-auto-decline-canvas-description = Automatically deny canvas access to websites, without prompting the user.
++librewolf-auto-decline-canvas-warning1 = It is still possible to allow canvas access from the urlbar.
++
++librewolf-letterboxing-description = Letterboxing applies margins around your windows, in order to return a limited set of rounded resolutions.
++
++librewolf-goog-safe-description = If you are worried about malware and phishing, consider enabling it.
++librewolf-goog-safe-warning1 = Disabled over censorship concerns but recommended for less advanced users. All the checks happen locally.
++
++librewolf-goog-safe-download-description = Allow Safe Browsing to scan your downloads to identify suspicious files.
++librewolf-goog-safe-download-warning1 = All the checks happen locally.
++
++# Footer
++librewolf-footer = Useful links
++librewolf-config-link = All advanced settings (about:config)
++librewolf-open-profile = Open user profile directory
+diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
+index cf1ebf0..336118c 100644
+--- a/browser/themes/shared/jar.inc.mn
++++ b/browser/themes/shared/jar.inc.mn
+@@ -79,6 +79,7 @@
+ skin/classic/browser/preferences/android-menu.svg (../shared/preferences/android-menu.svg)
+ skin/classic/browser/preferences/category-general.svg (../shared/preferences/category-general.svg)
+ skin/classic/browser/preferences/category-privacy-security.svg (../shared/preferences/category-privacy-security.svg)
++ skin/classic/browser/preferences/category-librewolf.svg (../shared/preferences/category-librewolf.svg)
+ skin/classic/browser/preferences/category-search.svg (../shared/preferences/category-search.svg)
+ skin/classic/browser/preferences/category-sync.svg (../shared/preferences/category-sync.svg)
+ skin/classic/browser/preferences/face-sad.svg (../shared/preferences/face-sad.svg)
+@@ -97,6 +98,7 @@
+ skin/classic/browser/preferences/vpn-logo.svg (../shared/preferences/vpn-logo.svg)
+ skin/classic/browser/preferences/search.css (../shared/preferences/search.css)
+ skin/classic/browser/preferences/siteDataSettings.css (../shared/preferences/siteDataSettings.css)
++ skin/classic/browser/preferences/librewolf.css (../shared/preferences/librewolf.css)
+ * skin/classic/browser/preferences/containers.css (../shared/preferences/containers.css)
+ * skin/classic/browser/preferences/containers-dialog.css (../shared/preferences/containers-dialog.css)
+ skin/classic/browser/upgradeDialog.css (../shared/upgradeDialog.css)
+diff --git a/browser/themes/shared/preferences/category-librewolf.svg b/browser/themes/shared/preferences/category-librewolf.svg
+new file mode 100644
+index 0000000..8ebf2eb
+--- /dev/null
++++ b/browser/themes/shared/preferences/category-librewolf.svg
+@@ -0,0 +1,96 @@
++<!-- 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" viewBox="0 0 20 20" width="20" height="20" fill="context-fill" fill-opacity="context-fill-opacity">
++ <path d="M15.5 9 15 9l0-4A5 5 0 0 0 5 5l0 4-.5 0A2.5 2.5 0 0 0 2 11.5l0 6A2.5 2.5 0 0 0 4.5 20l11 0a2.5 2.5 0 0 0 2.5-2.5l0-6A2.5 2.5 0 0 0 15.5 9zm-9-4c0-1.93 1.57-3.5 3.5-3.5 1.93 0 3.5 1.57 3.5 3.5l0 4-7 0 0-4zm10 12.7-.8.8-11.4 0-.8-.8 0-6.4.8-.8 11.4 0 .8.8 0 6.4z"/>
++</svg>
++-->
++
++<svg
++ xmlns:dc="http://purl.org/dc/elements/1.1/"
++ xmlns:cc="http://creativecommons.org/ns#"
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:svg="http://www.w3.org/2000/svg"
++ xmlns="http://www.w3.org/2000/svg"
++ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++ width="67.733337mm"
++ height="67.733337mm"
++ viewBox="0 0 67.733337 67.733337"
++ version="1.1"
++ id="svg8"
++ inkscape:version="0.92.4 5da689c313, 2019-01-14"
++ sodipodi:docname="LibreWolf.svg">
++ <defs
++ id="defs2" />
++ <sodipodi:namedview
++ id="base"
++ pagecolor="#ffffff"
++ bordercolor="#666666"
++ borderopacity="1.0"
++ inkscape:pageopacity="0.0"
++ inkscape:pageshadow="2"
++ inkscape:zoom="0.9899495"
++ inkscape:cx="-15.106575"
++ inkscape:cy="110.91343"
++ inkscape:document-units="mm"
++ inkscape:current-layer="layer1"
++ showgrid="false"
++ inkscape:window-width="1366"
++ inkscape:window-height="711"
++ inkscape:window-x="0"
++ inkscape:window-y="30"
++ inkscape:window-maximized="1"
++ inkscape:showpageshadow="false"
++ units="px"
++ fit-margin-top="0"
++ fit-margin-left="0"
++ fit-margin-right="0"
++ fit-margin-bottom="0" />
++ <metadata
++ id="metadata5">
++ <rdf:RDF>
++ <cc:Work
++ rdf:about="">
++ <dc:format>image/svg+xml</dc:format>
++ <dc:type
++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++ <dc:title />
++ </cc:Work>
++ </rdf:RDF>
++ </metadata>
++ <g
++ inkscape:label="Layer 1"
++ inkscape:groupmode="layer"
++ id="layer1"
++ transform="translate(-42.106554,-153.8982)">
++ <circle
++ style="fill:#00acff;fill-opacity:1;stroke:none;stroke-width:0.53545821;stroke-miterlimit:4;stroke-dasharray:none"
++ id="path875"
++ cx="75.973221"
++ cy="187.76486"
++ r="33.866669" />
++ <path
++ style="fill:#ffffff;stroke-width:0.13229167"
++ d="m 72.543594,214.67719 c -4.744093,-0.60875 -9.281981,-2.49991 -13.241953,-5.51858 -1.29157,-0.98455 -3.714943,-3.42363 -4.772834,-4.80375 -2.96241,-3.86476 -4.804479,-8.2508 -5.41218,-12.88661 -0.260164,-1.98464 -0.258719,-5.63349 0.0029,-7.44738 1.308078,-9.0677 7.01463,-16.8454 15.20915,-20.72918 3.811512,-1.80647 7.300266,-2.57114 11.730683,-2.57114 7.165903,0 13.5265,2.56749 18.680882,7.54063 2.483054,2.39575 4.148141,4.66808 5.573968,7.60677 1.92868,3.9751 2.70979,7.43276 2.70979,11.99526 0,6.00619 -1.7345,11.24407 -5.336957,16.11672 -1.070527,1.44797 -3.161747,3.64749 -4.549468,4.78507 -3.806562,3.12041 -8.658642,5.23183 -13.473174,5.86296 -1.663528,0.21807 -5.593318,0.24524 -7.120854,0.0492 z m 10.041381,-4.86547 c 2.898391,-0.91366 5.260364,-2.14146 7.540624,-3.91979 1.212494,-0.9456 3.308223,-3.06144 4.186916,-4.22711 2.38328,-3.16162 4.004927,-7.12196 4.482067,-10.94597 0.229814,-1.84182 0.09634,-5.73827 -0.2545,-7.4296 -0.9294,-4.48046 -2.931647,-8.26499 -6.086007,-11.50342 -1.966575,-2.01898 -3.756882,-3.34972 -6.060203,-4.50458 -3.495001,-1.75236 -6.489835,-2.46043 -10.423481,-2.46442 -4.164073,-0.004 -7.815325,0.95024 -11.429055,2.98766 -3.289753,1.85476 -6.690628,5.25952 -8.553227,8.563 -1.371786,2.43299 -2.37583,5.32029 -2.767595,7.95869 -0.256867,1.72991 -0.261933,5.16508 -0.01006,6.82145 0.504067,3.31489 1.761474,6.59111 3.584314,9.33904 0.995409,1.50058 0.964154,1.48393 1.842248,0.98153 1.570774,-0.8987 1.980396,-1.33342 2.836087,-3.00984 1.000624,-1.96036 2.070459,-3.6735 3.037094,-4.86332 1.115822,-1.37347 1.269228,-1.61793 1.828988,-2.9147 0.281654,-0.65249 0.786977,-1.61074 1.122938,-2.12943 l 0.61084,-0.94309 -0.79023,-0.77671 c -1.049647,-1.03168 -1.922751,-2.2016 -2.087012,-2.79651 -0.167761,-0.60758 0.03021,-0.9466 0.818744,-1.40207 0.797354,-0.46057 1.367585,-0.5929 3.498657,-0.81193 1.037629,-0.10665 2.164153,-0.30199 2.518962,-0.43681 0.353024,-0.13414 1.407825,-0.70824 2.344001,-1.27579 2.702947,-1.63863 2.931619,-1.72344 4.552111,-1.68831 1.368686,0.0297 1.371262,0.0291 2.182813,-0.46143 1.700674,-1.02802 4.14305,-2.88289 7.357044,-5.58733 0.61632,-0.5186 1.21002,-0.92569 1.31934,-0.90464 0.45462,0.0876 1.289567,2.13636 1.416407,3.47562 0.07693,0.81225 -0.08023,1.6155 -0.562014,2.87261 -0.13146,0.34301 -0.19208,0.67043 -0.134706,0.7276 0.13774,0.13726 0.610706,-0.4535 0.610706,-0.76279 0,-0.39435 0.261127,-0.43936 0.616327,-0.10623 0.258235,0.24218 0.480842,0.31151 1.000202,0.31151 0.567073,0 0.707447,0.0526 0.928773,0.3479 0.375574,0.50112 0.463647,1.86688 0.176201,2.73231 -0.279641,0.84191 -1.124801,1.81287 -1.891829,2.17341 -0.686334,0.32262 -2.075841,1.67928 -2.726081,2.66164 -0.248906,0.37604 -0.715586,1.15995 -1.037066,1.74204 -0.321487,0.58208 -0.86074,1.46154 -1.19834,1.95436 -0.664294,0.96972 -1.233147,2.3224 -1.782214,4.23798 -0.322553,1.1253 -0.34962,1.41826 -0.362953,3.92797 -0.01613,3.0317 -0.172894,3.77561 -0.9925,4.7091 -0.931805,1.06126 -1.861937,3.39186 -1.940127,4.8613 -0.04935,0.92751 -0.192246,1.83164 -0.395304,2.50122 -0.08942,0.29484 0.07752,0.2914 1.072102,-0.0221 z"
++ id="path847"
++ inkscape:connector-curvature="0" />
++ <path
++ sodipodi:type="star"
++ style="fill:#00acff;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
++ id="path814"
++ sodipodi:sides="4"
++ sodipodi:cx="18.854025"
++ sodipodi:cy="172.98837"
++ sodipodi:r1="1.6036172"
++ sodipodi:r2="1.1339285"
++ sodipodi:arg1="1.5707963"
++ sodipodi:arg2="2.3561945"
++ inkscape:flatsided="true"
++ inkscape:rounded="0"
++ inkscape:randomized="0"
++ d="m 18.854025,174.59199 -1.603617,-1.60362 1.603617,-1.60361 1.603617,1.60361 z"
++ transform="matrix(0.23203125,0.40188991,-0.99392962,0.57384553,246.21921,73.888081)" />
++ </g>
++</svg>
++
+diff --git a/browser/themes/shared/preferences/librewolf.css b/browser/themes/shared/preferences/librewolf.css
+new file mode 100644
+index 0000000..aeb550c
+--- /dev/null
++++ b/browser/themes/shared/preferences/librewolf.css
+@@ -0,0 +1,16 @@
++.librewolf-collapse > input {
++ display: none;
++}
++.librewolf-collapse > input ~ .librewolf-collapsed {
++ display: none;
++ /* max-height: 0; */
++ transition: max-height 0.25s ease-in-out;
++}
++.librewolf-collapse > input:checked ~ .librewolf-collapsed {
++ display: block;
++ /* max-height: 20rem; */
++}
++.librewolf-warning {
++ display: inline;
++ font-size: 0.8em;
++}
+diff --git a/browser/themes/shared/preferences/preferences.inc.css b/browser/themes/shared/preferences/preferences.inc.css
+index 31bffd0..1f9fbcf 100644
+--- a/browser/themes/shared/preferences/preferences.inc.css
++++ b/browser/themes/shared/preferences/preferences.inc.css
+@@ -201,6 +201,10 @@ checkbox {
+ list-style-image: url("chrome://browser/skin/preferences/category-privacy-security.svg");
+ }
+
++#category-librewolf > .category-icon {
++ list-style-image: url("chrome://browser/skin/preferences/category-librewolf.svg");
++}
++
+ #category-sync > .category-icon {
+ list-style-image: url("chrome://browser/skin/preferences/category-sync.svg");
+ }
diff --git a/librewolf.cfg b/librewolf.cfg
new file mode 100755
index 0000000..5b7ccd8
--- /dev/null
+++ b/librewolf.cfg
@@ -0,0 +1,498 @@
+//----------------------|
+// LibreWolf settings |
+//----------------------|
+
+/**
+
+ NOTE: please take the time to read and understand, but also to customize the settings to find your own setup.
+ the answers to the most common questions are at this link https://librewolf.net/docs/faq/
+
+ */
+
+defaultPref("librewolf.cfg.version", "5.1");
+
+// -------------------------------
+// # SANITIZING, TP, SESSIONS
+// -------------------------------
+
+/**
+ strict mode includes:
+ - dFPI for both normal and private browsing
+ - strict blocking lists for trackers, including crypto, fping and socialtracking
+ - shims to avoid breakage caused by blocking lists
+ - stricter policies for xorigin referrers
+ - cookie cleaning mechanism specific to dFPI
+*/
+pref("browser.contentblocking.category", "strict");
+
+defaultPref("network.cookie.cookieBehavior", 5); // dFPI is default for strict mode, but enforce
+defaultPref("network.cookie.lifetimePolicy", 2); // keep cookies until end of the session, then clear
+defaultPref("privacy.partition.serviceWorkers", true); // isolate service workers
+
+// make third party and http cookies session-only
+defaultPref("network.cookie.thirdparty.sessionOnly", true);
+defaultPref("network.cookie.thirdparty.nonsecureSessionOnly", true);
+
+/**
+ this way of sanitizing cookies would override the exceptions set by the users and just delete everything,
+ we disable it but cookies and site data are still cleared per session unless exceptions are set.
+ all the cleaning prefs true by default except for siteSetting and offlineApps, which is what we want.
+*/
+defaultPref("privacy.clearOnShutdown.cookies", false);
+defaultPref("privacy.sanitize.sanitizeOnShutdown", true);
+defaultPref("privacy.sanitize.timeSpan", 0);
+
+// disable browsing, search and form history
+defaultPref("places.history.enabled", false);
+defaultPref("browser.formfill.enable", false);
+
+// prevent websites from storing session data like cookies and forms, increase time between session saves
+defaultPref("browser.sessionstore.privacy_level", 2);
+defaultPref("browser.sessionstore.interval", 60000);
+
+// ----------------------
+// # NETWORKING
+// ----------------------
+
+// https and mixed content
+defaultPref("dom.security.https_only_mode", true); // only allow https in all windows, including private browsing
+defaultPref("network.auth.subresource-http-auth-allow", 1); // stop cross-origin resources from using HTTP authentication
+defaultPref("security.insecure_connection_text.enabled", true); // display http websites as insecure in the ui
+defaultPref("security.mixed_content.block_display_content", true); // block insecure passive content
+
+defaultPref("network.dns.disableIPv6", true); // disable ipv6
+
+// always send xorigin referer but trim them
+defaultPref("network.http.referer.XOriginPolicy", 0); // default, might be worth changing to 2
+defaultPref("network.http.referer.XOriginTrimmingPolicy", 2); // trim referer to only send scheme, host and port
+
+defaultPref("network.file.disable_unc_paths", true); // hidden, disable using uniform naming convention
+defaultPref("network.IDN_show_punycode", true); // use punycode in idn to prevent spoofing
+
+// proxy
+defaultPref("network.proxy.socks_remote_dns", true); // forces dns query through the proxy when using one
+defaultPref("network.gio.supported-protocols", ""); // disable gio as it could bypass proxy
+
+// doh
+defaultPref("network.trr.confirmationNS", "skip"); // skip undesired doh test connection
+/**
+ 0 = default
+ 1 = browser picks faster
+ 2 = DoH with system dns fallback
+ 3 = DoH without fallback
+ 5 = DoH is off, default currently
+
+ below prefs must be applied with pref in order to work
+*/
+// pref("network.trr.mode", 2);
+// pref("network.trr.uri", "https://dns.quad9.net/dns-query");
+
+// prefetching
+defaultPref("network.dns.disablePrefetch", true); // disable dns prefetching
+lockPref("network.predictor.enabled", false); // disable predictor
+lockPref("network.prefetch-next", false); // disable link prefetching
+lockPref("network.http.speculative-parallel-limit", 0); // disable prefetching on mouse over
+
+defaultPref("network.manage-offline-status", false); // let user control the offline behavior
+
+// ------------
+// # DOM
+// ------------
+
+// pop-ups and window related preferences
+defaultPref("dom.disable_beforeunload", true); // disable "confirm you want to leave" pop-ups on close
+defaultPref("dom.disable_open_during_load", true); // block pop-ups windows
+defaultPref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); // limit events that cause pop-ups
+defaultPref("dom.disable_window_move_resize", true); // block scripts from resizing windows
+defaultPref("browser.link.open_newwindow", 3); // open 'new windows' targeted links in 'new tab'
+defaultPref("browser.link.open_newwindow.restriction", 0); // ignore the size when applying the above pref
+
+// --------------------------------
+// # CACHE AND TEMPORARY FILES
+// --------------------------------
+
+defaultPref("browser.cache.disk.enable", false); // disable disk cache
+defaultPref("browser.privatebrowsing.forceMediaMemoryCache", true); // block media cache from writing to disk in pb mode
+defaultPref("media.memory_cache_max_size", 65536); // increase max cache size to avoid playback issues caused by above setting
+
+defaultPref("browser.shell.shortcutFavicons", false); // disable shortcut favicons from being stored in profile
+defaultPref("browser.helperApps.deleteTempFileOnExit", true); // delete temporary files opened with external apps
+defaultPref("browser.pagethumbnails.capturing_disabled", true); // disable page thumbnails capturing
+
+// ----------------------
+// # MEDIA
+// ----------------------
+
+/**
+ * limit potential private IP leaks for webrtc users.
+ * mDNS protects the value on linux, osx and win10+.
+ * these prefs protect the value when allowing mic and camera access, and for win7/8.x.
+ * */
+defaultPref("media.peerconnection.ice.no_host", true); // don't use any private IPs for ICE candidate
+defaultPref("media.peerconnection.ice.default_address_only", true); // use a single interface for ICE candidates, the vpn one when a vpn is used
+defaultPref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); // force webrtc inside proxy, when one is used
+
+// autoplay
+defaultPref("media.autoplay.blocking_policy", 2); // only allow to play when a certain element is clicked
+defaultPref("media.autoplay.default", 5); // personal preference, currently apply blocking policy to all autplay including muted
+
+// --------------------------------------
+// # FINGERPRINTING
+// --------------------------------------
+
+defaultPref("privacy.resistFingerprinting", true); // master switch
+
+// rfp compatibility settings
+defaultPref("privacy.resistFingerprinting.block_mozAddonManager", true); // prevents rfp from breaking AMO
+defaultPref("browser.startup.blankWindow", false); // if set to true it breaks RFP windows resizing
+defaultPref("browser.display.use_system_colors", false); // default but enforced due to RFP
+
+defaultPref("privacy.resistFingerprinting.letterboxing", false); // expose hidden letterboxing pref, but do not enable by default
+
+/**
+ * increase the size of new RFP windows for better usability, while still using a rounded value.
+ * if the screen resolution is lower it will stretch to the biggest possible rounded value.
+ * */
+defaultPref("privacy.window.maxInnerWidth", 1600);
+defaultPref("privacy.window.maxInnerHeight", 900);
+
+defaultPref("webgl.disabled", true); // master switch, disable webgl
+
+// --------------------------------
+// # SECURITY
+// --------------------------------
+
+defaultPref("fission.autostart", true); // enable fission by default
+
+// certificates
+defaultPref("security.cert_pinning.enforcement_level", 2); // enable strict public key pinning
+defaultPref("security.pki.sha1_enforcement_level", 1); // disable sha-1 certificates
+defaultPref("security.OCSP.enabled", 0); // disable ocsp fetching
+
+// crl with no ocsp fallback
+defaultPref("security.remote_settings.crlite_filters.enabled", true);
+defaultPref("security.pki.crlite_mode", 2);
+
+// safe negotiation
+defaultPref("security.ssl.require_safe_negotiation", true); // block websites that do not support safe negotiation, occasional breakage
+defaultPref("security.ssl.treat_unsafe_negotiation_as_broken", true); // show warning when safe negotiation is not enable and website is accessed
+
+// tls behavior
+lockPref("security.tls.enable_0rtt_data", false); // disable 0 round trip time to improve tls 1.3 security
+defaultPref("security.tls.version.enable-deprecated", false); // default but helps resetting the preference
+defaultPref("browser.ssl_override_behavior", 1); // prepopulate url on ssl warning screens
+defaultPref("browser.xul.error_pages.expert_bad_cert", true); // advanced ui infos for broken connections
+
+// permissions
+lockPref("permissions.delegation.enabled", false); // force permission request to show the real origin
+lockPref("permissions.manager.defaultsUrl", ""); // revoke special permissions from some mozilla domains
+
+defaultPref("gfx.font_rendering.opentype_svg.enabled", false); // disale svg opentype fonts
+
+defaultPref("browser.download.useDownloadDir", false); // force user interaction on downloads, by always asking location
+
+lockPref("security.csp.enable", true); // default
+
+// ---------------------------------
+// # SAFE BROWSING
+// ---------------------------------
+
+// disable safe browsing, including the fetch of updates and all outgoing connections
+defaultPref("browser.safebrowsing.malware.enabled", false);
+defaultPref("browser.safebrowsing.phishing.enabled", false);
+defaultPref("browser.safebrowsing.blockedURIs.enabled", false);
+defaultPref("browser.safebrowsing.provider.google4.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google4.updateURL", "");
+defaultPref("browser.safebrowsing.provider.google.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google.updateURL", "");
+
+// disable safe browsing checks on downloads, both local and remote
+defaultPref("browser.safebrowsing.downloads.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.url", "");
+lockPref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
+lockPref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+
+// other safe browsing options, all default but enforce
+lockPref("browser.safebrowsing.passwords.enabled", false);
+lockPref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
+lockPref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+
+// -----------------------
+// # DRM
+// -----------------------
+
+defaultPref("media.eme.enabled", false); // disable drm content, master switch that also controls widevine plugin
+defaultPref("media.gmp-manager.url", "data:text/plain,"); // prevent outgoing connections when DRM is disabled
+
+// disable the openh264 plugin
+defaultPref("media.gmp-provider.enabled", false);
+defaultPref("media.gmp-gmpopenh264.enabled", false);
+
+// ---------------------------------------------
+// # LOCATION, LANGUAGE AND REGION
+// ---------------------------------------------
+
+// use mozilla geo service as deault
+defaultPref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
+
+// prevent use of OS location services
+lockPref("geo.provider.ms-windows-location", false); // [WINDOWS]
+lockPref("geo.provider.use_corelocation", false); // [MAC]
+lockPref("geo.provider.use_gpsd", false); // [LINUX]
+
+/**
+show language as en-US for all users, regardless of their OS language and browser language.
+must use pref and not defaultPref to work. spoof_english also sets the UI correctly.
+ */
+pref("javascript.use_us_english_locale", true);
+pref("intl.accept_languages", "en-US, en");
+
+// disable region updates
+lockPref("browser.region.network.url", "");
+lockPref("browser.region.update.enabled", false);
+
+// --------------------------------
+// # SEARCH AND URLBAR
+// --------------------------------
+
+// disable search suggestions
+defaultPref("browser.urlbar.suggest.searches", false);
+defaultPref("browser.search.suggest.enabled", false);
+
+// firefox suggest, review to trim
+lockPref("browser.urlbar.quicksuggest.scenario", "history"); // prevent opt-in, doesn't work alone
+lockPref("browser.urlbar.quicksuggest.enabled", false); // disable suggest and hide its ui
+lockPref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // disable suggestions from firefox
+lockPref("browser.urlbar.suggest.quicksuggest.sponsored", false); // disable sponsored suggestions
+lockPref("browser.urlbar.quicksuggest.dataCollection.enabled", false); // default
+
+defaultPref("browser.search.update", false); // do not update open search search engines
+defaultPref("browser.urlbar.trimURLs", false); // do not trim urls in the urlbar
+
+// urlbar-dns interactions, avoid unwanted and speculative connections
+defaultPref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0);
+defaultPref("browser.urlbar.speculativeConnect.enabled", false);
+lockPref("browser.fixup.alternate.enabled", false);
+
+// ----------------------------------
+// # BROWSER BEHAVIOR
+// ----------------------------------
+
+lockPref("app.update.auto", false); // disable update auto installs
+
+// password manager
+defaultPref("signon.rememberSignons", false); // disable saving passwords in the browser
+defaultPref("signon.autofillForms", false); // disable username and password autofills
+defaultPref("signon.formlessCapture.enabled", false); // disable formless login capture
+
+// autofill
+defaultPref("extensions.formautofill.available", "off");
+defaultPref("extensions.formautofill.addresses.enabled", false);
+defaultPref("extensions.formautofill.creditCards.enabled", false);
+defaultPref("extensions.formautofill.creditCards.available", false);
+defaultPref("extensions.formautofill.heuristics.enabled", false);
+
+// containers
+defaultPref("privacy.userContext.enabled", true); // enable containers
+defaultPref("privacy.userContext.ui.enabled", true); // enable containers ui
+
+defaultPref("pdfjs.enableScripting", false); // block pdf js scripting
+
+defaultPref("accessibility.force_disabled", 1); // block accessibility services
+
+// devtools
+defaultPref("devtools.chrome.enabled", false); // disable chrome debugging tools
+defaultPref("devtools.debugger.remote-enabled", false); // default, disable remote debugging
+defaultPref("devtools.remote.adb.extensionURL", ""); // url to download ad extension
+
+// misc
+defaultPref("browser.shell.checkDefaultBrowser", false); // do not check if default browser
+defaultPref("browser.aboutConfig.showWarning", false); // disable about:config warning
+defaultPref("browser.download.autohideButton", false); // hide download button automatically
+defaultPref("browser.download.manager.addToRecentDocs", false); // do not add downloads to recents
+defaultPref("middlemouse.contentLoadURL", false); // prevent mouse middle click from opening links
+defaultPref("webchannel.allowObject.urlWhitelist", ""); // remove webchannel whitelist
+
+// --------------------------------------
+// # EXTENSIONS
+// --------------------------------------
+
+/**
+ allow extensions to work on all domains.
+ default is "debug-notes.log"
+ */
+defaultPref("extensions.webextensions.restrictedDomains", "");
+
+// set extensions scopes
+defaultPref("extensions.enabledScopes", 5); // hidden
+
+defaultPref("extensions.postDownloadThirdPartyPrompt", false); // force install prompt for thrid party extensions
+
+// about:addons ui
+defaultPref("extensions.htmlaboutaddons.recommendations.enabled", false); // disable recommendations from addons list
+defaultPref("extensions.getAddons.showPane", false); // disable recommendations section
+defaultPref("extensions.getAddons.cache.enabled", false); // disable fetching of extension metadata
+defaultPref("lightweightThemes.getMoreURL", ""); // disable button to get more themes
+
+// extension firewall, disabled by default
+// defaultPref("extensions.webextensions.base-content-security-policy", "default-src 'none'; script-src 'none'; object-src 'none';");
+// defaultPref("extensions.webextensions.base-content-security-policy.v3", "default-src 'none'; script-src 'none'; object-src 'none';");
+
+// report site issue, disable button and url for in depth defense
+lockPref("extensions.webcompat-reporter.enabled", false);
+lockPref("extensions.webcompat-reporter.newIssueEndpoint", "");
+
+// system addons, prevent updates and strip url for in depth defense
+defaultPref("extensions.systemAddon.update.enabled", false);
+defaultPref("extensions.systemAddon.update.url", "");
+
+// --------------------------------
+// # URLS AND ANNOYANCES
+// --------------------------------
+
+// set librewolf support and releases urls
+defaultPref("app.support.baseURL", "https://librewolf.net/docs/faq/#");
+defaultPref("browser.search.searchEnginesURL", "https://librewolf.net/docs/faq/#how-do-i-add-a-search-engine");
+defaultPref("browser.geolocation.warning.infoURL", "https://librewolf.net/docs/faq/#how-do-i-enable-location-aware-browsing");
+defaultPref("app.feedback.baseURL", "https://librewolf.net/#questions");
+defaultPref("app.releaseNotesURL", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.releaseNotesURL.aboutDialog", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.update.url.details", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.update.url.manual", "https://gitlab.com/librewolf-community/browser");
+
+// remove default handlers and translation engine
+lockPref("gecko.handlerService.schemes.mailto.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.mailto.0.name", "");
+lockPref("gecko.handlerService.schemes.mailto.1.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.mailto.1.name", "");
+lockPref("gecko.handlerService.schemes.irc.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.irc.0.name", "");
+lockPref("gecko.handlerService.schemes.ircs.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.ircs.0.name", "");
+lockPref("browser.translation.engine", "");
+
+// disable welcome, what is new pages and ui tour
+defaultPref("browser.startup.homepage_override.mstone", "ignore");
+defaultPref("startup.homepage_override_url", "about:blank");
+defaultPref("startup.homepage_welcome_url", "about:blank");
+defaultPref("startup.homepage_welcome_url.additional", "");
+lockPref("browser.messaging-system.whatsNewPanel.enabled", false);
+lockPref("browser.uitour.enabled", false);
+lockPref("browser.uitour.url", "");
+
+// hide annoying ui elements from about:protections
+defaultPref("browser.contentblocking.report.lockwise.enabled", false);
+defaultPref("browser.contentblocking.report.monitor.enabled", false);
+lockPref("browser.contentblocking.report.hide_vpn_banner", true);
+lockPref("browser.contentblocking.report.vpn.enabled", false);
+lockPref("browser.contentblocking.report.show_mobile_app", false);
+
+defaultPref("browser.topsites.useRemoteSetting", false); // hide sponsored shortcuts button from about:preferences#home
+
+// ------------------------------------
+// # NEW TAB PAGE
+// ------------------------------------
+
+defaultPref("browser.newtab.preload", false);
+defaultPref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false);
+defaultPref("browser.newtabpage.activity-stream.section.highlights.includeVisited", false);
+defaultPref("browser.newtabpage.activity-stream.feeds.topsites", false);
+
+// hide pocket and sponsored content, from new tab page and search bar
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.system.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories.options", "{\"hidden\":true}"); // hide buggy pocket section from about:preferences#home
+lockPref("browser.newtabpage.activity-stream.showSponsored", false);
+lockPref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
+lockPref("browser.newtabpage.activity-stream.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.default.sites", "");
+lockPref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
+lockPref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
+lockPref("browser.newtabpage.activity-stream.feeds.snippets", false); // default
+
+// disable recommend as you browse
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+
+// --------------------------------
+// # TELEMETRY
+// --------------------------------
+
+lockPref("toolkit.telemetry.unified", false); // master switch
+lockPref("toolkit.telemetry.enabled", false); // master switch
+lockPref("toolkit.telemetry.server", "data:,");
+lockPref("toolkit.telemetry.archive.enabled", false);
+lockPref("toolkit.telemetry.newProfilePing.enabled", false);
+lockPref("toolkit.telemetry.updatePing.enabled", false);
+lockPref("toolkit.telemetry.firstShutdownPing.enabled", false);
+lockPref("toolkit.telemetry.shutdownPingSender.enabled", false);
+lockPref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false); // default
+lockPref("toolkit.telemetry.bhrPing.enabled", false);
+lockPref("toolkit.telemetry.reportingpolicy.firstRun", false); // default
+lockPref("toolkit.telemetry.cachedClientID", "");
+lockPref("toolkit.telemetry.previousBuildID", "");
+lockPref("toolkit.telemetry.server_owner", "");
+lockPref("toolkit.coverage.opt-out", true); // hidden
+lockPref("toolkit.telemetry.coverage.opt-out", true); // hidden
+lockPref("toolkit.coverage.enabled", false);
+lockPref("toolkit.coverage.endpoint.base", "");
+lockPref("toolkit.crashreporter.infoURL", "");
+lockPref("datareporting.healthreport.uploadEnabled", false);
+lockPref("datareporting.policy.dataSubmissionEnabled", false);
+lockPref("security.protectionspopup.recordEventTelemetry", false);
+lockPref("browser.ping-centre.telemetry", false);
+
+// crash report
+lockPref("breakpad.reportURL", "");
+lockPref("browser.tabs.crashReporting.sendReport", false);
+
+// normandy and studies
+lockPref("app.normandy.enabled", false);
+lockPref("app.normandy.api_url", "");
+lockPref("app.shield.optoutstudies.enabled", false);
+
+// personalized extension recommendations
+lockPref("browser.discovery.enabled", false);
+lockPref("browser.discovery.containers.enabled", false);
+lockPref("browser.discovery.sites", "");
+
+// connectivity checks
+lockPref("network.connectivity-service.enabled", false);
+
+// captive portal
+lockPref("network.captive-portal-service.enabled", false);
+lockPref("captivedetect.canonicalURL", "");
+
+// prevent sending server side analytics
+lockPref("beacon.enabled", false);
+
+// --------------------------------
+// # WINDOWS
+// --------------------------------
+
+// disable windows specific background update service
+lockPref("app.update.service.enabled", false);
+defaultPref("app.update.background.scheduling.enabled", false);
+
+defaultPref("network.protocol-handler.external.ms-windows-store", false); // disable links launching windows store
+
+lockPref("toolkit.winRegisterApplicationRestart", false); // disable automatic Firefox start and session restore after reboot
+
+lockPref("security.family_safety.mode", 0); // disable win8.1 family safety cert
+
+lockPref("default-browser-agent.enabled", false); // disable windows specific telemetry
+
+defaultPref("network.http.windows-sso.enabled", false); // disable MS auto authentication via sso
+
+// -----------------------------------
+// # OVERRIDES
+// -----------------------------------
+
+// allow settings to be overriden with a file at `~/.librewolf/librewolf.overrides.cfg`
+// or `~/.var/app/io.gitlab.librewolf-community/.librewolf/librewolf.overrides.cfg` (Flatpak).
+let profile_directory;
+if (profile_directory = getenv('USERPROFILE') || getenv('HOME')) {
+ pref('autoadmin.global_config_url', `file://${profile_directory}/.librewolf/librewolf.overrides.cfg`);
+}
diff --git a/librewolf.spec b/librewolf.spec
new file mode 100644
index 0000000..e5a0cf0
--- /dev/null
+++ b/librewolf.spec
@@ -0,0 +1,1904 @@
+# Produce a build suitable for release, i.e. use PGO/LTO. You can turn it off
+# when building locally to reduce build time.
+%global release_build 1
+
+# Run Mozilla test suite as a part of compile rpm section. Turn off when
+# building locally and don't want to spend 24 hours waiting for results.
+%global run_firefox_tests 0
+%ifarch x86_64 %{ix86}
+%global run_firefox_tests 0
+%endif
+
+# Don't create debuginfo rpm packages. It reduces build time as
+# exctracting debuginfo takes long time.
+%global create_debuginfo 1
+
+# Produce debug (non-optimized) package build. Suitable for debugging only
+# as the build is *very* slow.
+%global debug_build 0
+
+%global system_nss 1
+%global build_with_asan 0
+%global test_on_wayland 1
+
+%if "%{toolchain}" == "clang"
+%global build_with_clang 1
+%else
+%global build_with_clang 0
+%endif
+
+# There are still build problems on s390x, see
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=55048351
+# https://bugzilla.redhat.com/show_bug.cgi?id=1897522
+ExcludeArch: s390x
+
+# Disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1966949
+%if 0%{?fedora} > 33
+ExcludeArch: armv7hl
+%endif
+
+# Disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=2019160
+%if 0%{?fedora} == 33
+ExcludeArch: aarch64
+%endif
+
+%ifarch armv7hl
+%global create_debuginfo 0
+%endif
+
+# Temporary disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1951606
+%global enable_mozilla_crashreporter 0
+%ifarch x86_64 %{ix86}
+%global enable_mozilla_crashreporter 1
+%endif
+%if %{build_with_asan}
+%global enable_mozilla_crashreporter 0
+%endif
+%if 0%{?flatpak}
+%global enable_mozilla_crashreporter 0
+%endif
+%if !%{create_debuginfo}
+%define _unpackaged_files_terminate_build 0
+%global debug_package %{nil}
+%global enable_mozilla_crashreporter 0
+%endif
+
+%global system_ffi 1
+%ifarch armv7hl
+%global system_libvpx 1
+%else
+%global system_libvpx 0
+%endif
+%global hardened_build 1
+%global system_jpeg 1
+%global disable_elfhack 1
+%global use_bundled_cbindgen 1
+%if %{debug_build}
+%global release_build 0
+%endif
+# Build PGO+LTO on x86_64 only due to build issues
+# on other arches.
+%global build_with_pgo 0
+%ifarch x86_64
+%if %{release_build}
+%global build_with_pgo 1
+%endif
+%endif
+%if 0%{?flatpak}
+%global build_with_pgo 0
+%endif
+# Big endian platforms
+%ifarch ppc64 s390x
+%global big_endian 1
+%endif
+
+%if 0%{?build_with_pgo}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%if 0%{?run_firefox_tests}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%global launch_wayland_compositor 0
+%if %{build_with_pgo} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+%if %{run_firefox_tests} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+
+%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html
+%global firefox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
+# Minimal required versions
+%global cairo_version 1.13.1
+%global freetype_version 2.1.9
+%global libnotify_version 0.7.0
+%if %{?system_libvpx}
+%global libvpx_version 1.8.2
+%endif
+
+%if %{?system_nss}
+%global nspr_version 4.26
+%global nspr_build_version %{nspr_version}
+%global nss_version 3.73
+%global nss_build_version %{nss_version}
+%endif
+
+%global mozappdir %{_libdir}/librewolf
+%global mozappdirdev %{_libdir}/librewolf-devel-%{version}
+%global langpackdir %{mozappdir}/langpacks
+%global tarballdir firefox-%{version}
+
+%global official_branding 1
+
+%bcond_with langpacks
+
+%if !%{release_build}
+%global pre_tag .npgo
+%endif
+%if %{build_with_clang}
+%global pre_tag .clang
+%endif
+%if %{build_with_asan}
+%global pre_tag .asan
+%global build_with_pgo 0
+%endif
+%if !%{system_nss}
+%global nss_tag .nss
+%endif
+%if %{debug_build}
+%global pre_tag .debug
+%endif
+
+# Exclude private libraries from autogenerated provides and requires
+%global __provides_exclude_from ^%{mozappdir}
+%global __requires_exclude ^(%%(find %{buildroot}%{mozappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))
+
+Summary: Mozilla Firefox Web browser
+Name: librewolf
+%global enable_mozilla_crashreporter 0
+Version: 96.0.1
+Release: 1%{?pre_tag}%{?dist}
+URL: https://www.mozilla.org/firefox/
+License: MPLv1.1 or GPLv2+ or LGPLv2+
+Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
+%if %{with langpacks}
+Source1: firefox-langpacks-%{version}%{?pre_version}-20220118.tar.xz
+%endif
+Source2: cbindgen-vendor.tar.xz
+Source10: firefox-mozconfig
+Source12: firefox-redhat-default-prefs.js
+Source20: firefox.desktop
+Source21: firefox.sh.in
+Source23: firefox.1
+Source24: mozilla-api-key
+Source25: firefox-symbolic.svg
+Source26: distribution.ini
+Source27: google-api-key
+Source28: firefox-wayland.sh.in
+Source29: firefox-wayland.desktop
+Source30: firefox-x11.sh.in
+Source31: firefox-x11.desktop
+Source32: node-stdout-nonblocking-wrapper
+Source33: firefox.appdata.xml.in
+Source34: firefox-search-provider.ini
+Source35: google-loc-api-key
+%if 0
+Source37: mochitest-python.tar.gz
+%endif
+Source38: print_results
+Source39: print-errors
+Source40: run-tests-x11
+Source41: run-tests-wayland
+Source42: psummary
+Source43: print_failures
+Source44: print-error-reftest
+Source45: run-wayland-compositor
+
+# Build patches
+Patch3: mozilla-build-arm.patch
+Patch25: rhbz-1219542-s390-build.patch
+Patch32: build-rust-ppc64le.patch
+Patch35: build-ppc-jit.patch
+# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x)
+Patch38: build-cacheFlush-missing.patch
+Patch40: build-aarch64-skia.patch
+Patch41: build-disable-elfhack.patch
+Patch44: build-arm-libopus.patch
+Patch46: firefox-nss-version.patch
+Patch47: fedora-shebang-build.patch
+#Patch48: build-arm-wasm.patch
+Patch49: build-arm-libaom.patch
+Patch53: firefox-gcc-build.patch
+# This should be fixed in Firefox 83
+Patch54: mozilla-1669639.patch
+Patch55: firefox-testing.patch
+Patch57: firefox-disable-ffvpx-with-vapi.patch
+Patch61: firefox-glibc-dynstack.patch
+Patch62: build-python.patch
+Patch63: build-python-glean.patch
+
+# Test patches
+# Generate without context by
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-xpcshell
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-reftest
+Patch100: firefox-tests-xpcshell.patch
+Patch101: firefox-tests-reftest.patch
+Patch102: firefox-tests-xpcshell-freeze.patch
+
+# Fedora specific patches
+Patch215: firefox-enable-addons.patch
+Patch219: rhbz-1173156.patch
+Patch221: firefox-fedora-ua.patch
+Patch224: mozilla-1170092.patch
+#ARM run-time patch
+Patch226: rhbz-1354671.patch
+Patch228: disable-openh264-download.patch
+Patch229: firefox-nss-addon-hack.patch
+
+# Upstream patches
+Patch402: mozilla-1196777.patch
+Patch407: mozilla-1667096.patch
+Patch408: mozilla-1663844.patch
+Patch415: mozilla-1670333.patch
+# xdg-activation backports from 97.0
+Patch421: D132929.diff
+Patch422: D133209.diff
+Patch423: D133485.diff
+Patch424: D133634.diff
+Patch425: D133885.diff
+Patch426: D134141.diff
+
+# PGO/LTO patches
+Patch600: pgo.patch
+Patch602: mozilla-1516803.patch
+
+%if %{?system_nss}
+BuildRequires: pkgconfig(nspr) >= %{nspr_version}
+BuildRequires: pkgconfig(nss) >= %{nss_version}
+BuildRequires: nss-static >= %{nss_version}
+%endif
+BuildRequires: pkgconfig(libpng)
+%if %{?system_jpeg}
+BuildRequires: libjpeg-devel
+%endif
+BuildRequires: zip
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: bzip2-devel
+BuildRequires: pkgconfig(zlib)
+BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: pkgconfig(gtk+-2.0)
+BuildRequires: pkgconfig(krb5)
+BuildRequires: pkgconfig(pango)
+BuildRequires: pkgconfig(freetype2) >= %{freetype_version}
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: pkgconfig(libstartup-notification-1.0)
+BuildRequires: pkgconfig(libnotify) >= %{libnotify_version}
+BuildRequires: pkgconfig(dri)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: dbus-glib-devel
+%if %{?system_libvpx}
+BuildRequires: libvpx-devel >= %{libvpx_version}
+%endif
+BuildRequires: autoconf213
+BuildRequires: pkgconfig(libpulse)
+BuildRequires: yasm
+BuildRequires: llvm
+BuildRequires: llvm-devel
+BuildRequires: clang
+BuildRequires: clang-libs
+%if %{build_with_clang}
+BuildRequires: lld
+%endif
+
+BuildRequires: pipewire-devel
+
+%if !0%{?use_bundled_cbindgen}
+BuildRequires: cbindgen
+%endif
+BuildRequires: nodejs
+BuildRequires: nasm >= 1.13
+BuildRequires: libappstream-glib
+
+%if 0%{?big_endian}
+BuildRequires: icu
+%endif
+
+Requires: mozilla-filesystem
+Recommends: mozilla-openh264 >= 2.1.1
+Recommends: libva
+Requires: p11-kit-trust
+Requires: pciutils-libs
+%if %{?system_nss}
+Requires: nspr >= %{nspr_build_version}
+Requires: nss >= %{nss_build_version}
+%endif
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+%if !0%{?flatpak}
+Requires: u2f-hidraw-policy
+%endif
+
+BuildRequires: desktop-file-utils
+%if !0%{?flatpak}
+BuildRequires: system-bookmarks
+%endif
+%if %{?system_ffi}
+BuildRequires: pkgconfig(libffi)
+%endif
+
+%if 0%{?use_xvfb}
+BuildRequires: xorg-x11-server-Xvfb
+%endif
+BuildRequires: rust
+BuildRequires: cargo
+BuildRequires: clang-devel
+%if %{build_with_asan}
+BuildRequires: libasan
+BuildRequires: libasan-static
+%endif
+BuildRequires: perl-interpreter
+BuildRequires: fdk-aac-free-devel
+%if 0%{?test_on_wayland}
+BuildRequires: mutter
+BuildRequires: gsettings-desktop-schemas
+BuildRequires: gnome-settings-daemon
+BuildRequires: mesa-dri-drivers
+BuildRequires: xorg-x11-server-Xwayland
+BuildRequires: dbus-x11
+BuildRequires: gnome-keyring
+%endif
+%if 0%{?run_firefox_tests}
+BuildRequires: procps-ng
+BuildRequires: nss-tools
+BuildRequires: python2.7
+BuildRequires: dejavu-sans-mono-fonts
+BuildRequires: dejavu-sans-fonts
+BuildRequires: dejavu-serif-fonts
+BuildRequires: dbus-x11
+BuildRequires: gnome-keyring
+BuildRequires: mesa-dri-drivers
+# ----------------------------------------
+BuildRequires: liberation-fonts-common
+BuildRequires: liberation-mono-fonts
+BuildRequires: liberation-sans-fonts
+BuildRequires: liberation-serif-fonts
+# ----------------------------------
+# Missing on f32
+%if 0%{?fedora} > 33
+BuildRequires: google-carlito-fonts
+%endif
+BuildRequires: google-droid-sans-fonts
+BuildRequires: google-noto-fonts-common
+BuildRequires: google-noto-cjk-fonts-common
+BuildRequires: google-noto-sans-cjk-ttc-fonts
+BuildRequires: google-noto-sans-gurmukhi-fonts
+BuildRequires: google-noto-sans-fonts
+BuildRequires: google-noto-emoji-color-fonts
+BuildRequires: google-noto-sans-sinhala-vf-fonts
+# -----------------------------------
+BuildRequires: thai-scalable-fonts-common
+BuildRequires: thai-scalable-waree-fonts
+BuildRequires: khmeros-base-fonts
+BuildRequires: jomolhari-fonts
+# ----------------------------------
+BuildRequires: lohit-tamil-fonts
+BuildRequires: lohit-telugu-fonts
+# ----------------------------------
+BuildRequires: paktype-naskh-basic-fonts
+# faild to build in Koji / f32
+%if 0%{?fedora} > 33
+BuildRequires: pt-sans-fonts
+%endif
+BuildRequires: smc-meera-fonts
+BuildRequires: stix-fonts
+BuildRequires: abattis-cantarell-fonts
+BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi
+BuildRequires: xorg-x11-fonts-misc
+%endif
+BuildRequires: make
+BuildRequires: pciutils-libs
+
+Obsoletes: mozilla <= 37:1.7.13
+Provides: webclient
+
+Source100: librewolf-branding.tgz
+Source101: librewolf.cfg
+Source102: local-settings.js
+Source103: policies.json
+Source104: search-config.json
+Patch900: allow-ubo-private-mode.patch
+Patch901: context-menu.patch
+Patch902: disable-data-reporting-at-compile-time.patch
+Patch903: librewolf-pref-pane.patch
+Patch904: mozilla-vpn-ad.patch
+Patch905: mozilla_dirs.patch
+Patch906: remove_addons.patch
+Patch907: allow-searchengines-non-esr.patch
+Patch908: disable-pocket.patch
+Patch909: remove-internal-plugin-certs.patch
+Patch910: stop-undesired-requests.patch
+Patch911: hide-safe-browsing.patch
+Patch912: pref-naming.patch
+Patch913: remove-branding-urlbar.patch
+Patch914: remove-cfrprefs.patch
+Patch915: remove-organization-policy-banner.patch
+Patch916: remove-snippets-from-home.patch
+Patch917: sanitizing-description.patch
+Patch918: urlbarprovider-interventions.patch
+
+%description
+Mozilla Firefox is an open-source web browser, designed for standards
+compliance, performance and portability.
+
+%package x11
+Summary: LibreWolf X11 launcher.
+Requires: %{name}
+%description x11
+The librewolf-x11 package contains launcher and desktop file
+to run LibreWolf explicitly on X11.
+%files x11
+%{_bindir}/librewolf-x11
+%{_datadir}/applications/librewolf-x11.desktop
+
+%package wayland
+Summary: LibreWolf Wayland launcher.
+Requires: %{name}
+%description wayland
+The librewolf-wayland package contains launcher and desktop file
+to run LibreWolf explicitly on Wayland.
+%files wayland
+%{_bindir}/librewolf-wayland
+%{_datadir}/applications/librewolf-wayland.desktop
+
+%if 0%{?run_firefox_tests}
+%global testsuite_pkg_name %{name}-testresults
+%package -n %{testsuite_pkg_name}
+Summary: Results of testsuite
+%description -n %{testsuite_pkg_name}
+This package contains results of tests executed during build.
+%files -n %{testsuite_pkg_name}
+/%{version}-%{release}/test_results
+/%{version}-%{release}/test_summary.txt
+/%{version}-%{release}/failures-*
+%endif
+
+#---------------------------------------------------------------------
+
+%prep
+%setup -q -n %{tarballdir}
+
+# Build patches, can't change backup suffix from default because during build
+# there is a compare of config and js/config directories and .orig suffix is
+# ignored during this compare.
+
+%ifarch s390
+%patch25 -p1 -b .rhbz-1219542-s390
+%endif
+%patch40 -p1 -b .aarch64-skia
+%if 0%{?disable_elfhack}
+%patch41 -p1 -b .disable-elfhack
+%endif
+%patch3 -p1 -b .arm
+%patch44 -p1 -b .build-arm-libopus
+%patch47 -p1 -b .fedora-shebang
+%patch49 -p1 -b .build-arm-libaom
+%patch53 -p1 -b .firefox-gcc-build
+%patch54 -p1 -b .1669639
+%patch55 -p1 -b .testing
+%patch57 -p1 -b .ffvpx-with-vapi
+%patch63 -p1 -b .build-python-glean.patch
+#%patch62 -p1 -b .build-python
+
+# Test patches
+%patch100 -p1 -b .firefox-tests-xpcshell
+#%patch101 -p1 -b .firefox-tests-reftest
+%patch102 -p1 -b .firefox-tests-xpcshell-freeze
+
+# Fedora patches
+%patch215 -p1 -b .addons
+%patch219 -p1 -b .rhbz-1173156
+%patch221 -p1 -b .fedora-ua
+%patch224 -p1 -b .1170092
+#ARM run-time patch
+%ifarch aarch64
+%patch226 -p1 -b .1354671
+%endif
+%patch228 -p1 -b .disable-openh264-download
+%patch229 -p1 -b .firefox-nss-addon-hack
+
+%patch402 -p1 -b .1196777
+%patch407 -p1 -b .1667096
+%patch408 -p1 -b .1663844
+%patch415 -p1 -b .1670333
+
+# xdg-activation backports from 97.0
+%patch421 -p1 -b .D132929
+%patch422 -p1 -b .D133209
+%patch423 -p1 -b .D133485
+%patch424 -p1 -b .D133634
+%patch425 -p1 -b .D133885
+%patch426 -p1 -b .D134141
+
+# PGO patches
+%if %{build_with_pgo}
+%if !%{build_with_clang}
+%patch600 -p1 -b .pgo
+%patch602 -p1 -b .1516803
+%endif
+%endif
+
+export MOZ_NOSPAM=1
+( cd browser ; tar -zxf %{SOURCE100} )
+%{__rm} -f .mozconfig
+%patch900 -p1
+%patch901 -p1
+%patch902 -p1
+%patch903 -p1
+%patch904 -p1
+%patch905 -p1
+%patch906 -p1
+%patch907 -p1
+%patch908 -p1
+%patch909 -p1
+%patch910 -p1
+%patch911 -p1
+%patch912 -p1
+%patch913 -p1
+%patch914 -p1
+%patch915 -p1
+%patch916 -p1
+%patch917 -p1
+%patch918 -p1
+sed -i '/"pocket"/d' browser/components/moz.build
+sed -i "/SaveToPocket\.init/d" browser/components/BrowserGlue.jsm
+sed -i -r -e '/organizationalUnit.{0,5}=.{0,5}Mozilla/{N;N;N;d}' toolkit/mozapps/extensions/internal/XPIInstall.jsm
+sed -i -r -e '/enterprise_only/s#true#false#g;' browser/components/enterprisepolicies/schemas/policies-schema.json
+_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
+sed -e "${_settings_services_sed}" -i browser/components/newtab/data/content/activity-stream.bundle.js
+sed -e "${_settings_services_sed}" -i modules/libpref/init/all.js
+sed -e "${_settings_services_sed}" -i services/settings/Utils.jsm
+sed -e "${_settings_services_sed}" -i toolkit/components/search/SearchUtils.jsm
+%{__cp} %{SOURCE10} .mozconfig
+echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig
+%if %{official_branding}
+echo "ac_add_options --enable-official-branding" >> .mozconfig
+%endif
+%{__cp} %{SOURCE24} mozilla-api-key
+%{__cp} %{SOURCE27} google-api-key
+%{__cp} %{SOURCE35} google-loc-api-key
+
+echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig
+echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig
+
+%if %{?system_nss}
+echo "ac_add_options --with-system-nspr" >> .mozconfig
+echo "ac_add_options --with-system-nss" >> .mozconfig
+%else
+echo "ac_add_options --without-system-nspr" >> .mozconfig
+echo "ac_add_options --without-system-nss" >> .mozconfig
+%endif
+
+%if %{?system_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+
+%ifarch %{arm}
+echo "ac_add_options --disable-elf-hack" >> .mozconfig
+%endif
+
+%if %{?debug_build}
+echo "ac_add_options --disable-debug" >> .mozconfig
+echo "ac_add_options --disable-optimize" >> .mozconfig
+%else
+%global optimize_flags "none"
+%ifarch ppc64le aarch64
+%global optimize_flags "-g -O2"
+%endif
+%if %{optimize_flags} != "none"
+echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig
+%else
+echo 'ac_add_options --enable-optimize' >> .mozconfig
+%endif
+echo "ac_add_options --disable-debug" >> .mozconfig
+%endif
+
+# Second arches fail to start with jemalloc enabled
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if 0%{?build_tests}
+echo "ac_add_options --disable-tests" >> .mozconfig
+%else
+echo "ac_add_options --disable-tests" >> .mozconfig
+%endif
+
+%if !%{?system_jpeg}
+echo "ac_add_options --without-system-jpeg" >> .mozconfig
+%else
+echo "ac_add_options --with-system-jpeg" >> .mozconfig
+%endif
+
+%if %{?system_libvpx}
+echo "ac_add_options --with-system-libvpx" >> .mozconfig
+%else
+echo "ac_add_options --without-system-libvpx" >> .mozconfig
+%endif
+
+%ifarch s390 s390x
+echo "ac_add_options --disable-jit" >> .mozconfig
+%endif
+
+%if %{build_with_asan}
+echo "ac_add_options --enable-address-sanitizer" >> .mozconfig
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if !%{enable_mozilla_crashreporter}
+echo "ac_add_options --disable-crashreporter" >> .mozconfig
+%endif
+
+# api keys full path
+echo "ac_add_options --with-mozilla-api-keyfile=`pwd`/mozilla-api-key" >> .mozconfig
+# It seems that the api key we have is for the safe browsing only
+echo "ac_add_options --with-google-location-service-api-keyfile=`pwd`/google-loc-api-key" >> .mozconfig
+echo "ac_add_options --with-google-safebrowsing-api-keyfile=`pwd`/google-api-key" >> .mozconfig
+
+echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig
+
+# Remove executable bit to make brp-mangle-shebangs happy.
+chmod -x third_party/rust/itertools/src/lib.rs
+chmod a-x third_party/rust/ash/src/extensions/ext/*.rs
+chmod a-x third_party/rust/ash/src/extensions/khr/*.rs
+chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
+
+#---------------------------------------------------------------------
+
+cp -p %{SOURCE104} %{_builddir}/%{tarballdir}/services/settings/dumps/main/
+%build
+# Disable LTO to work around rhbz#1883904
+%define _lto_cflags %{nil}
+
+%if 0%{?use_bundled_cbindgen}
+mkdir -p my_rust_vendor
+cd my_rust_vendor
+%{__tar} xf %{SOURCE2}
+mkdir -p .cargo
+cat > .cargo/config <<EOL
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "`pwd`"
+EOL
+
+env CARGO_HOME=.cargo cargo install cbindgen
+export PATH=`pwd`/.cargo/bin:$PATH
+cd -
+%endif
+
+mkdir %{_buildrootdir}/bin || :
+cp %{SOURCE32} %{_buildrootdir}/bin || :
+
+# Update the various config.guess to upstream release for aarch64 support
+# Do not update config.guess in the ./third_party/rust because that would break checksums
+find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
+
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+#rhbz#1037063
+# -Werror=format-security causes build failures when -Wno-format is explicitly given
+# for some sources
+# Explicitly force the hardening flags for Firefox so it passes the checksec test;
+# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+%if 0%{?fedora} < 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
+%else
+# Workaround for mozbz#1531309
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
+%endif
+%if 0%{?fedora} > 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive"
+%endif
+%if %{?hardened_build}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
+%endif
+%if %{?debug_build}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+%endif
+%ifarch s390
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
+# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
+# overrides the -g1 from line above and breaks building on s390/arm
+# (OOM when linking, rhbz#1238225)
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%ifarch %{arm} %{ix86}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%if !%{build_with_clang}
+%ifarch s390 ppc aarch64 %{ix86}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
+%endif
+%ifarch %{arm}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug"
+echo "ac_add_options --enable-linker=gold" >> .mozconfig
+%endif
+%endif
+%if 0%{?flatpak}
+# Make sure the linker can find libraries in /app/lib64 as we don't use
+# __global_ldflags that normally sets this.
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}"
+%endif
+%ifarch %{arm} %{ix86} %{s390x}
+export RUSTFLAGS="-Cdebuginfo=0"
+%endif
+%if %{build_with_asan}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc"
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl"
+%endif
+
+# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
+
+echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig
+
+%if %{build_with_clang}
+echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig
+echo "export AR=\"llvm-ar\"" >> .mozconfig
+echo "export NM=\"llvm-nm\"" >> .mozconfig
+echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig
+echo "ac_add_options --enable-linker=lld" >> .mozconfig
+%else
+echo "export CC=gcc" >> .mozconfig
+echo "export CXX=g++" >> .mozconfig
+echo "export AR=\"gcc-ar\"" >> .mozconfig
+echo "export NM=\"gcc-nm\"" >> .mozconfig
+echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig
+%endif
+%if 0%{?build_with_pgo}
+echo "ac_add_options MOZ_PGO=1" >> .mozconfig
+# PGO build doesn't work with ccache
+export CCACHE_DISABLE=1
+%endif
+
+echo "ac_add_options --enable-hardening" >> .mozconfig
+echo "ac_add_options --enable-rust-simd" >> .mozconfig
+echo "ac_add_options --with-app-name=librewolf" >> .mozconfig
+echo "ac_add_options --with-app-basename=LibreWolf" >> .mozconfig
+echo "ac_add_options --disable-default-browser-agent" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-distribution-id=io.gitlab.librewolf-community" >> .mozconfig
+echo "ac_add_options --with-unsigned-addon-scopes=app,system" >> .mozconfig
+echo "ac_add_options --enable-alsa" >> .mozconfig
+echo "ac_add_options --enable-jack" >> .mozconfig
+echo "export MOZ_REQUIRE_SIGNING=" >> .mozconfig
+echo "ac_add_options --disable-updater" >> .mozconfig
+echo "mk_add_options MOZ_CRASHREPORTER=0" >> .mozconfig
+echo "mk_add_options MOZ_DATA_REPORTING=0" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_HEALTHREPORT=0" >> .mozconfig
+echo "mk_add_options MOZ_TELEMETRY_REPORTING=0" >> .mozconfig
+MOZ_SMP_FLAGS=-j1
+# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
+# however builds tend to fail on other arches when building in parallel.
+%ifarch %{ix86} s390x %{arm} aarch64
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+%endif
+%ifarch x86_64 ppc ppc64 ppc64le
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
+[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
+[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
+[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
+[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
+[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
+%endif
+
+echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
+echo "export STRIP=/bin/true" >> .mozconfig
+#export MACH_USE_SYSTEM_PYTHON=1
+
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if %{build_with_pgo}
+%if %{test_on_wayland}
+env | grep "WAYLAND"
+MOZ_ENABLE_WAYLAND=1 ./mach build -v 2>&1 | cat -
+%else
+xvfb-run ./mach build -v 2>&1 | cat -
+%endif
+%else
+./mach build -v 2>&1 | cat -
+%endif
+
+#---------------------------------------------------------------------
+%install
+# run Firefox test suite
+export MACH_USE_SYSTEM_PYTHON=1
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if 0%{?run_firefox_tests}
+mkdir -p objdir/_virtualenvs/init_py3
+%{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF
+[global]
+find-links=`pwd`/mochitest-python
+no-index=true
+EOF
+tar xf %{SOURCE37}
+cp %{SOURCE40} %{SOURCE41} %{SOURCE42} %{SOURCE38} %{SOURCE39} %{SOURCE43} %{SOURCE44} .
+mkdir -p test_results
+%if %{test_on_wayland}
+./run-tests-wayland || true
+%else
+./run-tests-x11 || true
+%endif
+./print_results > test_summary.txt 2>&1 || true
+./print_failures || true
+%endif
+
+# set up our default bookmarks
+%if 0
+%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/en-US/locale/browser/bookmarks.html
+%endif
+
+DESTDIR=%{buildroot} make -C objdir/instrumented install
+
+%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
+_seds="s/Firefox/LibreWolf/g;s/firefox/librewolf/g;"
+S20="$( basename "%{SOURCE20}" | sed -r -e ${_seds} )"
+S31="$( basename "%{SOURCE31}" | sed -r -e ${_seds} )"
+S29="$( basename "%{SOURCE29}" | sed -r -e ${_seds} )"
+sed -r %{SOURCE20} -e ${_seds} > ${S20}
+sed -r %{SOURCE31} -e ${_seds} > ${S31}
+sed -r %{SOURCE29} -e ${_seds} > ${S29}
+
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S20}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S31}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S29}
+
+# set up the librewolf start script
+%{__rm} -rf %{buildroot}%{_bindir}/librewolf
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/librewolf
+%{__sed} -i %{buildroot}%{_bindir}/librewolf \
+ -e "${_seds}" \
+ -e "/restorecon/{s/.mozilla\/firefox/.librewolf/;}"
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf
+
+%if 0%{?flatpak}
+sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/librewolf
+%else
+sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/librewolf
+%endif
+
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/librewolf-x11
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-x11
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} > %{buildroot}%{_bindir}/librewolf-wayland
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-wayland
+
+%{__cp} -p %{SOURCE101} %{buildroot}/%{mozappdir}/
+%{__install} -p -D -m 0644 %{SOURCE102} %{buildroot}/%{mozappdir}/defaults/pref/local-settings.js
+%{__install} -p -D -m 0644 %{SOURCE103} %{buildroot}/%{mozappdir}/distribution/policies.json
+%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/librewolf.1
+
+%{__rm} -f %{buildroot}/%{mozappdir}/librewolf-config
+%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
+
+for s in 16 32 48 64 128; do
+ %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
+ %{__cp} -p browser/branding/librewolf/default${s}.png \
+ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/librewolf.png
+done
+
+# Install hight contrast icon
+%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+%{__cp} -p %{SOURCE25} \
+ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/$( basename %{SOURCE25} | sed -r -e "${_seds}" )
+
+echo > %{name}.lang
+%if %{with langpacks}
+# Extract langpacks, make any mods needed, repack the langpack, and install it.
+%{__mkdir_p} %{buildroot}%{langpackdir}
+%{__tar} xf %{SOURCE1}
+for langpack in `ls firefox-langpacks/*.xpi`; do
+ language=`basename $langpack .xpi`
+ extensionID=langpack-$language@firefox.mozilla.org
+ %{__mkdir_p} $extensionID
+ unzip -qq $langpack -d $extensionID
+ find $extensionID -type f | xargs chmod 644
+
+ cd $extensionID
+ zip -qq -r9mX ../${extensionID}.xpi *
+ cd -
+
+ %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
+ language=`echo $language | sed -e 's/-/_/g'`
+%if 0%{?flatpak}
+ echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%else
+ echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%endif
+done
+%{__rm} -rf firefox-langpacks
+
+# Install langpack workaround (see #707100, #821169)
+function create_default_langpack() {
+language_long=$1
+language_short=$2
+cd %{buildroot}%{langpackdir}
+ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
+cd -
+echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang
+}
+
+# Table of fallbacks for each language
+# please file a bug at bugzilla.redhat.com if the assignment is incorrect
+#create_default_langpack "bn-IN" "bn"
+create_default_langpack "es-AR" "es"
+create_default_langpack "fy-NL" "fy"
+create_default_langpack "ga-IE" "ga"
+create_default_langpack "gu-IN" "gu"
+create_default_langpack "hi-IN" "hi"
+create_default_langpack "hy-AM" "hy"
+create_default_langpack "nb-NO" "nb"
+create_default_langpack "nn-NO" "nn"
+create_default_langpack "pa-IN" "pa"
+create_default_langpack "pt-PT" "pt"
+create_default_langpack "sv-SE" "sv"
+create_default_langpack "zh-TW" "zh"
+%endif
+
+%{__mkdir_p} %{buildroot}/%{mozappdir}/browser/defaults/preferences
+
+# System config dir
+%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
+
+# System extensions
+%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
+
+# Copy over the LICENSE
+%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+
+# Use the system hunspell dictionaries
+%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
+
+%if 0%{?run_firefox_tests}
+%{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/
+%{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true
+%endif
+
+# Default
+%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
+
+# Copy over run-mozilla.sh
+%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
+
+# Add distribution.ini
+%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
+%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
+cat > distribution.ini <<END
+[Global]
+id=io.gitlab.librewolf-community
+version=1.0
+about=LibreWolf
+
+[Preferences]
+app.distributor="LibreWolf Community"
+app.distributor.channel=librewolf
+app.partner.librewolf=librewolf
+END
+install -Dvm644 distribution.ini %{buildroot}%{mozappdir}/distribution
+
+# Install appdata file
+mkdir -p %{buildroot}%{_datadir}/metainfo
+%{__sed} -e "s/__VERSION__/%{version}/" \
+ -e "s/__DATE__/$(date '+%F')/" \
+ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/librewolf.appdata.xml
+
+# Install Gnome search provider files
+mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
+%{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
+
+# Remove gtk2 support as flash plugin is no longer supported
+rm -rf %{buildroot}%{mozappdir}/gtk2/
+
+# Remove copied libraries to speed up build
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so
+
+# Create a symlink to replace libnssckbi.so with p11-kit-client.so
+# instead of p11-kit-trust.so, so that Firefox can see the system
+# trust store on the host through the p11-kit RPC protocol. A symlink
+# to libnss3.so is also needed, because Firefox tries to load
+# libnssckbi.so from the same directory where libnss3.so is loaded (as
+# of Firefox 89).
+%if 0%{?flatpak}
+ln -sf /usr/lib64/libnss3.so %{buildroot}%{_libdir}/libnss3.so
+ln -sf /usr/lib64/pkcs11/p11-kit-client.so %{buildroot}%{_libdir}/libnssckbi.so
+%endif
+#---------------------------------------------------------------------
+
+# Moves defaults/preferences to browser/defaults/preferences
+%pretrans -p <lua>
+require 'posix'
+require 'os'
+if (posix.stat("%{mozappdir}/browser/defaults/preferences", "type") == "link") then
+ posix.unlink("%{mozappdir}/browser/defaults/preferences")
+ posix.mkdir("%{mozappdir}/browser/defaults/preferences")
+ if (posix.stat("%{mozappdir}/defaults/preferences", "type") == "directory") then
+ for i,filename in pairs(posix.dir("%{mozappdir}/defaults/preferences")) do
+ os.rename("%{mozappdir}/defaults/preferences/"..filename, "%{mozappdir}/browser/defaults/preferences/"..filename)
+ end
+ f = io.open("%{mozappdir}/defaults/preferences/README","w")
+ if f then
+ f:write("Content of this directory has been moved to %{mozappdir}/browser/defaults/preferences.")
+ f:close()
+ end
+ end
+end
+
+%check
+appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml
+
+%preun
+# is it a final removal?
+if [ $1 -eq 0 ]; then
+ %{__rm} -rf %{mozappdir}/components
+ %{__rm} -rf %{mozappdir}/extensions
+ %{__rm} -rf %{mozappdir}/plugins
+ %{__rm} -rf %{langpackdir}
+fi
+
+%post
+update-desktop-database &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun
+update-desktop-database &> /dev/null || :
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%files -f %{name}.lang
+%{mozappdir}/defaults/pref/local-settings.js
+%{mozappdir}/distribution/policies.json
+%{mozappdir}/librewolf.cfg
+%{_bindir}/librewolf
+%{mozappdir}/librewolf
+%{mozappdir}/librewolf-bin
+%doc %{_mandir}/man1/*
+%dir %{_sysconfdir}/%{name}
+%dir %{_sysconfdir}/%{name}/*
+%dir %{_datadir}/mozilla/extensions/*
+%dir %{_libdir}/mozilla/extensions/*
+%{_datadir}/applications/%{name}.desktop
+%{_datadir}/metainfo/*.appdata.xml
+%{_datadir}/gnome-shell/search-providers/*.ini
+%dir %{mozappdir}
+%license %{mozappdir}/LICENSE
+%{mozappdir}/browser/chrome
+%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
+%{mozappdir}/browser/features/*.xpi
+%{mozappdir}/distribution/distribution.ini
+# That's Windows only
+%ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi
+%if %{with langpacks}
+%dir %{langpackdir}
+%endif
+%{mozappdir}/browser/omni.ja
+%{mozappdir}/run-mozilla.sh
+%{mozappdir}/application.ini
+%{mozappdir}/pingsender
+%exclude %{mozappdir}/removed-files
+%if 0%{?flatpak}
+%{_libdir}/libnss3.so
+%{_libdir}/libnssckbi.so
+%endif
+%{_datadir}/icons/hicolor/16x16/apps/librewolf.png
+%{_datadir}/icons/hicolor/64x64/apps/librewolf.png
+%{_datadir}/icons/hicolor/128x128/apps/librewolf.png
+%{_datadir}/icons/hicolor/32x32/apps/librewolf.png
+%{_datadir}/icons/hicolor/48x48/apps/librewolf.png
+%{_datadir}/icons/hicolor/symbolic/apps/librewolf-symbolic.svg
+%if %{enable_mozilla_crashreporter}
+%{mozappdir}/crashreporter
+%{mozappdir}/crashreporter.ini
+%{mozappdir}/minidump-analyzer
+%{mozappdir}/Throbber-small.gif
+%{mozappdir}/browser/crashreporter-override.ini
+%endif
+%{mozappdir}/*.so
+%{mozappdir}/defaults/pref/channel-prefs.js
+%{mozappdir}/dependentlibs.list
+%{mozappdir}/dictionaries
+%{mozappdir}/omni.ja
+%{mozappdir}/platform.ini
+%{mozappdir}/plugin-container
+%{mozappdir}/gmp-clearkey
+%{mozappdir}/fonts/TwemojiMozilla.ttf
+%if !%{?system_nss}
+%exclude %{mozappdir}/libnssckbi.so
+%endif
+%if %{build_with_asan}
+%{mozappdir}/llvm-symbolizer
+%endif
+
+#---------------------------------------------------------------------
+
+%changelog
+* Wed Jan 19 2022 B. Stack <bgstack15@gmail.com> - 96.0.1-1
+- Fork to librewolf release.
+
+* Tue Jan 18 2022 Martin Stransky <stransky@redhat.com> - 96.0.1-1
+- Updated to 96.0.1
+
+* Tue Jan 11 2022 Martin Stransky <stransky@redhat.com> - 96.0-1
+- Updated to 96.0
+
+* Sat Jan 08 2022 Miro Hrončok <mhroncok@redhat.com> - 95.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34
+
+* Thu Dec 23 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-4
+- Added fix fox mozbz#1744896 (VSync)
+
+* Wed Dec 22 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-3
+- Added Fedora 36 build fix (mzbz#1745560)
+
+* Mon Dec 20 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-1
+- Updated to 95.0.2
+- Enabled Wayland on KDE by default
+
+* Thu Dec 9 2021 Martin Stransky <stransky@redhat.com> - 95.0-2
+- Updated symbolic icon (rhbz#2028939)
+
+* Fri Dec 3 2021 Martin Stransky <stransky@redhat.com> - 95.0-1
+- Updated to 95.0
+
+* Fri Nov 19 2021 Martin Stransky <stransky@redhat.com> - 94.0-2
+- Added fix for mozbz#1739924 / rhbz#2020981.
+
+* Mon Nov 1 2021 Martin Stransky <stransky@redhat.com> - 94.0-1
+- Updated to 94.0
+
+* Thu Oct 07 2021 Martin Stransky <stransky@redhat.com> - 93.0-2
+- Require NSS 3.70
+
+* Wed Sep 29 2021 Martin Stransky <stransky@redhat.com> - 93.0-1
+- Updated to 93.0
+
+* Mon Sep 27 2021 Martin Stransky <stransky@redhat.com> - 92.0.1-1
+- Updated to 92.0.1
+
+* Mon Sep 13 2021 Martin Stransky <stransky@redhat.com> - 92.0-3
+- Added fix for mozbz#1725828
+
+* Thu Sep 9 2021 Martin Stransky <stransky@redhat.com> - 92.0-2
+- Disable test
+
+* Fri Sep 3 2021 Martin Stransky <stransky@redhat.com> - 92.0-1
+- Updated to 92.0
+- Added fix for mozbz#1728749
+- Added fix for mozbz#1708709
+
+* Thu Aug 26 2021 Martin Stransky <stransky@redhat.com> - 91.0.2-1
+- Updated to 91.0.2
+
+* Mon Aug 23 2021 Martin Stransky <stransky@redhat.com> - 91.0.1-2
+- Set %%build_with_clang automatically based on %%toolchain
+ by Timm Bäder <tbaeder@redhat.com>
+- Updated Fedora UA patch by Eric Engestrom
+ (https://src.fedoraproject.org/rpms/firefox/pull-request/21)
+- Added fix for mozbz#1726515
+
+* Mon Aug 23 2021 Martin Stransky <stransky@redhat.com> - 91.0.1-1
+- Updated to 91.0.1
+
+* Tue Aug 10 2021 Martin Stransky <stransky@redhat.com> - 91.0-1
+- Updated to 91.0
+
+* Wed Aug 04 2021 Martin Stransky <stransky@redhat.com> - 90.0.2-2
+- Added fix for rhbz#1988841 - Allow unsigned extensions when installed
+ under non-user-writable dirs.
+
+* Thu Jul 22 2021 Martin Stransky <stransky@redhat.com> - 90.0.2-1
+- Updated to 90.0.2
+
+* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 90.0.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Wed Jul 21 2021 Martin Stransky <stransky@redhat.com> - 90.0.1-1
+- Updated to 90.0.1
+- Added fixes to build on rawhide
+
+* Thu Jul 15 2021 Martin Stransky <stransky@redhat.com> - 90.0-3
+- Disabled Wayland backend on KDE due to
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1714132
+
+* Tue Jul 13 2021 Martin Stransky <stransky@redhat.com> - 90.0-2
+- Added xorg-x11-server-Xwayland dependency for Mutter
+
+* Mon Jul 12 2021 Martin Stransky <stransky@redhat.com> - 90.0-1
+- Updated to 90.0
+
+* Mon Jul 12 2021 Daiki Ueno <dueno@redhat.com> - 89.0.2-3
+- flatpak: Enable loading system trust store on the host (rhbz#1766340)
+
+* Wed Jun 30 2021 Martin Stransky <stransky@redhat.com> - 89.0.2-2
+- Added fix for mozbz#1715254 (rhbz#1976892).
+
+* Thu Jun 24 2021 Martin Stransky <stransky@redhat.com> - 89.0.2-1
+- Updated to latest upstream (89.0.2)
+
+* Mon Jun 14 2021 Martin Stransky <stransky@redhat.com> - 89.0-2
+- Added fix for mozbz#1646135
+
+* Tue Jun 1 2021 Martin Stransky <stransky@redhat.com> - 89.0-1
+- Updated to latest upstream (89.0)
+
+* Mon May 10 2021 Martin Stransky <stransky@redhat.com> - 88.0.1-1
+- Updated to latest upstream (88.0.1)
+
+* Tue May 4 2021 Martin Stransky <stransky@redhat.com> - 88.0-8
+- Added fix for mozbz#1705048.
+
+* Fri Apr 30 2021 Martin Stransky <stransky@redhat.com> - 88.0-7
+- Added pciutils-libs req (rhbz#1955338)
+- Enabled Wayland on KDE (rhbz#1922608)
+
+* Tue Apr 27 2021 Martin Stransky <stransky@redhat.com> - 88.0-6
+- Test fix.
+
+* Fri Apr 23 2021 Martin Stransky <stransky@redhat.com> - 88.0-5
+- Added fix for mozbz#1580595 - mouse pointer lock.
+- Another test update.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-4
+- Run with mochitest test suite.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-3
+- Build with crashreporter enabled.
+
+* Wed Apr 21 2021 Martin Stransky <stransky@redhat.com> - 88.0-2
+- Added clipboard fix mzbz#1703763.
+
+* Mon Apr 19 2021 Martin Stransky <stransky@redhat.com> - 88.0-1
+- Update to 88.0
+
+* Mon Apr 12 2021 Martin Stransky <stransky@redhat.com> - 87.0-12
+- Added fix for mozbz#1701089 (Widevine playback issues).
+
+* Tue Apr 6 2021 Martin Stransky <stransky@redhat.com> - 87.0-11
+- Enabled xpcshell/crashtests on Wayland.
+
+* Sat Apr 3 2021 Martin Stransky <stransky@redhat.com> - 87.0-10
+- Wayland testing again.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-9
+- Added fix for mozbz#1702606 / rhbz#1936071
+- Switched tests back to X11 due to massive failures.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-8
+- Run testsuite on Wayland on Fedora 33+
+- Spec cleanup
+
+* Wed Mar 31 2021 Martin Stransky <stransky@redhat.com> - 87.0-7
+- Added fix for mozbz#1693472 - Wayland/KDE rendering issues.
+
+* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 87.0-6
+- Rebuilt for removed libstdc++ symbol (#1937698)
+
+* Tue Mar 30 2021 Martin Stransky <stransky@redhat.com> - 87.0-5
+- Reftest fix
+
+* Fri Mar 26 2021 Martin Stransky <stransky@redhat.com> - 87.0-4
+- More test fixes
+- Enabled ppc64le
+- Disabled crashreporter on Fedora 34+
+
+* Wed Mar 24 2021 Martin Stransky <stransky@redhat.com> - 87.0-2
+- More test fixes
+
+* Tue Mar 23 2021 Martin Stransky <stransky@redhat.com> - 87.0-1
+- Disabled ARM due to build failures
+- Updated to 87.0
+
+* Sat Mar 13 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-2
+- Enabled ARM
+
+* Fri Mar 12 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-1
+- Update to latest upstream (86.0.1)
+
+* Wed Mar 10 2021 Martin Stransky <stransky@redhat.com> - 86.0-8
+- Temporary disable ppc64le/Fedora 35 due to
+ https://bugzilla.redhat.com/show_bug.cgi?id=1933742
+
+* Wed Mar 3 2021 Martin Stransky <stransky@redhat.com> - 86.0-7
+- Added fix for mozbz#1694670
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-6
+- Run xpcshell tests sequential
+- Test fixes
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-4
+- Enable Wayland backend only when Wayland display is set.
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-3
+- Added icecat-78.7.1-fix_error_template_with_C_linkage.patch to
+ build on F34+
+
+* Fri Feb 26 2021 Martin Stransky <stransky@redhat.com> - 86.0-2
+- Built with system nss
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 86.0-1
+- Update to 86.0
+- Disabled Wayland backend on KDE/Plasma
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-2
+- Fixed some reftest run in Mock
+
+* Mon Feb 08 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-1
+- Updated to 85.0.1
+
+* Wed Feb 03 2021 Dan Horák <dan[at]danny.cz> - 85.0-11
+- Fix parameter passing on ppc64le (mozb#1690152)
+
+* Tue Feb 02 2021 Kalev Lember <klember@redhat.com> - 85.0-10
+- Remove gtk2 support as flash plugin is no longer supported
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-9
+- Enable WebRender on KDE/Wayland and AMD/Intel drivers.
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-8
+- Enable Wayland backend on Fedora 34/KDE/Plasma (and other compositors)
+ by default (https://bugzilla.redhat.com/show_bug.cgi?id=1922608).
+
+* Fri Jan 29 2021 Martin Stransky <stransky@redhat.com> - 85.0-7
+- Added clipboard fix mozbz#1631061.
+
+* Thu Jan 28 2021 Kalev Lember <klember@redhat.com> - 85.0-6
+- Make provides/requires filtering smarter/automatic (rhbz#1582116)
+- Drop dbus-glib requires that are now automatically generated again
+
+* Thu Jan 28 2021 Martin Stransky <stransky@redhat.com> - 85.0-5
+- Add dbus-glib requires.
+
+* Tue Jan 26 2021 Martin Stransky <stransky@redhat.com> - 85.0-4
+- Added fix for mozbz#1679933 - startup crash
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 85.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Wed Jan 20 2021 Martin Stransky <stransky@redhat.com> - 85.0-2
+- Update to 85.0.
+
+* Wed Jan 20 2021 Jan Horak <jhorak@redhat.com> - 84.0.2-8
+- Fixing package requires/provides
+
+* Tue Jan 19 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-7
+- Fixed mzbz#164294 regression.
+
+* Fri Jan 15 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-6
+- Added WebRender fix (mozbz#1681107).
+
+* Thu Jan 14 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-5
+- Removed some failing tests.
+- Spec file tweaks.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-4
+- Enabled LTO in Firefox build system.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-3
+- Removed failing xpcshell/reftests, test tweaks.
+
+* Mon Jan 11 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-2
+- Added a workaround for rhbz#1908018
+
+* Wed Jan 6 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-1
+- Updated to 84.0.2
+
+* Tue Jan 05 2021 Jan Horak <jhorak@redhat.com> - 84.0.1-5
+- Removing requires/provides of the bundled libraries
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-4
+- Enabled tests
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-3
+- Enabled armv7hl arch on rawhide
+
+* Wed Dec 23 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-2
+- Reverted mzbz#1631061 due to clipboard regressions
+- Disabled armv7hl build on rawhide due to rhbz#1910277
+- Build with system nss on rawhide (rhbz#1908791).
+
+* Tue Dec 22 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-1
+- Updated to 84.0.1
+
+* Sun Dec 20 2020 Miro Hrončok <mhroncok@redhat.com> - 84.0-7
+- Filter out private libraries provides
+- Fixes: rhbz#1908791
+
+* Thu Dec 17 2020 Martin Stransky <stransky@redhat.com> - 84.0-6
+- Disable PGO on Rawhide due to build issues
+- Disable system nss on Rawhide due to rhbz#1908018
+- Enabled system nss on Fedora 33/32
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-5
+- Build with tests enabled
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-4
+- Disabled LTO due to massive test failures
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-3
+- Updated to Firefox 84 Build 3
+- Disabled system nss due to addon breakage (rhbz#1908018).
+
+* Wed Dec 9 2020 Martin Stransky <stransky@redhat.com> - 83.0-15
+- Enabled tests everywhere
+- Enabled crash reporter
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-14
+- Enabled LTO
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-13
+- Added fix for mozbz#1672139
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-12
+- More mochitest fixes
+
+* Mon Nov 30 2020 Martin Stransky <stransky@redhat.com> - 83.0-11
+- Mochitest tweaking
+
+* Sat Nov 28 2020 Martin Stransky <stransky@redhat.com> - 83.0-10
+- Added fix for mzbz#1678680
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-9
+- Added mochitest test files
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-8
+- Added fix for rhbz#1900542
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-7
+- Export MOZ_GMP_PATH from /usr/bin/firefox script
+ (https://pagure.io/fedora-workstation/issue/126)
+
+* Tue Nov 24 2020 Martin Stransky <stransky@redhat.com> - 83.0-6
+- Fix mochitest
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-5
+- Build with tests enabled
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-4
+- Enable all arches
+
+* Fri Nov 13 2020 Martin Stransky <stransky@redhat.com> - 83.0-3
+- Updated to 83.0 Build 2
+
+* Thu Nov 12 2020 Martin Stransky <stransky@redhat.com> - 83.0-1
+- Updated to 83.0
+- Updated PipeWire patches from mozbz#1672944
+
+* Tue Nov 10 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-2
+- Added fix for mozbz#1885133
+
+* Mon Nov 9 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-1
+- Updated to 82.0.3
+
+* Mon Nov 9 2020 Kalev Lember <klember@redhat.com> - 82.0.2-7
+- Include date in appdata release tags
+
+* Fri Nov 6 2020 Tomas Popela <tpopela@redhat.com> - 82.0.2-6
+- Re-enable s390x buils by backporting a change from Thunderbird
+ https://src.fedoraproject.org/rpms/thunderbird/c/5f0bec1b5b79e117cc469710afbfa4d008af9c29?branch=master
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-5
+- Added mozilla-openh264 dependency to play H264 clips out of the box
+- Updated Firefox tests
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-3
+- Disabled LTO again.
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-2
+- NSS debug build
+
+* Thu Oct 29 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-1
+- Updated to 82.0.2
+- Removed mzbz#1668771 due to rhbz#1888920
+
+* Wed Oct 28 2020 Martin Stransky <stransky@redhat.com> - 82.0.1-1
+- Updated to 82.0.1
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-8
+- Added fix for mozbz#1673313
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-7
+- Added fix for rawhide crashes (rhbz#1891234)
+
+* Sat Oct 24 2020 Martin Stransky <stransky@redhat.com> - 82.0-6
+- Enable LTO
+
+* Tue Oct 20 2020 Martin Stransky <stransky@redhat.com> - 82.0-5
+- Added fix for rhbz#1889742 - Typo in /usr/bin/firefox
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-4
+- Updated openh264 patch to use keyframes from contained
+ for openh264 only.
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-3
+- Added ELN build fixes
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-2
+- Updated SELinux relabel setup (rhbz#1731371)
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-1
+- Updated to 82.0 Build 2
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-3
+- Added experimental openh264 seek patch (mzbz#1670333)
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-2
+- Added a partial fox for rhbz#1886722
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-1
+- Updated to latest upstream - 81.0.2
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-9
+- Added an updated fix for mozbz#1656727
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-8
+- Added fixes for mozbz#1634404, mozbz#1669495
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-7
+- Removed mozbz#1656727 as it causes a regression rhbz#1886243
+
+* Wed Oct 7 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-6
+- PGO patch update
+- Added fix for mzbz#1669442 (LTO builds)
+
+* Mon Oct 5 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-5
+- Added fix for mozbz#1656727
+
+* Fri Oct 2 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-4
+- Added fix for mozbz#1668771
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-3
+- Added fix for mozbz#1661192
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-2
+- Added fix for mozbz#1640567
+- Enable PGO
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-1
+- Updated to 81.0.1
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0-9
+- Disabled openh264 download
+- Removed fdk-aac-free dependency (rhbz#1883672)
+- Enabled LTO
+
+* Sat Sep 26 2020 Dan Horák <dan[at]danny.cz> - 81.0-8
+- Re-enable builds for ppc64le
+
+* Fri Sep 25 2020 Martin Stransky <stransky@redhat.com> - 81.0-7
+- Added openh264 fixes
+
+* Wed Sep 23 2020 Martin Stransky <stransky@redhat.com> - 81.0-6
+- Added fix for rhbz#1731371
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-5
+- Re-enable builds for armv7hl and aarch64 architectures
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-4
+- Disable LTO to work around firefox build failing in F33+
+
+* Mon Sep 21 2020 Martin Stransky <stransky@redhat.com> - 81.0-3
+- Updated to 81.0 Build 2
+- Updated firefox-disable-ffvpx-with-vapi patch
+- Deleted old changelog entries
+
+* Thu Sep 17 2020 Martin Stransky <stransky@redhat.com> - 81.0-2
+- Added upstream patches mzbz#1665324 mozbz#1665329
+- Updated requested nss version to 3.56
+
+* Tue Sep 15 2020 Martin Stransky <stransky@redhat.com> - 81.0-1
+- Updated to 81.0
+
+* Thu Sep 10 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-3
+- Test build for all arches.
+
+* Fri Sep 4 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-2
+- Added patch for mozbz#1875469
+
+* Tue Sep 1 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-1
+- Updated to 80.0.1
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 80.0-1
+- Updated to 80.0 Build 2
+- Go back to gcc
+- Disabled WebGL dmabuf backend due to reported errors
+ (mzbz#1655323, mozbz#1656505).
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 79.0-6
+- Enabled pgo
+- Build with clang
+
+* Tue Aug 4 2020 Martin Stransky <stransky@redhat.com> - 79.0-5
+- Added upstream fix for mozbz#1656436.
+
+* Mon Aug 3 2020 Martin Stransky <stransky@redhat.com> - 79.0-4
+- Updated fix for mozbz#1645671
+
+* Thu Jul 30 2020 Martin Stransky <stransky@redhat.com> - 79.0-3
+- Added VA-API fix for mozbz#1645671
+
+* Wed Jul 29 2020 Martin Stransky <stransky@redhat.com> - 79.0-2
+- Try to enable armv7hl again.
+- Disabled ppc64le due to cargo crash (rhbz#1862012).
+
+* Mon Jul 27 2020 Martin Stransky <stransky@redhat.com> - 79.0-1
+- Update to 79.0
+- Disabled PGO due to rhbz#1849165 (gcc internal error).
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 78.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Thu Jul 23 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 78.0-4
+- Use python3 instead of python2 for build
+
+* Tue Jul 21 2020 Martin Stransky <stransky@redhat.com> - 78.0-3
+- Added fix for mozbz#1651701/rhbz#1855730
+
+* Fri Jul 10 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-2
+- Fixing clang build - linker setup
+
+* Thu Jul 09 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-1
+- Update to 78.0.2 build2
+
+* Wed Jul 01 2020 Jan Horak <jhorak@redhat.com> - 78.0.1-1
+- Update to 78.0.1 build1
+
+* Wed Jul 1 2020 Martin Stransky <stransky@redhat.com> - 78.0-2
+- Add 'Open the Profile Manager' desktop file entry
+
+* Mon Jun 29 2020 Jan Horak <jhorak@redhat.com> - 78.0-1
+- Update to 78.0 build2
+
+* Tue Jun 23 2020 Martin Stransky <stransky@redhat.com> - 77.0.1-3
+- Build with PGO/LTO again.
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-2
+- Update to 77.0.1 build1
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-1
+- Fixing pipewire patch
+- New upstream version (77.0.1)
+
+* Tue Jun 2 2020 Martin Stransky <stransky@redhat.com> - 77.0-2
+- Rebuild with updated langpacks (rhbz#1843028).
+
+* Fri May 29 2020 Martin Stransky <stransky@redhat.com> - 77.0-1
+- Updated to Firefox 77.0
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-7
+- Added fix for mozbz#1632456
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-6
+- Added fix for mozbz#1634213
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-5
+- Added fix for mozbz#1619882 - video flickering when va-api is used.
+
+* Thu May 21 2020 Jan Grulich <jgrulich@redhat.com> - 76.0.1-4
+- Add support for PipeWire 0.3
+
+* Wed May 20 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 76.0.1-3
+- Build aarch64 again so aarch64 users get updates
+
+* Wed May 13 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-2
+- Added extra va-api frames to vp8/9 decoder.
+
+* Fri May 8 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-1
+- Updated to 76.0.1
+
+* Thu May 7 2020 Martin Stransky <stransky@redhat.com> - 76.0-3
+- Disable ffvpx when va-api is enabled.
+
+* Tue May 05 2020 Jan Horak <jhorak@redhat.com> - 76.0-2
+- Don't use google safe browsing api key for the geolocation
+
+* Sun May 3 2020 Martin Stransky <stransky@redhat.com> - 76.0-1
+- Updated to 76.0
+
+* Thu Apr 23 2020 Martin Stransky <stransky@redhat.com> - 75.0-3
+- Added fix for mozilla bug #1527976 (browser D&D)
+
+* Tue Apr 14 2020 Jan Horak <jhorak@redhat.com> - 75.0-2
+- Removed gconf-2.0 build requirement
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 75.0-1
+- Updated to 75.0
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-3
+- Added fix for mozbz#1627469
+
+* Mon Apr 06 2020 Jan Horak <jhorak@redhat.com> - 74.0.1-2
+- Fixing pipewire patch
+
+* Sat Apr 4 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-1
+- Updated to latest upstream
+- Added fix for mozbz#1624745
+
+* Wed Apr 1 2020 Martin Stransky <stransky@redhat.com> - 74.0-14
+- Added fixes to gnome shell search provider
+
+* Tue Mar 31 2020 Jan Horak <jhorak@redhat.com> - 74.0-13
+- Allow addons sideload to fix missing langpacks issues
+
+* Thu Mar 19 2020 Martin Stransky <stransky@redhat.com> - 74.0-12
+- Added fix for rhbz#1814850 by Daniel Rusek
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-11
+- Added fix for mozbz#1623106
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-9
+- Added fix for mozbz#1623060
+
+* Tue Mar 17 2020 Jan Grulich <jgrulich@redhat.com> - 74-0-8
+- Add support for window sharing
+
+* Mon Mar 16 2020 Martin Stransky <stransky@redhat.com> - 74.0-7
+- Use D-Bus remote exclusively for both X11 and Wayland backends
+ when WAYLAND_DISPLAY is present.
+
+* Fri Mar 13 2020 Martin Stransky <stransky@redhat.com> - 74.0-6
+- Added fix for mozbz#1615098
+
+* Thu Mar 12 2020 Martin Stransky <stransky@redhat.com> - 74.0-5
+- Added fix for mozbz#1196777
+
+* Tue Mar 10 2020 Kalev Lember <klember@redhat.com> - 74.0-4
+- Remove unused libIDL build dep
+- Disabled arm due to build failures
+
+* Tue Mar 10 2020 Martin Stransky <stransky@redhat.com> - 74.0-3
+- Update to 74.0 Build 3
+
+* Mon Mar 09 2020 Martin Stransky <stransky@redhat.com> - 74.0-2
+- Update to 74.0 Build 2
+
+* Tue Mar 03 2020 Martin Stransky <stransky@redhat.com> - 74.0-1
+- Update to 74.0 Build 1
+- Added mozbz#1609538
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-4
+- Using pipewire-0.2 as buildrequire
+- Added armv7hl fixes by Gabriel Hojda
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-2
+- Fixed Bug 1804787 - Some .desktop menu entries unlocalized
+
+* Thu Feb 20 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-1
+- Update to 73.0.1
+
+* Tue Feb 11 2020 Jan Horak <jhorak@redhat.com> - 73.0-1
+- Update to 73.0 build3
+
+* Tue Feb 04 2020 Kalev Lember <klember@redhat.com> - 72.0.2-3
+- Fix various issues with appdata, making the validation pass again
+- Validate appdata during the build
+- Make sure the release tag in appdata is in sync with the package version
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 72.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Mon Jan 20 2020 Jan Horak <jhorak@redhat.com> - 72.0.2-1
+- Update to 72.0.2 build1
+
+* Wed Jan 15 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-2
+- Added fix for wrong cursor offset of popup windows and bumped required nss
+ version
+
+* Wed Jan 08 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-1
+- Update to 72.0.1 build1
+
+* Mon Jan 06 2020 Jan Horak <jhorak@redhat.com> - 72.0-2
+- Update to 72.0 build4
+
+* Fri Jan 03 2020 Jan Horak <jhorak@redhat.com> - 72.0-1
+- Update to 72.0 build3
+
+* Wed Dec 18 2019 Jan Horak <jhorak@redhat.com> - 71.0-17
+- Fix for wrong intl.accept_lang when using non en-us langpack
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-16
+- Build with asan
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-15
+- Enabled Mozilla crash reporter
+- Enabled PGO builds
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-14
+- Updated workaround for mzbz#1601707
+
+* Sat Dec 7 2019 Martin Stransky <stransky@redhat.com> - 71.0-13
+- Built with -fno-lifetime-dse
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-12
+- Clang test build, should fix extension breakage
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-11
+- Added workaround for:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1601707
+ http://gcc.gnu.org/PR92831
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-10
+- Remove appdata and ship metainfo only
+
+* Wed Dec 4 2019 Martin Stransky <stransky@redhat.com> - 71.0-9
+- Included kiosk mode workaround (mozbz#1594738)
+
+* Tue Dec 3 2019 Martin Stransky <stransky@redhat.com> - 71.0-8
+- Disabled PGO due to startup crash
+
+* Mon Dec 2 2019 Martin Stransky <stransky@redhat.com> - 71.0-7
+- Updated to 71.0 Build 5
+- Updated Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-6
+- Enable Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-5
+- Added fix for mozbz#1593408
+- Temporary disable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-2
+- Enable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-1
+- Updated to 71.0 Build 2
+
+* Tue Nov 19 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-5
+- Added fixes for missing popup and overflow widget glitches
+
+* Mon Nov 04 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-4
+- Added fix for non-scrollable popups
+
+* Fri Nov 1 2019 Martin Stransky <stransky@redhat.com> - 70.0.1-1
+- Updated to 70.0.1
+- Built with system-nss (reverted 70.0-2 change).
+
+* Thu Oct 31 2019 Martin Stransky <stransky@redhat.com> - 70.0-2
+- Switched to in-tree nss due to rhbz#1752303
+
+* Tue Oct 15 2019 Martin Stransky <stransky@redhat.com> - 70.0-1
+- Updated to 70.0
diff --git a/local-settings.js b/local-settings.js
new file mode 100644
index 0000000..eaecc05
--- /dev/null
+++ b/local-settings.js
@@ -0,0 +1,7 @@
+// Sets up the .cfg file.
+
+//Specifies the .cfg filename (path cannot be changed)
+pref("general.config.filename", "librewolf.cfg");
+
+//Allows .cfg file to be stored in plain text without obfuscation
+pref("general.config.obscure_value", 0);
diff --git a/mozilla-vpn-ad.patch b/mozilla-vpn-ad.patch
new file mode 100644
index 0000000..f5e2ce3
--- /dev/null
+++ b/mozilla-vpn-ad.patch
@@ -0,0 +1,30 @@
+diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
+index 32c9146..f645288 100644
+--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
++++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
+@@ -51,14 +51,14 @@
+ <div class="fake-caret"></div>
+ </button>
+ </div>
+- <div class="info">
++ <!--div class="info">
+ <h1 id="info-title"></h1>
+ <p id="info-body"></p>
+ <a id="private-browsing-myths"></a>
+- </div>
++ </div-->
+ </div>
+
+- <div class="promo">
++ <!--div class="promo">
+ <div class="promo-image-large">
+ <img src="" alt="" />
+ </div>
+@@ -72,6 +72,6 @@
+ </div>
+ </div>
+ </div>
+- </div>
++ </div-->
+ </body>
+ </html>
diff --git a/mozilla_dirs.patch b/mozilla_dirs.patch
new file mode 100644
index 0000000..e854faa
--- /dev/null
+++ b/mozilla_dirs.patch
@@ -0,0 +1,76 @@
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index 50a64a2..79d7d9c 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -303,16 +303,16 @@ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+ rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+ getter_AddRefs(localDir));
+ if (NS_SUCCEEDED(rv)) {
+- rv = localDir->AppendNative("Mozilla"_ns);
++ rv = localDir->AppendNative("LibreWolf"_ns);
+ }
+ # else
+ constexpr auto dirname =
+ # ifdef HAVE_USR_LIB64_DIR
+- "/usr/lib64/mozilla"_ns
++ "/usr/lib64/librewolf"_ns
+ # elif defined(__OpenBSD__) || defined(__FreeBSD__)
+- "/usr/local/lib/mozilla"_ns
++ "/usr/local/lib/librewolf"_ns
+ # else
+- "/usr/lib/mozilla"_ns
++ "/usr/lib/librewolf"_ns
+ # endif
+ ;
+ rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
+@@ -413,9 +413,9 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
+ rv = GetUserDataDirectoryHome(getter_AddRefs(localDir), false);
+ if (NS_SUCCEEDED(rv)) {
+ # if defined(XP_MACOSX)
+- rv = localDir->AppendNative("Mozilla"_ns);
++ rv = localDir->AppendNative("LibreWolf"_ns);
+ # else
+- rv = localDir->AppendNative(".mozilla"_ns);
++ rv = localDir->AppendNative(".librewolf"_ns);
+ # endif
+ }
+ if (NS_SUCCEEDED(rv)) {
+@@ -465,9 +465,9 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
+ else if (!strcmp(aProperty, XRE_SYS_SHARE_EXTENSION_PARENT_DIR)) {
+ # ifdef ENABLE_SYSTEM_EXTENSION_DIRS
+ # if defined(__OpenBSD__) || defined(__FreeBSD__)
+- static const char* const sysLExtDir = "/usr/local/share/mozilla/extensions";
++ static const char* const sysLExtDir = "/usr/local/share/librewolf/extensions";
+ # else
+- static const char* const sysLExtDir = "/usr/share/mozilla/extensions";
++ static const char* const sysLExtDir = "/usr/share/librewolf/extensions";
+ # endif
+ return NS_NewNativeLocalFile(nsDependentCString(sysLExtDir), false, aFile);
+ # else
+@@ -1276,7 +1276,7 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
+ nsDependentCString(hasVendor ? GetAppVendor() : GetAppName())))) {
+ return NS_ERROR_FAILURE;
+ }
+- } else if (NS_FAILED(localDir->AppendNative("Mozilla"_ns))) {
++ } else if (NS_FAILED(localDir->AppendNative("LibreWolf"_ns))) {
+ return NS_ERROR_FAILURE;
+ }
+
+@@ -1559,7 +1559,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
+
+ #if defined(XP_MACOSX) || defined(XP_WIN)
+
+- static const char* const sXR = "Mozilla";
++ static const char* const sXR = "LibreWolf";
+ rv = aFile->AppendNative(nsDependentCString(sXR));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+@@ -1569,7 +1569,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
+
+ #elif defined(XP_UNIX)
+
+- static const char* const sXR = ".mozilla";
++ static const char* const sXR = ".librewolf";
+ rv = aFile->AppendNative(nsDependentCString(sXR));
+ NS_ENSURE_SUCCESS(rv, rv);
+
diff --git a/policies.json b/policies.json
new file mode 100644
index 0000000..b742786
--- /dev/null
+++ b/policies.json
@@ -0,0 +1,95 @@
+{
+ "__COMMENT__ More Information": "https://github.com/mozilla/policy-templates/blob/master/README.md",
+ "policies": {
+ "AppUpdateURL": "https://localhost",
+ "DisableAppUpdate": true,
+ "OverrideFirstRunPage": "",
+ "OverridePostUpdatePage": "",
+ "DisableSystemAddonUpdate": true,
+ "DisableFirefoxAccounts": true,
+ "DisableProfileImport": false,
+ "DisableFirefoxStudies": true,
+ "DisableTelemetry": true,
+ "DisableFeedbackCommands": true,
+ "DisablePocket": true,
+ "DisableSetDesktopBackground": false,
+ "DisableDeveloperTools": false,
+ "DNSOverHTTPS": {
+ "Enabled": false,
+ "ProviderURL": "",
+ "Locked": false
+ },
+ "NoDefaultBookmarks": true,
+ "WebsiteFilter": {
+ "Block": [
+ "https://localhost/*"
+ ],
+ "Exceptions": [
+ "https://localhost/*"
+ ]
+ },
+ "Extensions": {
+ "Install": [
+ "https://addons.cdn.mozilla.net/user-media/addons/607454/ublock_origin-1.40.2-an+fx.xpi"
+ ],
+ "Uninstall": [
+ "google@search.mozilla.org",
+ "bing@search.mozilla.org",
+ "amazondotcom@search.mozilla.org",
+ "ebay@search.mozilla.org",
+ "twitter@search.mozilla.org"
+ ]
+ },
+ "SearchEngines": {
+ "PreventInstalls": false,
+ "Remove": [
+ "Google",
+ "Bing",
+ "Amazon.com",
+ "eBay",
+ "Twitter"
+ ],
+ "Default": "DuckDuckGo",
+ "Add": [
+ {
+ "Name": "DuckDuckGo Lite",
+ "Description": "Minimal, ad-free version of DuckDuckGo",
+ "Alias": "",
+ "Method": "POST",
+ "URLTemplate": "https://duckduckgo.com/lite/?q={searchTerms}",
+ "PostData": "q={searchTerms}",
+ "IconURL": "data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjRa3pRQcOP9tMLy/83q2f/m9uv//f7+//L0/P+qu+7/UHDj/TRa3pRVgP8GAAAAAAAAAAAAAAAAVYD/BjNZ372Jnuv/9/j9/8nT9v+D0pj/R71m/02+a/9Kr3z/XreM//f4/f+Jnuv/M1nfvVWA/wYAAAAAAAAAADRa3pSJnuv/4Ob6/1h25P+8yPT/ntyv/6zhuv+Fvrj/PpKY/0Cbjf9YduT/4Ob6/4me6/80Wt6UAAAAADVZ4StQcOP99/j9/1h25P8zWN7/5+z7////////////Z4Lm/zNY3v8zWd3/M1je/1h25P/3+P3/UHDj/TVZ4Ss0Wd+PrLvx/5ut7v8zWN7/Rmfh/////////////////0Jo4P8neuf/IY/s/yZ85/8yXN//m63u/6y78f80Wd+PM1nf1ert+/9ObuL/M1je/3CK5////////////9j4//8RyPv/J3vn/ytx5P8lg+n/KHjm/05u4v/p7fv/M1nf1Tpd4PP4+f3/M1je/zNY3v+bre7////////////X+P//JNL8/yDJ+v8Utvb/II/t/y9j4P8zWN7/+Pn9/zpd4PM6XeDz+Pn9/zNY3v8zWN7/w871///////////////////////k+v//T5zt/xyc7/8UtPX/L2Ph//j5/f86XeDzM1nf1ert+/9ObuL/M1je/9vi+f//////oXZf////////////oXZf/2N/5f8zWN7/M1je/05u4v/q7fv/M1nf1TRZ34+su/H/m63u/zNY3v/H0fX//////////////////////+js+/83W97/M1je/zNY3v+bre7/rLvx/zRZ3481WeErUHDj/ff4/f9YduT/X3zl//Hz/P////////////j5/f9yi+j/M1je/zNY3v9YduT/9/j9/1Bw4/01WeErAAAAADRa3pSJnuv/4Ob6/1h25P9MbOL/2N/4/73J9P9DZeD/M1je/zNY3v9YduT/4Ob6/4me6/80Wt6UAAAAAAAAAABVgP8GM1nfvYme6//3+P3/m63u/05u4v8zWN7/M1je/05u4v+bre7/9/j9/4me6/8zWd+9VYD/BgAAAAAAAAAAAAAAAFWA/wY0Wt6UUHDj/ay78f/p7fv/+Pn9//j5/f/p7fv/rLvx/1Bw4/00Wt6UVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAPAPAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAPAPAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWA/wY2Wt9HM1nelTRY3780WN7ZM1je8zNY3vM0WN7ZNFjfvzNZ3pU2Wt9HVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN+WNFne8TNY3v9ceuT/iJ7r/52v7/+ywPL/ssDy/52v7/+Inuv/XHrk/zNY3v80Wd7xM1jfljVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+vv+//a4Pj/2eD4/9zi+f/c4vn/2eD4/9rg+P/m6vv/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfxz9i4P+js/D/8fP8/6Cx7/+7x/P/5fbp/1zEd/+o4Lb/9vz4////////////3+T5/zVZ3v9Xed3/obPu//Hz/P+js/D/P2Hf/zNY38c1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN1njLjRZ3uNTcuP/4eb6/7PB8v9IaeH/M1je/9rg+f/H69D/Rrxl/0a8Zf9NtV//RrRa/063Yv9fpqf/QqWA/0a8Zf87gqv/SGnh/7TC8v/h5vr/U3Lj/zRZ3uMzW+MtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Pm/+/x/P+Emuv/M1je/zNY3v87Xt///P3+/7rmxv9GvGX/Rrxl/0azWv9GvGX/Rrxl/0a8ZP9GvGX/Rrxl/zyIo/8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAABJbf8HM1jfx1Ny4//v8fz/aoXm/zNY3v8zWN7/M1je/2N/5f//////tOTB/0a8Zf9HvWb/c8mH/1W+bv9IuWj/Qqp7/0a8Zf9GvGX/PIWo/zNY3v8zWN7/M1je/2qF5v/v8fz/U3Lj/zNY38dJbf8HAAAAAAAAAAAAAAAAAAAAADNY4II/YuD/4eb6/4Sa6/8zWN7/M1je/zNY3v8zWN7/j6Ps///////W8d3/pt+1/+X26v//////8/X9/zhc3v80Wdz/PIek/0a4av85d7j/M1je/zNY3v8zWN7/M1je/4Sa6//h5vr/P2Hf/zNY4IIAAAAAAAAAAAAAAAA1YN8YM1nf9KOz8P+0wvL/M1je/zNY3v8zWN7/M1je/zNY3v+6xvP///////////////////////////+zwfL/M1je/zNY3v8zWN7/NFzY/zNZ3f8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAADNY35ZLbOL/8fP8/0hp4f8zWN7/M1je/zNY3v8zWN7/M1je/+Xq+v///////////////////////////32U6v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/SGnh//Hz/P9LbOL/M1jflgAAAABVgP8GNFne8ai48f+hsu//M1je/zNY3v8zWN7/M1je/zNY3v9DZeD/////////////////////////////////V3bj/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/obLv/6i48f80Wd7xVYD/BjZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/2+J5/////////////////////////////////9RcOL/Lmfi/yKN7P8XrPP/EML5/w3K+/8Suvf/HZnu/y5n4v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HM1nelVx65P/j6Pr/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mavu////////////////////////////7/z//yK79v8K0v3/Fq/0/yKN7P8iiev/IY7s/xqh8P8Suff/Dcr7/y5o4v8zWN7/M1je/zNY3v/j6Pr/XHrk/zNZ3pU0WN+/iJ7r/6++8v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v/DzvX///////////////////////////9k4/7/CtL9/xK59/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6++8v+Inuv/NFjfvzRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+7x/P///////////////////////////2Xj/v8K0v3/C9D9/xmm8f8YqfP/Gafy/yKN7P8vZuH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mqzu/52v7/80WN7ZM1je87LA8v+Fm+v/M1je/zNY3v8zWN7/M1je/zNY3v9La+H/////////////////////////////////+P7//3Pm/v8P0/3/CtL9/wrS/f8K0v3/CtL9/wrR/f8VsvX/JYPp/zNb3v8zWN7/M1je/zNY3v+Fm+v/ssDy/zRZ3vIzWN7zssDy/4Wb6/8zWN7/M1je/zNY3v8zWN7/M1je/3SN6P////////////////////////////////////////////b+///T9///vPP//1q/9v8WrfT/DMv8/wrS/f8K0v3/DsX6/yl25v8zWN7/M1je/4Wb6/+ywPL/M1je8zRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/m63u////////////0LWn/7qTfv/////////////////////////////+/v//////s8Dy/zNY3v8zWt7/KXbm/x2b7v8bn/D/KnPl/zNY3v8zWN7/mqzu/52v7/80WN7ZNFjfv4me6/+vvvL/M1je/zNY3v8zWN7/M1je/zNY3v+zwPL///////////+sfWT/om5R//v59///////////////////////pHFV/8Cdiv+ruvH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+vvvL/iJ7r/zRY378zWd6VXHrk/+Po+v8zWN7/M1je/zNY3v8zWN7/M1je/7/K9P////////////z6+f/38u/////////////////////////////NsKH/4dDH/3uT6f8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+Po+v9ceuT/M1nelTZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/p7fw///////k1c3////////////////////////////////////////////3+f3/Q2Xg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HVYD/BjRZ3vGouPH/oLHv/zNY3v8zWN7/M1je/zNY3v92j+j//////+7l3//gz8b/+/j2///////////////////////p3db/2MK2/6mz5P8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6Gy7/+ouPH/NFne8VWA/wYAAAAAM1jflkts4v/x8/z/SGnh/zNY3v8zWN7/M1je/zNY3v/U3Pj////////////////////////////////////////////s7/z/RWfg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9IaeH/8fP8/0ts4v8zWN+WAAAAAAAAAAA1YN8YM1nf9KOz8P+zwfL/M1je/zNY3v8zWN7/M1je/0Fj4P/DzvX/////////////////////////////////8PP8/2WB5v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAAAAAAAAzWOCCP2Lg/+Hm+v+Emuv/M1je/zNY3v8zWN7/R2jh/0do4f97k+n/1dz4////////////7/L8/4Oa6/9CZOD/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+Fm+v/4eb6/z9i4P8zWOCCAAAAAAAAAAAAAAAAAAAAAElt/wczWN/HU3Lj/+/x/P9qheb/M1je/zNY3v+Xqe7/7vH8/////////////////87X9/9TcuP/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/aoXm/+/x/P9TcuP/M1jfx0lt/wcAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Lm/+/x/P+Emuv/M1je/2J+5f+puPH/rrzx/5Kl7f9PbuL/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdZ4y40Wd7jU3Lj/+Hm+v+0wvL/SGnh/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/0hp4f+0wvL/4eb6/1Ny4/80Wd7jM1vjLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN/HP2Lg/6Oz8P/x8/z/obLv/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/1Z04/+hsu//8fP8/6Oz8P8/Yd//M1jfxzVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+Po+v+vvvL/mqzu/4Wb6/+Fm+v/mqzu/6++8v/j6Pr/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfljRZ3vEzWN7/XHrk/4ie6/+dr+//ssDy/7LA8v+dr+//iJ7r/1x65P8zWN7/NFne8TNY35Y1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjZa30czWd6VNFjfvzRY3tkzWN7zM1je8zRY3tk0WN+/M1nelTZa30dVgP8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AA///AAD//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AAAB/AAAA/4AAAf/AAAP/8AAP//wAP/"
+ },
+ {
+ "Name": "SearXNG",
+ "Description": "A privacy-respecting, hackable metasearch engine",
+ "Alias": "",
+ "Method": "POST",
+ "URLTemplate": "https://searx.be/?q={searchTerms}",
+ "PostData": "q={searchTerms}&time_range=&language=en-US&category_general=on",
+ "IconURL": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InN2ZzgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkyIDkyIiBoZWlnaHQ9IjkybW0iIHdpZHRoPSI5Mm1tIj4KICA8ZGVmcyBpZD0iZGVmczIiLz4KICA8bWV0YWRhdGEgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiLz4KICAgICAgICA8ZGM6dGl0bGUvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDAuOTIxMzAzLC0xNy40MTY1MjYpIiBpZD0ibGF5ZXIxIj4KICAgIDxjaXJjbGUgcj0iMCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgY3k9IjkyIiBjeD0iNzUiIGlkPSJwYXRoMzcxMyIvPgogICAgPGNpcmNsZSByPSIzMCIgY3k9IjUzLjkwMjU1NyIgY3g9Ijc1LjkyMTMwMyIgaWQ9InBhdGg4MzQiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz4KICAgIDxwYXRoIGQ9Im0gNjcuNTE0ODQ5LDM3LjkxNTI0IGEgMTgsMTggMCAwIDEgMjEuMDUxNDc1LDMuMzEyNDA3IDE4LDE4IDAgMCAxIDMuMTM3MzEyLDIxLjA3ODI4MiIgaWQ9InBhdGg4NTIiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjU7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIvPgogICAgPHJlY3QgdHJhbnNmb3JtPSJyb3RhdGUoLTQ2LjIzNDcwOSkiIHJ5PSIxLjg2NjkxMDVlLTEzIiB5PSIxMjIuMDg5OTUiIHg9IjMuNzA2MzUyOSIgaGVpZ2h0PSIzOS45NjMzMDMiIHdpZHRoPSIxOC44NDYzMzEiIGlkPSJyZWN0OTEyIiBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6IzMwNTBmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6ODtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+CiAgPC9nPgo8L3N2Zz4="
+ },
+ {
+ "Name": "MetaGer",
+ "Description": "MetaGer: Privacy Protected Search & Find",
+ "Alias": "",
+ "Method": "GET",
+ "URLTemplate": "https://metager.org/meta/meta.ger3?eingabe={searchTerms}",
+ "IconURL": "data:image/x-icon;base64,AAABAAEAQEAAAAEACAAoFgAAFgAAACgAAABAAAAAgAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP4AAYD+AACA/wADgf4ABIH+AAWC/gAGgv4ACYT+AAuF/gAMhf4ADYb+AA6G/gAPh/4AEIf+ABGI/gATif4AFIn+ABWK/gAWiv4AF4v+ABmM/gAajP4AG43+AByN/gAejv4AIZD+ACSR/gAmkv4AJ5L+ACmU/gAqlP4ALJX+AC2W/gAulv4AMpj+ADSZ/gA5m/4AO5z+AD6e/gA/n/4AQJ/+AEKg/gBDof4ARKH+AEWi/gBGov4ASKP+AEyl/gBPpv4AU6j+AFWq/gBXq/4AWKv+AFut/gBcrf4AX6/+AGGw/gBksf4AZ7L+AGq0/gBvtv4Acbf+AHO4/gB0uf4Adrr+AHe6/gB4u/4Afr7+AIC//gCBwP4Ah8P+AIjD/gCJxP4AisT+AIvF/gCNxv4AkMf+AJHI/gCSyP4Ak8n+AJTJ/gCVyv4Alsr+AJjL/gCazP4AnM3+AJ7O/gCgz/4AodD+AKLQ/gCk0f4AptL+AKjT/gCq1P4ArdX+AK7W/gCv1v4AsNf+ALXZ/gC22v4At9r+ALjb/gC52/4AvN3+AMPg/gDE4f4AxuL+AMrk/gDM5f4Azub+AM/m/gDQ5/4A0ef+ANLo/gDU6f4A1ur+ANnr/gDb7P4A3+7+AOHv/gDk8f4A5fH+AOby/gDn8v4A6PP+AOnz/gDq9P4A6/T+AO31/gDv9v4A8/j+APX5/gD2+v4A9/r+APj7/gD5+/4A+vz+APv8/gD8/f4A/f3+AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnyMjIyMHgICAgICAgICAgICAgIDhYyMjIwSAgICAgICAgIEMlVxfoiEfXJeRSYDAgICAgICAgICAgICAgICAgJmjIyMjDQCAgICAgICAgICAgICAm2MjIyMKwICAgICAgIzeIyMjIyMjIyMjIyMgU8dAgICAgICAgICAgICAgICSoyMjIxGAgICAgICAgICAgICAgJXjIyMjD4CAgICAgJMjIyMjIyMjIyMjIyMjIyMhQUCAgICAgICAgICAgICAjaMjIyMYwICAgICAgICAgICAgICPYyMjIxYAgICAgJAjIyMjIyMjIyMjIyMjIyMjIwjAgICAgICAgICAgICAgIhjIyMjHkCAgICAjtoaGIIAgICAiqMjIyMbwICAgIWg4yMjIyMXCoOAQMPJWmMjIyMOwICAgICAgICAgICAgICBYeMjIyMEAICAgJtjIyMUgICAgIQjIyMjIYEAgICQ4yMjIyMOAICAgICAgJCjIyMjFcCAgICAgICAgICAgICAgJwjIyMjCkCAgIVjIyMjIwrAgICAnqMjIyMIAICAmqMjIyMWgICAgICAgICKoyMjIxzAgICAgICAgICAgICAgICWYyMjIw9AgICOYyMjIyMdwsCAgJljIyMjDUCAgJ9jIyMjCcCAgICAgICAgyLjIyMiwoCAgICAgICAgICAgICAj+MjIyMVwICAmCMjIyMjIxWAgICSYyMjIxJAgICh4yMjIwMAgICAgJkjIyMjIyMjIwpAgICAgICAgICAgICAgIsjIyMjG4CAgaCjIyMjIyMjC8CAjWMjIyMZQICAn+MjIyMBAICAgICRoyMjIyMjIyMQgICAgICAgICAgICAgICEoyMjIyGBAIsjIyMjGiMjIx6DgIgjIyMjHsCAgJzjIyMjBMCAgICAjOMjIyMjIyMjF8CAgICAgICAgICAgICAgJ8jIyMjB8CTIyMjHYNeIyMjFsCBIeMjIyMEgICXYyMjIwnAgICAgIcjIyMjIyMjIx4AgICAgICAgICAgICAgICZoyMjIw1AnWMjIxQAi6MjIyMMQJvjIyMjCsCAjqMjIyMRwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkqMjIyMSRuMjIyMLgICVIyMjH4RWYyMjIw+AgIXiIyMjH8KAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2jIyMjGY9jIyMggYCAgl2jIyMXj+MjIyMWAICAlmMjIyMUQICAgICAgICAgICAgICAgICAgICAgICAgICAgICIYyMjIx8Z4yMjGECAgICKIuMjIxZjIyMjG8CAgIchYyMjIw8AgICAgICAgICAgICAgICAgICAgICAgICAgICAgWHjIyMjImMjIw5AgICAgJOjIyMiYyMjIyGBAICAjyMjIyMjFMMAgICAgICAgIBMGwYAgICAgICAgICAgICAgICcIyMjIyMjIyLFAICAgICB3SMjIyMjIyMjCACAgICXYyMjIyMgUstFgYJGTFNeYyMMwICAgICAgICAgICAgICAlmMjIyMjIyMbAICAgICAgIkioyMjIyMjIw1AgICAgRdjIyMjIyMjIyMjIyMjIyMjE0CAgICAgICAgICAgICAgI/jIyMjIyMjEQCAgICAgICAkiMjIyMjIyMSQICAgICAEGFjIyMjIyMjIyMjIyMjIxrAgICAgICAgICAgICAgICLIyMjIyMjIwjAgICAgICAgIGcoyMjIyMjGUCAgICAgICGliHjIyMjIyMjIyMjIx/TAICAgICAgICAgICAgICAhKMjIyMjIx6AAICAgICAgICAiKIjIyMjIx7AgICAgICAgICDjdWa32FiIBzYEMmBAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ },
+ {
+ "Name": "StartPage",
+ "Description": "The world's most private search engine",
+ "Alias": "",
+ "Method": "GET",
+ "URLTemplate": "https://www.startpage.com/sp/search?query={searchTerms}",
+ "IconURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADb0lEQVRYhb2VXWgUVxiGv2gtWHrXBqExO2d2z5leWC80ilRKDTHunAPWhEi0gYY2mZkorYm7Z260oCiiFaQ3/RNqG/CvqAheKLSUUgpWqBdCKdbc+XMji4mhmk2MXTdvL9r4U+dsZtasH3x3877v852/IapUuzDHz6HF0/jU1/g10CgEIUq+xoMgxLAf4qIX4ksvj3c6O/FiRa8k1dyMF4IQm/0QV4MQiNkFP4+P+/rw0jOFewN4I9D4PUHwk61xrSePVVWF9+agAo2xqsMfdcnLwU8U7ufQHGhMzkL4dJe9EN3xwrdiga9xq4LZXV/jkK+xsTePZT05LPXzaPvvcBZMOj/EvQ/yWDwzgMZRo4nG0a4+vGrSduYxP9DYF4QoG/QXKoa/349M8O+1ippgb6wlJCIvh25fY8rgs6bS9LuiRJ7GT0SoiwtARORpfG5YhWNGURDifJSoR2NlknAiop5+1Psh7kdczYJR5IcYiRAMJw1/OJDGL1EDdYWGc7R9LyY/+QzlLwYxdfgkcPoscO5H/FYtwMQ9HBmfAMaKwOhfwPBt4GYBuH4ddqQAQBFP1+VqAQCcifADgAaT4HLExyXAfPXM1TSvvTNX6NiQH29bPzC2tr2/uLZ9y/i6joERAHMjJVeGrn79/Q/ncejb09i95yA2fbQHbeu3YsmKjTuTxltc9dqOwv+bOfJno6iRq2ykSKiJVCbbFDc8lWpNM0eORHlZXH5YSVtnO+oPA/mIlVEtMSZfYgt1I8rDFvJWfX3zy5UNMqqFCVU2rESZCXU8lZZvEdHj+1hncXcpE+qg7ci/I8MdBYu78f6KjLv7TSaPYOQ4E3KICfWnLdSdGb935KlY4dMTMaEGZzJN0kzI74hoTiIIW7g7bEeVZg/C/SoJABERNablcsbdC7MFYXEV+6/6JIjIvs2EGmRCFcz7rEYZd0+kuHyPOfKmESLjhlVBTJdlZe1GvibLHPkuE7LLymTVa7Z8nR7b44Xp1sXMUaOG8zBl8WzvM0HEAuXyTebIomElSpaQHTWHaOTStR113wAxmUq7rTWHSHF3AxPqQTSEHGMiu6LmECwjNzEhpwyP1O0UdxfVHoLLbRUeqks1ByAisoQ8YNiK0nMBICKyufzmqbdByHPPDYCI5jIu99lCDTNHFhl3TzQ0rH7lHy2g5RVQKFbLAAAAAElFTkSuQmCC"
+ }
+ ]
+ },
+ "SupportMenu": {
+ "Title": "LibreWolf Issue Tracker",
+ "URL": "https://gitlab.com/librewolf-community/settings/issues"
+ }
+ }
+} \ No newline at end of file
diff --git a/pref-naming.patch b/pref-naming.patch
new file mode 100644
index 0000000..941dc79
--- /dev/null
+++ b/pref-naming.patch
@@ -0,0 +1,57 @@
+--- a/browser/locales/en-US/browser/preferences/preferences.ftl
++++ b/browser/locales/en-US/browser/preferences/preferences.ftl
+@@ -140,7 +140,7 @@
+ .accesskey = D
+
+ startup-restore-windows-and-tabs =
+- .label = Open previous windows and tabs
++ .label = Open previous windows and tabs (requires enabling browsing history)
+ .accesskey = s
+
+ startup-restore-warn-on-quit =
+@@ -409,13 +409,13 @@
+ .label = Play DRM-controlled content
+ .accesskey = P
+
+-play-drm-content-learn-more = Learn more
++play-drm-content-learn-more = Why we disable it
+
+ update-application-title = { -brand-short-name } Updates
+
+ update-application-description = Keep { -brand-short-name } up to date for the best performance, stability, and security.
+
+-update-application-version = Version { $version } <a data-l10n-name="learn-more">What’s new</a>
++update-application-version = Version { $version } <a data-l10n-name="learn-more">Visit the repositories</a>
+
+ update-history =
+ .label = Show Update History…
+@@ -568,7 +568,7 @@
+ # "Firefox" should be treated as a brand and kept in English,
+ # while "Home" and "(Default)" can be localized.
+ home-mode-choice-default =
+- .label = Firefox Home (Default)
++ .label = Homepage (Default)
+
+ home-mode-choice-custom =
+ .label = Custom URLs…
+@@ -597,8 +597,8 @@
+
+ ## Home Section - Firefox Home Content Customization
+
+-home-prefs-content-header = Firefox Home Content
+-home-prefs-content-description = Choose what content you want on your Firefox Home screen.
++home-prefs-content-header = Homepage Content
++home-prefs-content-description = Choose what content you want on your Homepage screen.
+
+ home-prefs-search-header =
+ .label = Web Search
+@@ -650,7 +650,7 @@
+ home-prefs-snippets-header =
+ .label = Snippets
+
+-home-prefs-snippets-description-new = Tips and news from { -vendor-short-name } and { -brand-product-name }
++home-prefs-snippets-description-new = Tips and news from { -vendor-short-name }
+
+ home-prefs-sections-rows-option =
+ .label =
+
diff --git a/remove-branding-urlbar.patch b/remove-branding-urlbar.patch
new file mode 100644
index 0000000..e005458
--- /dev/null
+++ b/remove-branding-urlbar.patch
@@ -0,0 +1,11 @@
+--- a/browser/locales/en-US/browser/browser.ftl
++++ b/browser/locales/en-US/browser/browser.ftl
+@@ -543,7 +543,7 @@
+ # A label shown above the "Firefox Suggest" (bookmarks/history) group in the
+ # urlbar results.
+ urlbar-group-firefox-suggest =
+- .label = { -firefox-suggest-brand-name }
++ .label = Suggestions
+
+ # A label shown above the search suggestions group in the urlbar results. It
+ # should use title case.
diff --git a/remove-cfrprefs.patch b/remove-cfrprefs.patch
new file mode 100644
index 0000000..f01d860
--- /dev/null
+++ b/remove-cfrprefs.patch
@@ -0,0 +1,19 @@
+--- a/browser/components/preferences/main.inc.xhtml
++++ b/browser/components/preferences/main.inc.xhtml
+@@ -665,14 +665,14 @@
+ preference="media.hardwaremediakeys.enabled"/>
+ <label id="mediaControlLearnMore" class="learnMore" data-l10n-id="browsing-media-control-learn-more" is="text-link"/>
+ </hbox>
+- <hbox align="center" data-subcategory="cfraddons">
++ <hbox align="center" data-subcategory="cfraddons" hidden="true">
+ <checkbox id="cfrRecommendations"
+ class="tail-with-learn-more"
+ data-l10n-id="browsing-cfr-recommendations"
+ preference="browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons"/>
+ <label id="cfrLearnMore" class="learnMore" data-l10n-id="browsing-cfr-recommendations-learn-more" is="text-link"/>
+ </hbox>
+- <hbox align="center" data-subcategory="cfrfeatures">
++ <hbox align="center" data-subcategory="cfrfeatures" hidden="true">
+ <checkbox id="cfrRecommendations-features"
+ class="tail-with-learn-more"
+ data-l10n-id="browsing-cfr-features"
diff --git a/remove-internal-plugin-certs.patch b/remove-internal-plugin-certs.patch
new file mode 100644
index 0000000..72183e2
--- /dev/null
+++ b/remove-internal-plugin-certs.patch
@@ -0,0 +1,18 @@
+diff --git a/toolkit/mozapps/extensions/internal/XPIInstall.jsm b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+index 698cd67..5b899d9 100644
+--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
++++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+@@ -832,11 +832,11 @@ function getSignedStatus(aRv, aCert, aAddonID) {
+ }
+
+ if (aCert.organizationalUnit == "Mozilla Components") {
+- return AddonManager.SIGNEDSTATE_SYSTEM;
++ return AddonManager.SIGNEDSTATE_SIGNED;
+ }
+
+ if (aCert.organizationalUnit == "Mozilla Extensions") {
+- return AddonManager.SIGNEDSTATE_PRIVILEGED;
++ return AddonManager.SIGNEDSTATE_SIGNED;
+ }
+
+ return /preliminary/i.test(aCert.organizationalUnit)
diff --git a/remove-organization-policy-banner.patch b/remove-organization-policy-banner.patch
new file mode 100644
index 0000000..688c17c
--- /dev/null
+++ b/remove-organization-policy-banner.patch
@@ -0,0 +1,11 @@
+--- a/browser/components/preferences/preferences.js
++++ b/browser/components/preferences/preferences.js
+@@ -161,8 +161,6 @@
+ this.removeAttribute("keyboard-navigation");
+ });
+
+- maybeDisplayPoliciesNotice();
+-
+ window.addEventListener("hashchange", onHashChange);
+
+ gotoPref().then(() => {
diff --git a/remove-snippets-from-home.patch b/remove-snippets-from-home.patch
new file mode 100644
index 0000000..4bd88ca
--- /dev/null
+++ b/remove-snippets-from-home.patch
@@ -0,0 +1,22 @@
+--- a/browser/components/newtab/lib/AboutPreferences.jsm
++++ b/browser/components/newtab/lib/AboutPreferences.jsm
+@@ -54,18 +54,7 @@
+ },
+ ];
+
+-const PREFS_AFTER_SECTIONS = () => [
+- {
+- id: "snippets",
+- pref: {
+- feed: "feeds.snippets",
+- titleString: "home-prefs-snippets-header",
+- descString: "home-prefs-snippets-description-new",
+- },
+- icon: "chrome://global/skin/icons/info.svg",
+- eventSource: "SNIPPETS",
+- },
+-];
++const PREFS_AFTER_SECTIONS = () => [];
+
+ this.AboutPreferences = class AboutPreferences {
+ init() {
diff --git a/remove_addons.patch b/remove_addons.patch
new file mode 100644
index 0000000..3487f6d
--- /dev/null
+++ b/remove_addons.patch
@@ -0,0 +1,74 @@
+diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
+index 269dcb2..ed7c31d 100644
+--- a/browser/extensions/moz.build
++++ b/browser/extensions/moz.build
+@@ -5,11 +5,8 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ DIRS += [
+- "doh-rollout",
+ "formautofill",
+ "screenshots",
+- "webcompat",
+- "report-site-issue",
+ "pictureinpicture",
+ "proxy-failover",
+ "search-detection",
+diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
+index 496379c..dd6f359 100644
+--- a/browser/locales/Makefile.in
++++ b/browser/locales/Makefile.in
+@@ -61,7 +61,6 @@ l10n-%:
+ ifneq (,$(wildcard ../extensions/formautofill/locales))
+ @$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
+ endif
+- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
+@@ -82,7 +81,6 @@ endif
+ @$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
+ @$(MAKE) chrome AB_CD=$*
+ @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
+- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
+
+ package-win32-installer: $(SUBMAKEFILES)
+ $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
+diff --git a/browser/locales/filter.py b/browser/locales/filter.py
+index bb2e992..7d7768e 100644
+--- a/browser/locales/filter.py
++++ b/browser/locales/filter.py
+@@ -19,7 +19,6 @@
+ "devtools/startup",
+ "browser",
+ "browser/extensions/formautofill",
+- "browser/extensions/report-site-issue",
+ "extensions/spellcheck",
+ "other-licenses/branding/firefox",
+ "browser/branding/official",
+diff --git a/browser/locales/l10n.ini b/browser/locales/l10n.ini
+index f4cb7ca..4efac13 100644
+--- a/browser/locales/l10n.ini
++++ b/browser/locales/l10n.ini
+@@ -13,7 +13,6 @@
+ devtools/client
+ devtools/startup
+ browser/extensions/formautofill
+- browser/extensions/report-site-issue
+
+ [includes]
+ # non-central apps might want to use %(topsrcdir)s here, or other vars
+diff --git a/browser/locales/l10n.toml b/browser/locales/l10n.toml
+index b9b18fe..af7c583 100644
+--- a/browser/locales/l10n.toml
++++ b/browser/locales/l10n.toml
+@@ -132,10 +132,6 @@
+ l10n = "{l}browser/extensions/formautofill/**"
+
+ [[paths]]
+- reference = "browser/extensions/report-site-issue/locales/en-US/**"
+- l10n = "{l}browser/extensions/report-site-issue/**"
+-
+-[[paths]]
+ reference = "services/sync/locales/en-US/**"
+ l10n = "{l}services/sync/**"
diff --git a/sanitizing-description.patch b/sanitizing-description.patch
new file mode 100644
index 0000000..0909d54
--- /dev/null
+++ b/sanitizing-description.patch
@@ -0,0 +1,11 @@
+--- a/browser/locales/en-US/browser/sanitize.ftl
++++ b/browser/locales/en-US/browser/sanitize.ftl
+@@ -19,7 +19,7 @@
+ .title = Clear All History
+ .style = width: 34em
+
+-clear-data-settings-label = When closed, { -brand-short-name } should automatically clear all
++clear-data-settings-label = When closed, { -brand-short-name } should automatically clear all (this will bypass your cookie exceptions)
+
+ ## clear-time-duration-prefix is followed by a dropdown list, with
+ ## values localized using clear-time-duration-value-* messages.
diff --git a/search-config.json b/search-config.json
new file mode 100644
index 0000000..a8c7645
--- /dev/null
+++ b/search-config.json
@@ -0,0 +1,376 @@
+{
+ "data": [
+ {
+ "schema": 1619432100208,
+ "appliesTo": [
+ {
+ "included": {
+ "everywhere": true
+ }
+ }
+ ],
+ "webExtension": {
+ "id": "ddg@search.mozilla.org"
+ },
+ "id": "c0b26c0e-63e6-4235-b2ce-5f16b6a8bf87",
+ "last_modified": 1619450717295
+ },
+ {
+ "schema": 1613245306902,
+ "appliesTo": [
+ {
+ "included": {
+ "everywhere": true
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "af",
+ "an",
+ "ar",
+ "ast",
+ "az",
+ "bg",
+ "br",
+ "bs",
+ "cy",
+ "da",
+ "de",
+ "dsb",
+ "el",
+ "eo",
+ "et",
+ "eu",
+ "fa",
+ "fi",
+ "fy-NL",
+ "ga-IE",
+ "gd",
+ "gl",
+ "gn",
+ "he",
+ "hr",
+ "hsb",
+ "hu",
+ "ia",
+ "id",
+ "is",
+ "it",
+ "ka",
+ "kab",
+ "kk",
+ "km",
+ "kn",
+ "lij",
+ "lo",
+ "lt",
+ "ltg",
+ "lv",
+ "mk",
+ "mr",
+ "ms",
+ "my",
+ "nl",
+ "oc",
+ "pl",
+ "rm",
+ "ro",
+ "ru",
+ "si",
+ "sk",
+ "sl",
+ "sq",
+ "sr",
+ "sv-SE",
+ "ta",
+ "te",
+ "th",
+ "tl",
+ "tr",
+ "uk",
+ "ur",
+ "uz",
+ "vi",
+ "wo",
+ "zh-CN",
+ "zh-TW"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "$USER_LOCALE"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "be"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "be",
+ "be-tarask"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "bn",
+ "bn-BD",
+ "bn-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "bn"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ca",
+ "ca-valencia"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ca"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "cak",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "trs"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "es"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "cs"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "cz"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ff",
+ "fr",
+ "son"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "fr"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "gu-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "gu"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "hi-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "hi"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "hy-AM"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "hy"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ja-JP-macos",
+ "ja"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ja"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ko"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "kr"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "nb-NO"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "NO"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ne-NP"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ne"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "nn-NO"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "NN"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "pa-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pa"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "pt-BR",
+ "pt-PT"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pt"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "szl"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pl"
+ ]
+ }
+ },
+ {
+ "override": true,
+ "orderHint": 1000,
+ "application": {
+ "distributions": [
+ "MozillaOnline"
+ ]
+ }
+ }
+ ],
+ "webExtension": {
+ "id": "wikipedia@search.mozilla.org"
+ },
+ "id": "3f3beb1d-e32e-40a4-b6ed-56741803e1d8",
+ "last_modified": 1613587855064
+ }
+ ]
+}
diff --git a/sources b/sources
deleted file mode 100644
index 219d9b6..0000000
--- a/sources
+++ /dev/null
@@ -1,4 +0,0 @@
-SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
-SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
-SHA512 (firefox-langpacks-96.0.1-20220118.tar.xz) = 8726a5e62f0fe7f827d286c8ed4fa707e1d6614391107f63bb0a47322e63d086edd3790297e92421e09edb316f87b1fec3a78f3b52a87f702307f40dfc261277
-SHA512 (firefox-96.0.1.source.tar.xz) = c0d2ccf9ca930def63dcb9dc269e47f60fd4bbbdcbc01463df0c30e11109a543e310fb36f2334d17b90cb9c96b8dcdd97d0e2d6c589a779de5e4f197c052f9a5
diff --git a/stop-undesired-requests.patch b/stop-undesired-requests.patch
new file mode 100644
index 0000000..57bb966
--- /dev/null
+++ b/stop-undesired-requests.patch
@@ -0,0 +1,55 @@
+diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js
+index 92f0652aec..696a99f7ef 100644
+--- a/browser/components/newtab/data/content/activity-stream.bundle.js
++++ b/browser/components/newtab/data/content/activity-stream.bundle.js
+@@ -1841,7 +1841,7 @@ class ASRouterAdminInner extends react__WEBPACK_IMPORTED_MODULE_3___default.a.Pu
+ label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("span", null, "remote settings (", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("a", {
+ className: "providerUrl",
+ target: "_blank",
+- href: "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/nimbus-desktop-experiments/records",
++ href: "https://f.s.s.m.c.qjz9zk/v1/buckets/main/collections/nimbus-desktop-experiments/records",
+ rel: "noopener noreferrer"
+ }, "nimbus-desktop-experiments"), ")");
+ }
+diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
+index c7cde8917c..b398a22064 100644
+--- a/modules/libpref/init/all.js
++++ b/modules/libpref/init/all.js
+@@ -2243,7 +2243,7 @@ pref("security.cert_pinning.hpkp.enabled", false);
+ // Remote settings preferences
+ // Note: if you change this, make sure to also review security.onecrl.maximum_staleness_in_seconds
+ pref("services.settings.poll_interval", 86400); // 24H
+-pref("services.settings.server", "https://firefox.settings.services.mozilla.com/v1");
++pref("services.settings.server", "https://f.s.s.m.c.qjz9zk/v1");
+ pref("services.settings.default_bucket", "main");
+
+ // The percentage of clients who will report uptake telemetry as
+diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm
+index 66df850904..1538a2ff0d 100644
+--- a/services/settings/Utils.jsm
++++ b/services/settings/Utils.jsm
+@@ -64,7 +64,7 @@
+ !Cu.isInAutomation &&
+ !isXpcshell &&
+ isNotThunderbird
+- ? "https://firefox.settings.services.mozilla.com/v1"
++ ? "https://f.s.s.m.c.qjz9zk/v1"
+ : gServerURL;
+ },
+
+diff --git a/toolkit/components/search/SearchUtils.jsm b/toolkit/components/search/SearchUtils.jsm
+index 8a3c6acb84..7408b3fd2f 100644
+--- a/toolkit/components/search/SearchUtils.jsm
++++ b/toolkit/components/search/SearchUtils.jsm
+@@ -159,9 +159,9 @@ var SearchUtils = {
+
+ ENGINES_URLS: {
+ "prod-main":
+- "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/search-config/records",
++ "https://f.s.s.m.c.qjz9zk/v1/buckets/main/collections/search-config/records",
+ "prod-preview":
+- "https://firefox.settings.services.mozilla.com/v1/buckets/main-preview/collections/search-config/records",
++ "https://f.s.s.m.c.qjz9zk/v1/buckets/main-preview/collections/search-config/records",
+ "stage-main":
+ "https://settings.stage.mozaws.net/v1/buckets/main/collections/search-config/records",
+ "stage-preview":
diff --git a/urlbarprovider-interventions.patch b/urlbarprovider-interventions.patch
new file mode 100644
index 0000000..22448f1
--- /dev/null
+++ b/urlbarprovider-interventions.patch
@@ -0,0 +1,13 @@
+diff --git a/browser/components/urlbar/UrlbarProviderInterventions.jsm b/browser/components/urlbar/UrlbarProviderInterventions.jsm
+index e22886ce92..d46d8191f2 100644
+--- a/browser/components/urlbar/UrlbarProviderInterventions.jsm
++++ b/browser/components/urlbar/UrlbarProviderInterventions.jsm
+@@ -451,7 +451,7 @@ class ProviderInterventions extends UrlbarProvider {
+ ]),
+ });
+ for (let [id, phrases] of Object.entries(DOCUMENTS)) {
+- queryScorer.addDocument({ id, phrases });
++// queryScorer.addDocument({ id, phrases });
+ }
+ return queryScorer;
+ });
bgstack15