From ef440c290103f28862535f682ccb6992c9446dce Mon Sep 17 00:00:00 2001
From: GitHub Actions Bot <>
Date: Thu, 16 Nov 2023 11:45:18 +0000
Subject: [PATCH] Set GitHub Pages release version
---
.gitignore | 25 +-
dist/CHANGELOG.md | 454 +
dist/LICENSE-GPLv3.txt | 674 +
dist/README.md | 158 +
dist/backgroundscript.js | 40 +
dist/i18n/en.jsonp.js | 268 +
dist/i18n/es.jsonp.js | 268 +
dist/i18n/fr.jsonp.js | 268 +
dist/index.html | 12 +
dist/manifest.fx.v3.json | 47 +
dist/manifest.json | 47 +
dist/manifest.v2.json | 47 +
dist/manifest.webapp | 32 +
dist/package.json | 67 +
dist/service-worker.js | 440 +
dist/www/article.html | 8 +
dist/www/css/app.css | 367 +
dist/www/css/bootstrap.min.css | 7 +
dist/www/css/bootstrap.min.css.map | 1 +
dist/www/css/kiwixJS_invert.css | 33 +
dist/www/css/kiwixJS_mwInvert.css | 50 +
dist/www/css/transition.css | 59 +
dist/www/img/Icon_External_Link.png | Bin 0 -> 144 bytes
.../img/Kiwix_icon_transparent_600x600.png | Bin 0 -> 56811 bytes
dist/www/img/icons/kiwix-120.png | Bin 0 -> 7336 bytes
dist/www/img/icons/kiwix-128.png | Bin 0 -> 7940 bytes
dist/www/img/icons/kiwix-16.png | Bin 0 -> 583 bytes
dist/www/img/icons/kiwix-19.png | Bin 0 -> 713 bytes
dist/www/img/icons/kiwix-256.png | Bin 0 -> 21918 bytes
dist/www/img/icons/kiwix-32.png | Bin 0 -> 1282 bytes
dist/www/img/icons/kiwix-38.png | Bin 0 -> 1565 bytes
dist/www/img/icons/kiwix-48.png | Bin 0 -> 2156 bytes
dist/www/img/icons/kiwix-60.png | Bin 0 -> 2793 bytes
dist/www/img/icons/kiwix-64.png | Bin 0 -> 3036 bytes
dist/www/img/icons/kiwix-90.png | Bin 0 -> 4669 bytes
dist/www/img/icons/kiwix-splash-scalable.svg | 4 +
dist/www/img/icons/kiwix_scalable.svg | 6 +
dist/www/img/spinner.gif | Bin 0 -> 583 bytes
dist/www/index.html | 771 +
dist/www/js/bootstrap.bundle.min.js | 7 +
dist/www/js/bootstrap.bundle.min.js.map | 1 +
dist/www/js/bundle.js | 38004 ++++++++++++++++
dist/www/js/init.js | 275 +
dist/www/js/jquery.slim.min.js | 2 +
dist/www/js/jquery.slim.min.map | 1 +
dist/www/js/libzim-asm.js | 20 +
dist/www/js/libzim-wasm.js | 1 +
dist/www/js/libzim-wasm.wasm | Bin 0 -> 1222476 bytes
dist/www/js/webpHeroBundle_0.0.2.js | 1 +
dist/www/js/xzdec-wasm.wasm | Bin 0 -> 14745 bytes
dist/www/js/zstddec-wasm.wasm | Bin 0 -> 46776 bytes
dist/www/library.html | 14 +
dist/www/main.html | 8 +
.../@fortawesome/fontawesome-free/js/all.js | 4313 ++
.../bootstrap/dist/css/bootstrap.min.css | 7 +
.../bootstrap/dist/css/bootstrap.min.css.map | 1 +
.../bootstrap/dist/js/bootstrap.bundle.min.js | 7 +
.../dist/js/bootstrap.bundle.min.js.map | 1 +
node_modules/jquery/dist/jquery.slim.min.js | 2 +
node_modules/jquery/dist/jquery.slim.min.map | 1 +
scripts/rewrite_app_version_number.sh | 0
61 files changed, 46817 insertions(+), 2 deletions(-)
create mode 100644 dist/CHANGELOG.md
create mode 100644 dist/LICENSE-GPLv3.txt
create mode 100644 dist/README.md
create mode 100644 dist/backgroundscript.js
create mode 100644 dist/i18n/en.jsonp.js
create mode 100644 dist/i18n/es.jsonp.js
create mode 100644 dist/i18n/fr.jsonp.js
create mode 100644 dist/index.html
create mode 100644 dist/manifest.fx.v3.json
create mode 100644 dist/manifest.json
create mode 100644 dist/manifest.v2.json
create mode 100644 dist/manifest.webapp
create mode 100644 dist/package.json
create mode 100644 dist/service-worker.js
create mode 100644 dist/www/article.html
create mode 100644 dist/www/css/app.css
create mode 100644 dist/www/css/bootstrap.min.css
create mode 100644 dist/www/css/bootstrap.min.css.map
create mode 100644 dist/www/css/kiwixJS_invert.css
create mode 100644 dist/www/css/kiwixJS_mwInvert.css
create mode 100644 dist/www/css/transition.css
create mode 100644 dist/www/img/Icon_External_Link.png
create mode 100644 dist/www/img/Kiwix_icon_transparent_600x600.png
create mode 100644 dist/www/img/icons/kiwix-120.png
create mode 100644 dist/www/img/icons/kiwix-128.png
create mode 100644 dist/www/img/icons/kiwix-16.png
create mode 100644 dist/www/img/icons/kiwix-19.png
create mode 100644 dist/www/img/icons/kiwix-256.png
create mode 100644 dist/www/img/icons/kiwix-32.png
create mode 100644 dist/www/img/icons/kiwix-38.png
create mode 100644 dist/www/img/icons/kiwix-48.png
create mode 100644 dist/www/img/icons/kiwix-60.png
create mode 100644 dist/www/img/icons/kiwix-64.png
create mode 100644 dist/www/img/icons/kiwix-90.png
create mode 100644 dist/www/img/icons/kiwix-splash-scalable.svg
create mode 100644 dist/www/img/icons/kiwix_scalable.svg
create mode 100644 dist/www/img/spinner.gif
create mode 100644 dist/www/index.html
create mode 100644 dist/www/js/bootstrap.bundle.min.js
create mode 100644 dist/www/js/bootstrap.bundle.min.js.map
create mode 100644 dist/www/js/bundle.js
create mode 100644 dist/www/js/init.js
create mode 100644 dist/www/js/jquery.slim.min.js
create mode 100644 dist/www/js/jquery.slim.min.map
create mode 100644 dist/www/js/libzim-asm.js
create mode 100644 dist/www/js/libzim-wasm.js
create mode 100644 dist/www/js/libzim-wasm.wasm
create mode 100644 dist/www/js/webpHeroBundle_0.0.2.js
create mode 100644 dist/www/js/xzdec-wasm.wasm
create mode 100644 dist/www/js/zstddec-wasm.wasm
create mode 100644 dist/www/library.html
create mode 100644 dist/www/main.html
create mode 100644 node_modules/@fortawesome/fontawesome-free/js/all.js
create mode 100644 node_modules/bootstrap/dist/css/bootstrap.min.css
create mode 100644 node_modules/bootstrap/dist/css/bootstrap.min.css.map
create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.min.js
create mode 100644 node_modules/bootstrap/dist/js/bootstrap.bundle.min.js.map
create mode 100644 node_modules/jquery/dist/jquery.slim.min.js
create mode 100644 node_modules/jquery/dist/jquery.slim.min.map
mode change 100644 => 100755 scripts/rewrite_app_version_number.sh
diff --git a/.gitignore b/.gitignore
index 7db72b2ca..679ca8b98 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,12 +43,33 @@ build/config/buildinfo.properties
www-built
www-ghdeploy
-/node_modules/
+/node_modules/*
+!/node_modules/@fortawesome
+/node_modules/@fortawesome/*
+!/node_modules/@fortawesome/fontawesome-free
+/node_modules/@fortawesome/fontawesome-free/*
+!/node_modules/@fortawesome/fontawesome-free/js
+/node_modules/@fortawesome/fontawesome-free/js/*
+!/node_modules/@fortawesome/fontawesome-free/js/all.js
+!/node_modules/bootstrap
+/node_modules/bootstrap/*
+!/node_modules/bootstrap/dist
+/node_modules/bootstrap/dist/*
+!/node_modules/bootstrap/dist/css
+/node_modules/bootstrap/dist/css/*
+!/node_modules/bootstrap/dist/css/bootstrap.min.*
+!/node_modules/bootstrap/dist/js
+/node_modules/bootstrap/dist/js/*
+!/node_modules/bootstrap/dist/js/bootstrap.bundle.min.*
+!/node_modules/jquery
+/node_modules/jquery/*
+!/node_modules/jquery/dist
+/node_modules/jquery/dist/*
+!/node_modules/jquery/dist/jquery.slim.min.*
/tmp/
/scripts/kiwix-*.pem
/scripts/set_secret_environment_variables.sh
/build/
-/dist/
/scripts/travisci_builder_id_key
/scripts/ssh_key
/scripts/secret_files.tar.gz
diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md
new file mode 100644
index 000000000..34a646fdc
--- /dev/null
+++ b/dist/CHANGELOG.md
@@ -0,0 +1,454 @@
+# Changelog of Kiwix JS
+
+Please note that this application has changed its name over time.
+It was first called "Evopedia" (and was using the file format of Evopedia).
+Then it was renamed to "Kiwix HTML5" (and used the ZIM file format). Finally it was renamed "Kiwix JS".
+
+## In-progress changelog for Kiwix JS v3.11.1
+
+* BUGFIX: Restored ability to scroll the search results with touch or mouse
+
+## Kiwix JS v3.11.0
+
+Released on *2023-11-12*
+
+* FEATURE: Integration of in-app ZIM Download Library based on library.kiwix.org
+* FEATURE: Fallback to basic ZIM library for browsers that don't support library.kiwix.org
+* FEATURE: Remember picked files and folders between app launches with File System Access API
+* FEATURE: Slide away header and footer when scrolling an article, restored when scrolling up
+* FEATURE: On non-scrollable pages use Ctrl/Cmd + UpArrow/DownArrow, long swipe or mousewheel/touchpad scroll to toggle header/footer
+* ENHANCEMENT: Active content warning now fades out (auto-dismisses) when user starts scrolling
+* UPDATE: Turn off auto-focus of search bar on landing pages (option added to Home key setting)
+* UPDATE: Launch spinner as soon as possible and make it more informative
+* FIX: Added sanity checks to prevent runaway case-insensitive title searches
+* FIX: Active content warning now correctly detects new Kolibri-based archives
+* FIX: Translated some untranslated UI elements for Firefox OS
+* FIX: File/folder and library buttons now work with keyboard (tab to them, and space bar or enter to activate)
+* CLEANUP: Transition animations code cleaned up and animations now off by default
+* REGRESSION: ACtive content warning dismissed on changing tab
+* DEV: Build both MV2 and MV3 packages for Mozilla extension
+* DEV: Add facility to extract and set ZIM metadata (also displayed in console.debug)
+* DEV: Ensure all built packages contain i18n files
+* DEV: In the extension, completely exit local code when a success message is received from PWA
+* DEV: Dependencies for babel-core updated and other vulnerabilities fixed
+
+## Kiwix JS v3.10.1 (3.10.0)
+
+Note: this release was originally numbered 3.10.0, but due to a publishing issue with the Mozilla extension
+store, it had to be re-issued as 3.10.1.
+
+Released on *2023-09-10*
+
+* FEATURE: Full internationalization of the app in Spanish and French (more languages to follow)
+* UPDATE: Improved availability of non-store Chromium extension files and installation instructions
+* UPDATE: Supported platform information in README
+* UPDATE: Documentation updates throughout app
+* FIX: Universal file picking in latest Chromium browsers for Android
+* FIX: Failure to show active content warning for PhET ZIMs
+* FIX: Instabilities in End-to-End tests
+* DEV: Added End-to-End tests with Selenium and Mocha on GitHub Actions and BrowserStack
+* DEV: Updated Unit tests to use TestCafé
+* DEV: Move to modern ES6 bundling system with rollup.js and Vite development server
+* DEV: Conversion of JQuery `.on` events to vanilla JS
+* DEV: Add documentation for TESTS and adding dependencies for the bundling system
+* DEV: Moved app's configuration code to top-level `init.js` outside of bundling system
+
+## Kiwix JS v3.9.0
+
+Released on *2023-06-16*
+
+* ENHANCEMENT: Enabled full dynamic content in the Chromium extension via the PWA workaround
+* ENHANCEMENT: Migrate to Manifest Version 3 for the Chromium browser extension
+* ENHANCEMENT: Added a Promise queue to prevent overlapping dialogue boxes
+* UPDATE: In-app documentation updated to reflect latest practices
+* UPDATE: JQuery updated to v3.7.0
+* UPDATE: PWA server URL updated to https://browser-extension.kiwix.org
+* FIX: Restored dialogue box animations lost when JQuery was removed from the dialogue box code
+* FIX: Increase the number of download types recognized by the JQuery mode code
+* BUGFIX: Removed use of `Promise.finally()` incompatible with older browsers
+* BUGFIX: Fixed infinite loop with the Bypass AppCache option when returning from PWA to local extension code
+* CLEANUP: Added an ESLint configuration and dev dependency
+* CLEANUP: Fixed style issues identified by ESLint
+* DEV: Added a warning colour to Configuration when the appCache is disabled
+* DEV: Compile xzdec and zstddec as ES6 modules (for future use)
+
+## Kiwix JS v3.8.0
+
+This version incorporates an interim version 3.7.2 that was only published to the moz-extension PWA
+
+Released on *2023-04-23*
+
+* NEW: Expert/troubleshooting setting to disable drag-and-drop
+* SECURITY: Add sandbox to iframe to prevent third-party content and top-level navigation
+* SECURITY: Apply a CSP for the app as a whole (via meta http-equiv)
+* SECURITY: Apply a CSP for iframe contents in SW mode (via response headers)
+* UPDATE: API status panel now displays the PWA origin
+* UPDATE: The PWA version now notifies more reliably that an update is available
+* UPDATE: JavaScript libzim updated to v0.2
+* CLEANUP: Removed usage of jQuery in Bootstrap modals
+* DEV: CI now uses the latest GitHub workflow actions
+* DEV: Script provided (`npm run serve`) to launch local http-server for development and testing
+* FIX: Full-text search results were not properly cancelled by user selecting a title search result
+* FIX: Fall back to using MIME type to determine type of document being downloaded from the ZIM
+* FIX: Broken epub downloads in IE11
+
+## Kiwix JS v3.7.0
+
+Released on *2023-01-04*
+
+* FEATURE: Full-text search is now available in modern Firefox and Chromium if your ZIM archive has an ft index
+* NEW: The API panel in Configuration now informs you if full-text searching is available for your ZIM and platform
+* NEW: A new ZIM metadata property added in backend to show whether the loaded archive has an ft index
+* NEW: Added code to initialize the new javascript-libzim W/ASM if needed
+* UPDATE: Documentation updated to reflect the full-text searching capability
+* UPDATE: Renamed the GitHub Repository 'master' branch to 'main'
+* UPDATE: Changed some hard-coded values in build script to dynamic
+* UPDATE: Provide a Workflow dispatch option to set the build version number
+* UPDATE: Release packages that do not need to be signed are now automatically uploaded to the release server
+* CLEANUP: Many deprecated JQuery statements have been converted to native DOM equivalents, speeding up code
+* CLEANUP: Removed most usage of .innerHTML in the code
+* FIX: Tweaks to Wikimedia dark theme for greater compatibility with LaTeX images
+
+## Kiwix JS v3.6.0
+
+Released on *2022-12-11*
+
+* FEATURE: ServiceWorker Mode is now the default, and compatible clients upgrade automatically to this mode
+* FEATURE: On first run after update, the user is informed of the ServiceWorker Mode upgrade status (upgraded or incompatible)
+* NEW: A warning (with suggestions) is provided if user opens an incompatible Zimit (warc2zim) archive type
+* COMPATIBILITY: Minimum Firefox version has been raised to >=52, due to lack of full Extension APIs in earlier versions
+* UPDATE: Detection of active content updated for compatibility with more no-namespace ZIM archives
+* UPDATE: Nightly packages on the download server now include the date in their filenames
+* FIX: Kiwix icon now has an outline so that it is visible against dark OS backgrounds
+
+## Kiwix JS v3.5.0
+
+Released on *2022-08-05*
+
+* FEATURE: The Enter key is now handled in Bootstrap dialogue boxes, triggering the default action
+* FIX: Switch to ServiceWorker mode via PWA workaround was broken due to a behaviour change in Firefox 103
+* FIX: Video seeking in ServiceWorker mode was not always working in some browser extensions
+* FIX: In ServiceWorker mode, open external links in new tabs (instead of inside the iframe, which could fail), and warn the user
+* FIX: Directory Entries were wrongly assumed to be no larger than 2048 bytes (this could lead to some infinite loop, with some very specific ZIM files)
+* UPDATE: Update logo on Firefox and Windows stores
+
+## Kiwix JS v3.4.0
+
+Released on *2022-04-10*
+
+* FEATURE: Provide automatic dark mode switching (based on the underlying OS theme) in browsers supporting theme detection
+* FEATURE: Use bootstrap modal for alert and confirm dialogue boxes instead of native browser dialogues
+* WORKAROUND: For WebP image conversion in older browsers that implement some specific canvas anti-fingerprinting techniques, like IceCat 60.7
+* FIX: Partially remove dependency of backend on the User Interface
+* FIX: Provide an alert if user selects random button when no ZIM is loaded
+* FIX: Nightly builds are now uploaded to a new server (with sftp instead of ssh)
+* FIX: Deploy PWA image on a k8s cluster
+* FIX: PWA images are now uploaded to ghcr.io instead of Docker Hub. When a new image is uploaded, we also restart the pod to make it use the latest image
+* UPDATE: Routine updates to dependencies: Karma, node-fetch, follow-redirects, minimist
+
+## Kiwix JS v3.3.1
+
+Released on *2022-02-12*
+
+* NOTICE: This is a bugfix release to fix critical errors with the Ubuntu Touch app. For main changelog, see v3.3.0 below.
+* FIX: Improve packaging for the Ubuntu Touch app
+* FIX: Provide a platform-compliant hook name for the Ubuntu Touch app (note that settings may be lost when upgrading to this version)
+* BUGFIX: Correct the handling of version numbers in GitHub publishing workflow
+* BUGFIX: Correct race condition preventing initialization of decompressors in some contexts (e.g. file:// protocol)
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/28?closed=1
+
+## Kiwix JS v3.3.0
+
+Released on *2022-02-06*
+
+* FEATURE: Provided a workaround to enable Service Worker mode in Firefox extensions (via a PWA)
+* NEW: App now defaults to Service Worker mode if accessed directly as a PWA (does not apply to browser extensions)
+* NEW: Provided methods for resetting the app and bypassing the appCache from the UI
+* NEW: Support for non-http URLs in img and link tags (e.g. data: javascript:) in JQuery mode
+* NEW: Added helpful tooltips to icons and settings in the app
+* NEW: Provided Code of Conduct and procedure for reporting bugs, for contributors (repository)
+* NEW: Provided contributing guidelines and information for future developers (repository)
+* FIX: Added missing 'controls' property to media containers in jQuery mode
+* FIX: Scrolling to anchor targets in JQuery mode
+* FIX: Caching of ZIM assets now includes any required query string in SW mode
+* FIX: Any favicon declared by the ZIM is now extracted and attached in JQuery mode
+* BUGFIX: Corrected the theme selection box height
+* BUGFIX: Aligned the search bar with the search button
+* BUGFIX: Disabled dragging of some UI elements
+* BUGFIX: Incorrect processing of titles with question marks or hashes prevented display of some articles
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/26?closed=1
+
+## Kiwix JS v3.2.0
+
+Released on *2021-08-22*
+
+* NEW: Support latest format of ZIM archives (with no namespace)
+* NEW: Optimization of title search by eliminating redundancies
+* NEW: Support new format of title listings (v1) in no-namespace ZIM archives
+* NEW: 'Home' key can now be used to focus the search field
+* NEW: Use native Promises (or modern polyfill where required) instead of Q, improving performance in modern browsers and IE11
+* NEW: Use fast binary WASM decoders with fallback to ASM if necessary
+* UPDATE: Clearer and more extensive documentation for end users in About
+* UPDATE: Unit testing updated to latest QUnit, and use Karma instead of Nightwatch
+* UPDATE: Replace Travis by GitHub Actions for continuous integration
+* UPDATE: Added helper scripts and instructions for recompiling decompressors with Docker
+* BUGFIX: Issue with calculation for selection of random articles
+* BUGFIX: Incorrect syntax in usage of classList method that caused an exception in older browsers with rare ZIM types
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/25?closed=1
+
+## Kiwix JS v3.1.0
+
+Released on *2020-12-12*
+
+* NEW: Low-level block cache significantly improves binary search speed, and can speed up resource loading in most browsers
+* NEW: Archives with WebP-encoded images are now decoded in legacy browsers via a polyfill
+* UPDATE: Images are now extracted sequentially in jQuery mode from the top of the DOM
+* BUGFIX: Running binary searches are now cancelled completely if user enters new search term or navigates away
+* BUGFIX: Active content warning was erroneously showing on some ZSTD WikiMedia landing pages in jQuery mode
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/24?closed=1
+
+## Kiwix JS v3.0.0
+
+Released on *2020-10-04*
+
+* NEW: Add support for reading ZIM archives compressed with the zstandard compression algorithm
+* UPDATE: Make Privacy Policy publicly accessible
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/23?closed=1
+
+## Kiwix JS v2.8.0
+
+Released on *2020-07-11*
+
+* NEW: Intelligently select the best Storage API for storing settings between sessions (`cookie` or `localStorage`)
+* NEW: Display title search results progressively instead of waiting for search to complete before displaying them
+* NEW: User can change depth of title search from Configuration
+* UPDATE: Better handling of case in title search, returning more accurate search results
+* UPDATE: Use `const` to declare constants, enabling better app memory management
+* UPDATE: Use `SameSite=Strict` for any residual cookie usage to conform to new security standards
+* BUGFIX: Major blocking bug causing high memory usage and slow load times when reading MIME type table of recent ZIM archives
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/22?closed=1
+
+## Kiwix JS v2.7.0
+
+Released on *2020-03-29*
+
+* NEW: Selectable dark mode for app UI and for articles (does not work on IE11)
+* NEW: Optional transition between app pages
+* NEW: Native asset caching in Service Worker mode - considerably speeds up article load times in some contexts
+* UPDATE: Privacy Policy
+* UPDATE: Minor changes to Kiwix icon
+* UPDATE: Bootstrap updated to v4
+* UPDATE: Q Promise library updated to v1.5.1
+* UPDATE: Various code simplifications and cleanup
+* BUGFIX: Support details-summary tags to ensure all article subheadings are open in jQuery mode
+* BUGFIX: Broken display when search results have special characters
+* BUGFIX: Display of random article fragments when using back/forward buttons quickly
+* BUGFIX: Several UI bugs (search results disappearing, redundant scroll bar)
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/21?closed=1
+
+## Kiwix JS v2.6.0
+
+Released on *2019-07-20*
+
+* NEW: Support for imagemaps (area tags) in jQuery mode, like for maps in Wikivoyage
+* NEW: Enable keyboard selection in search results
+* NEW: Drag and drop support of ZIM files (on desktop)
+* NEW: Support download of epub files (for Gutenberg ZIM files) and some other types of downloads
+* NEW: Generic handling of MIME Types, instead of the previously hard-coded ones
+* NEW: Add explanations and detect when there are CORS issues when running Kiwix JS through file://
+* UPDATE: Upgrade the underlying Ubuntu Touch platform to Xenial
+* UPDATE: Improve the automated UI tests with a more complete scenario
+* UPDATE: Simplify the code by removing the base tag
+* BUGFIX: Fix for some cache issues with Chromium extension in ServiceWorker mode, that were mixing content from different ZIM files
+* BUGFIX: Some fixes for filenames with question marks, hyperlinks with hashtags, articles with no title, and articles with special characters in their URL
+* BUGFIX: Fix for articles with a slash in their title in ServiceWorker mode (at least for StackOverflow ZIM files). Note that some Wikivoyage ZIM files (of 2019-06) had incorrect links on their homepage, and are not working with this fix. This has been fixed in 2019-07 ZIM files (see https://github.com/openzim/mwoffliner/issues/726).
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/20?closed=1
+
+## Kiwix JS v2.5.0
+
+Released on *2019-01-16*
+
+* NEW: Support for javascript content inside the ZIM file, only in ServiceWorker mode. Handle noscript tags in jQuery mode, and display a warning when some unhandled javascript is detected
+* NEW: Preliminary support of video/audio content (including subtitles): these content types are now supported. You can read them for example in TED/TEDx, dirtybiology, oer4schools, etc. BUT the main page of these ZIM files needs javascript to work properly, which is only enabled in ServiceWorker mode. In jQuery mode, the user needs to reach the pages through a search
+* UPDATE: In the UI, replace the spinner by a more modern one
+* BUGFIX: Some technical fixes: footnotes in Wikimedia ZIM files (and, more generally, anchors in hyperlinks), incomplete searches in some specific ZIM files (PhET and TED), compatibility with URLs that contain an apostrophe, remove debug logs in ServiceWorker mode
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/19?closed=1
+
+## Kiwix JS v2.4.0
+
+Released on *2018-09-22*
+
+* UPDATE: Performance improvement on decompression of content (now twice as fast)
+* BUGFIX: Stability improvement for the ServiceWorker mode
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/16?closed=1
+
+## Kiwix JS v2.3.1
+
+Released on *2018-09-08*
+
+* NEW: Add favicon
+* BUGFIX: Fix excessive memory consumption
+* BUGFIX: Fix SVG file handling
+
+## Kiwix JS v2.3.0
+
+Released on *2018-06-04*
+
+* NEW: Add a cache on CSS stylesheets to improve performance in jQuery mode
+* UPDATE: Change the technical way to display articles, so that all CSS styles can be loaded, and to avoid other technical issues
+* UPDATE: Make the content visible only when CSS styles are read, to avoid repaints that can be very slow
+* BUGFIX: Fix redirections in ServiceWorker mode in ZIM files like StackExchange, and make the ServiceWorker handle all the articles (including the main one, and the first displayed after a search or random search)
+* BUGFIX: Fix links with an anchor in the URL
+* BUGFIX: In recent Wikipedia and other Wikimedia ZIM files, open all the sections when using a small screen (mobile stylesheet), so that the content remains readable (it only works in jQuery mode, this should be fixed in ServiceWorker mode in next version)
+* BUGFIX: Fix CSS UTF-8 encoding
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/18?closed=1
+
+## Kiwix JS v2.2.0
+
+Released on *2018-01-07*
+
+* NEW: Support for StackExchange ZIM files (and maybe for some other ZIM files with a structure different than the Mediawiki-based ZIM files).
+* NEW: Make geo: and tel: links work.
+* NEW: Ubuntu Touch support.
+* UPDATE: Rename the project to Kiwix JS instead of Kiwix HTML5.
+* UPDATE: Compatibility with split English Wikipedia ZIM files (which now have more than 26 files).
+* UPDATE: Slightly improved memory handling of content decompression.
+* UPDATE: Library updates (jQuery, Bootstrap, requireJS).
+* UPDATE: Improved continuous integration (automated testing on several browsers).
+* UPDATE: Some code refactoring/cleaning on the way we handle the jQuery mode.
+* BUGFIX: Avoid unnecessary 404 errors on images.
+* BUGFIX: Minor UI enhancements and fixes.
+
+Detailed changelog : https://github.com/kiwix/kiwix-js/milestone/6?closed=1
+
+
+## Kiwix-html5 v2.1.0
+
+Released on *2017-06-05*
+
+Add more user info on which ZIM files are compatible.
+
+Fix for back/forward buttons in browsing history.
+
+Drop some legacy code (Evopedia file format compatibility, uncomplete Cordova/Phonegap port).
+
+Refactoring the code to make it more easily readable for contributors.
+
+Fix for unit tests on Chrome.
+
+Enhancements on nightly builds and automatic generation of packages for public releases.
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/15?closed=1
+
+## Kiwix-html5 v2.0.0
+
+Released on *2017-04-08*
+
+This version targets browser extensions (Firefox and Chrome), even if still compatible with Firefox OS.
+
+It also runs the unit tests and some UI tests on Travis.
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/14?closed=1
+
+## Kiwix-html5 v2.0-beta
+
+Released on *2016-06-26*
+
+This is the first version of the HTML5 version of Kiwix, with Firefox OS as the main target.
+
+This version adds ZIM file format support and integrates it into the Kiwix project. Evopedia is discontinued but this app is still compatible with its archive format.
+
+This version has been submitted on the Firefox Marketplace, but was never reviewed by Mozilla and never distributed.
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/12?closed=1
+
+## Evopedia-html5 v1.1.4
+
+Released on *2015-01-29*
+
+Fix for wiktionary archives, where links between articles were not working
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/2?closed=1
+
+## Evopedia-html5 v1.1.3
+
+Released on *2015-01-29*
+
+Small bugfix for Android devices.
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/10?closed=1
+
+## Evopedia-html5 v1.1.2
+
+Released on *2015-01-28*
+
+Documentation update about the current status of Android compatibility
++ very minor updates
+
+Detailed changelog : https://github.com/kiwix/kiwix-js/milestone/9?closed=1
+
+## Evopedia-html5 v1.1.1
+
+Released on *2014-08-11*
+
+Solve an issue with articles containing a quote, and makes it compatible with Flatfish tablets.
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/8?closed=1
+
+## Evopedia-html5 v1.1.0
+
+Released on *2014-04-12*
+
+This version includes some refactoring of the code, and a new feature using the geolocation of the device (to find articles around this location).
+The access to the SD-card has been put in an abstraction layer, to prepare for an Apache Cordova port (this port is not finished yet).
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/2?closed=1
+
+## Evopedia-html5 v1.0.3
+
+Released on *2013-12-31*
+
+Add a warning about the size of text on the Geeksphone Peak device, when using Firefox OS <1.1
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/7?closed=1
+
+## Evopedia-html5 v1.0.2
+
+Released on *2013-10-06*
+
+Fix compatibility with Firefox OS >=1.1, due to changed in DeviceStorage API
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/5?closed=1
+
+## Evopedia-html5 v1.0.1
+
+Released on *2013-08-25*
+
+Minor bugfix before submitting to the Marketplace
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/4?closed=1
+
+## Evopedia-html5 v1.0.0
+
+Released on *2013-08-23*
+
+First public version, targeting Firefox OS and deployed on the Firefox Marketplace
+
+Detailed changelog: https://github.com/kiwix/kiwix-js/milestone/1?closed=1
+
+## Initial work
+
+The idea of porting Evopedia in javascript emerged in November 2012.
+
+Some work has started on this in December 2012.
diff --git a/dist/LICENSE-GPLv3.txt b/dist/LICENSE-GPLv3.txt
new file mode 100644
index 000000000..94a9ed024
--- /dev/null
+++ b/dist/LICENSE-GPLv3.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/dist/README.md b/dist/README.md
new file mode 100644
index 000000000..9f8afd30b
--- /dev/null
+++ b/dist/README.md
@@ -0,0 +1,158 @@
+# Kiwix JS
+
+Kiwix is an offline browser for Wikipedia, Stackexchange, Project Gutenberg, and other Web resources packaged as highly compressed ZIM
+archives. For full information about the open-source Kiwix project, see our main Web site: https://www.kiwix.org/.
+
+Kiwix JS is an official HTML5/Javascript implementation of the Kiwix software, principally targeting browser extensions or add-ons. You
+can get the extension, completely free, from the Mozilla, Chrome and Edge extension stores (see [Store links](#officially-supported-platforms) below).
+There is also a version, primarily intended for use within extensions, implemented as an offline-first Progressive Web App (PWA)
+at https://browser-extension.kiwix.org/current/. For the dedicated, fully featured PWA based on Kiwix JS, please see https://pwa.kiwix.org.
+
+To use Kiwix JS, you will need to obtain, completely free, a content archive (see [Usage](#usage)). Once you have this on your device, select it with the
+file selector (Configuration page), or drag-and-drop it into the app, and start searching for article titles. No further Internet access is required to
+read the archive's content. You can have the entire content of Wikipedia in your own language inside your device (including images and audiovisual content)
+entirely offline. If your Internet access is expensive, intermittent, slow, unreliable, controlled or censored, you can still have offline access to this
+amazing repository of knowledge, information and culture.
+
+The Kiwix browser also works with other content in the [OpenZIM format](https://wiki.openzim.org/wiki/OpenZIM), but our main targets are Mediawiki-based
+content (Wikipedia, Wikivoyage, Wikitionary, etc.), StackExchange, Project Gutenberg and TED Talks.
+
+[![Build Status: Continuous Integration](https://github.com/kiwix/kiwix-js/workflows/CI/badge.svg?query=branch%3Amain)](https://github.com/kiwix/kiwix-js/actions?query=branch%3Amain)
+[![Build Status: Release](https://github.com/kiwix/kiwix-js/workflows/Release/badge.svg?query=branch%3Amain)](https://github.com/kiwix/kiwix-js/actions?query=branch%3Amain)
+[![CodeFactor](https://www.codefactor.io/repository/github/kiwix/kiwix-js/badge)](https://www.codefactor.io/repository/github/kiwix/kiwix-js)
+[![Licence: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
+
+[![Kiwix for Firefox](https://img.shields.io/amo/v/kiwix-offline?label=Kiwix%20for%20Firefox&logo=firefoxbrowser&logoColor=whitesmoke)](https://addons.mozilla.org/fr/firefox/addon/kiwix-offline/)
+[![Kiwix for Chrome](https://img.shields.io/chrome-web-store/v/donaljnlmapmngakoipdmehbfcioahhk?label=Kiwix%20for%20Chrome&logo=googlechrome&logoColor=whitesmoke)](https://chrome.google.com/webstore/detail/kiwix/donaljnlmapmngakoipdmehbfcioahhk)
+[![Kiwix for Edge](https://img.shields.io/badge/dynamic/json?label=Kiwix%20for%20Edge&logo=microsoftedge&logoColor=whitesmoke&prefix=v&query=%24.version&url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fjlepddlenlljlnnhjinfaciabanbnjbp)](https://microsoftedge.microsoft.com/addons/detail/kiwix/jlepddlenlljlnnhjinfaciabanbnjbp)
+
+## Usage
+
+Install "Kiwix JS" from your browser's add-on store. This is the best way to get the extension, because it will be kept up to date automatically. If
+you would rather not use a store, you can get a file-based version of the extension from http://download.kiwix.org/release/browsers/ (and follow
+[instructions below](#installing-signed-or-unsigned-extension-files-in-chromium)), but you will have to update this manually.
+
+Alternatively, you can bookmark or install the PWA version from https://browser-extension.kiwix.org/current/ (it will auto-update), or try our dedicated
+PWA version at https://pwa.kiwix.org. To install the PWA (in Chromium browsers), go to Settings -> Apps -> Install this site as an app.
+
+As mentioned above, the app requires at least one ZIM archive of offline content. You can download one from https://library.kiwix.org (this has a nice,
+graphical interface and a preview of each ZIM archive) or from https://download.kiwix.org/zim/ (a more basic list of archives). You have to download
+these separately, store them in your filesystem, and manually select them after starting the application (or you can drag-and-drop one into the app).
+
+Please note that certain "Zimit"-based archives (available from the "zimit" directory on https://download.kiwix.org/zim/) are not (yet) compatible
+with this reader. There is experimental support for these in our sister app https://pwa.kiwix.org.
+
+## Compatibility
+
+Since the app is written in HTML/JavaScript, it should work in most recent browser engines and many older ones too, depending on the Content
+Injection mode supported by the specific browser engine. Archives containing dynamic content (most non-Wikimedia archives) work much better
+in ServiceWorker mode ([see below](#some-technical-details)), but unfortunately this is not available in many older browsers. If you wish to read such archives, we
+would suggest that you upgrade to a browser that supports Service Workers (Chrome 58+, Firefox 61+ [not ESR versions], Edge 17+, Safari 11.3+).
+
+### Officially supported platforms
+
+- Mozilla Firefox >=56 (as an extension): [Mozilla Add-ons Store](https://addons.mozilla.org/fr/firefox/addon/kiwix-offline/)
+ + Firefox 52-56 and ESR version 58: Limited support (jQuery mode only)
+- Chromium / Chrome / Edge >= 88 (as a Manifest V3 extension):
+ + Google Chrome >=88: [Chrome Web Store](https://chrome.google.com/webstore/detail/kiwix/donaljnlmapmngakoipdmehbfcioahhk)
+ + Microsoft Edge >=88: [Edge Add-ons Store](https://microsoftedge.microsoft.com/addons/detail/kiwix/jlepddlenlljlnnhjinfaciabanbnjbp)
+- Chromium / Chrome / Edge 58-87 (as a Manifest V2 extension): use the MV2 zip from the `chrome` or `edge` directory in https://download.kiwix.org/release/browsers/, and follow [instructions below](#installing-signed-or-unsigned-extension-files-in-chromium)
+- Safari >=11.3 on macOS or iOS: no extension available, but use https://browser-extension.kiwix.org and install to Home screen; for a more fully featured PWA, use https://pwa.kiwix.org
+- Electron >=1.8.0 and NWJS >=0.14.7 (as an application for Linux and Windows): https://kiwix.github.io/kiwix-js-pwa/app
+- Universal Windows Platform (UWP) >=10.0.10240 (as an HTML/JS application): [Microsoft Store](https://www.microsoft.com/store/apps/9P8SLZ4J979J)
+- Ubuntu Touch (as an application): [Ubuntu OpenStore](https://open-store.io/app/kiwix)
+
+### Deprecated platforms
+
+These platforms/browsers are deprecated. We still partially test against them, and we'll try to keep compatibility as long as it's not too complicated:
+
+- Firefox OS >=1.2: needs to be installed manually on the device with WebIDE
+- Microsoft Edge Legacy >=17: no extension available, but bookmark https://browser-extension.kiwix.org or https://pwa.kiwix.org
+- Microsoft Edge Legacy 15-16: needs to run a bundled version of the source code in jQuery mode only
+- Microsoft Internet Explorer 11: needs to run a bundled version of the source code in jQuery mode only
+
+**_You can build a bundled version by running `npm install` and `npm run build` in the root directory of this repo._** Alternatively, a bundled version is served
+as a web app for testing from https://kiwix.github.io/kiwix-js/dist/ (also available on the `gh-pages` branch of this repo, under `/dist`).
+
+### Installing signed or unsigned extension files in Chromium
+
+If you need to install Chromium (Chrome or Edge) extension from a file instead of from a Store, e.g. if your browser doesn't support Manifest V3, then you will need to download a
+signed or unsigned CRX or ZIP file from a relevant directory in https://download.kiwix.org/release/browsers/, or else a nightly version from https://download.kiwix.org/nightly/.
+Files with `mv2` in their filename are in the legacy Manifest V2 format.
+
+To install your CRX or ZIP, open the extension management page in your browser, e.g. chrome://extensions/ or edge://extensions/, and turn on Developer mode. Now, you should be
+able to drag and drop the ZIP file into this page. Verify the extension is showing in the management page.
+
+Files that we deliver with a `.crx` file extension are files that have been validated by the Edge or Chrome Stores, and you should be able to install these as "first-class" apps.
+ZIP files provided in https://download.kiwix.org/release/browsers/, or the ones labelled `signed` in nightly, are actually signed CRX files that have been renamed with a `.zip`
+extension to facilitate downloading and installing them in Chromium browsers. Although signed, you cannot install them as CRX files, because they have not been validated by the
+Chrome or Edge Stores. **_For this reason, the browser will periodically ask you if you want to turn off developer-mode extensions. Just choose "ask again in two weeks"._**
+
+If drag-and-drop is difficult, you can instead unzip the extension ZIP into a folder, and note the location. Then select "Load unpacked" and choose the folder that contains the
+unzipped extension. To unzip the MV2 files with a utility like 7Zip, you will need to change the extension name to `.crx`. On Linux, `unzip` can read them without changing the filename.
+
+## Some technical details
+
+Technically, after reading an article from a ZIM file, it is necessary to "inject" the dependencies (images, css, etc). For compatibility reasons,
+there are two main ways of doing this:
+
+- "ServiceWorker" mode (the default) uses a Service Worker to catch any HTTP request the page may send and reply with content read from
+the ZIM file. It is a generic and clean way of serving content to the browser. It works in any recent browser, but not in older ones.
+Service Workers are currently disabled by Mozilla in Firefox extensions, but we use a workaround (an offline-first PWA version) as a
+substitute within the extension;
+- "JQuery" mode (deprecated) parses the DOM to find the HTML tags of the dependencies and modifies them to point to content we extract
+from the ZIM. This mode is compatible with any browser, but it cannot run JavaScript inside the ZIM file, so some ZIMs with dynamic
+content do not work well (if at all). However, Mediawiki-based content (e.g. Wikipedia) works fine in this mode.
+
+You can switch between these content injection modes in Configuration, but if your browser supports ServiceWorker mode, you are strongly
+advised to remain in this mode.
+
+### Limitations
+
+It is unfortunately not yet technically possible to "remember" the selected ZIM file and open it automatically (browsers do not allow that for
+security reasons). A handy alternative is to drag-and-drop a ZIM file into the app, which is a quick way to open an archive
+and switch between several archives in a folder. There are
+[versions of this app](https://kiwix.github.io/kiwix-js-pwa/app) that use frameworks like Electron, UWP or NWJS
+which do have the capability of remembering the chosen archive between app launches. For desktop Chromium browsers, the
+[File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) (see
+[#656](https://github.com/kiwix/kiwix-js/issues/656)) is implemented in a PWA version at https://pwa.kiwix.org.
+
+The app has fast title search, and slower full-text search for ZIM archives that have a full-text index, thanks to the
+[openzim/javascript-libzim](https://github.com/openzim/javascript-libzim) project. Currently, full-text searching only works in browsers
+that support [Atomic Operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics), which means
+recent desktop versions of Chromium and Firefox. There is also support in Safari on iOS 15+.
+
+## Licence
+
+This application is released under the GPL v3 licence. See http://www.gnu.org/licenses/ or the included LICENSE-GPLv3.txt file
+The source code can be found at https://github.com/kiwix/kiwix-js.
+
+## Contributing
+
+Kiwix JS is an open-source project. We encourage individuals with experience of HTML and JavaScript development to contribute to the documentation and code in this repository.
+
+To report a bug, read our [REPORT_BUG](REPORT_BUG.md) guide.
+
+For code contributions, read our [CONTRIBUTING](CONTRIBUTING.md) guide.
+
+To get to know the Kiwix project better, please familiarize yourself with the content on https://www.kiwix.org. There is also a Kiwix [Slack](https://join.slack.com/t/kiwixoffline/shared_invite/zt-19s7tsi68-xlgHdmDr5c6MJ7uFmJuBkg) group which you can join.
+
+We also have a [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md): everybody is expected to follow it.
+
+## Public releases and nightly builds
+
+The browser extensions are distributed through the stores of each vendor (see links above). But the packages are also saved in https://download.kiwix.org/release/browsers/ if necessary.
+
+Some nightly builds are generated, and should only be used for testing purpose: https://download.kiwix.org/nightly/.
+
+There is a test implementation of the latest code at https://kiwix.github.io/kiwix-js/ (unbundled: needs a modern browser that suppors native ES6 modules), and a bundled version for any
+HTML5 browser (>=IE11) at https://kiwix.github.io/kiwix-js/dist/, but these implementations are used for development, and may be buggy, experimental or unstable. A stable PWA version for
+use in the browser extensions is available from https://browser-extension.kiwix.org/current/.
+
+## Previous versions
+
+The first versions of this application were originally part of the Evopedia project: http://www.evopedia.info (discontinued). There was an "articles nearby" feature, that was able to find articles around your location. It has been deleted from the source code with everything related to Evopedia (but still in git history in versions<=2.0.0).
+
+These first versions were targeting Firefox OS (discontinued too: we're not lucky ;-) ).
+
+See [CHANGELOG.md](CHANGELOG.md) for details of previous versions.
diff --git a/dist/backgroundscript.js b/dist/backgroundscript.js
new file mode 100644
index 000000000..08e33ca78
--- /dev/null
+++ b/dist/backgroundscript.js
@@ -0,0 +1,40 @@
+/**
+ * backgroundscript.js: Background script for the WebExtension Manifest V2
+ *
+ * Copyright 2017 Mossroy and contributors
+ * Licence GPL v3:
+ *
+ * This file is part of Kiwix.
+ *
+ * Kiwix is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public Licence as published by
+ * the Free Software Foundation, either version 3 of the Licence, or
+ * (at your option) any later version.
+ *
+ * Kiwix is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public Licence for more details.
+ *
+ * You should have received a copy of the GNU General Public Licence
+ * along with Kiwix (file LICENSE-GPLv3.txt). If not, see
+ */
+
+/* global chrome, browser */
+
+// In order to work on both Firefox and Chromium/Chrome (and derivatives).
+// browser and chrome variables expose almost the same APIs
+var genericBrowser;
+if (typeof browser !== 'undefined') {
+ // Firefox
+ genericBrowser = browser;
+} else {
+ // Chromium/Chrome
+ genericBrowser = chrome;
+}
+// DEV: For a Mozilla MV3 extension, we have to use 'action' instead of 'browserAction'
+var genericAction = genericBrowser.browserAction || genericBrowser.action;
+genericAction.onClicked.addListener(function () {
+ var newURL = genericBrowser.runtime.getURL('www/index.html');
+ genericBrowser.tabs.create({ url: newURL });
+});
diff --git a/dist/i18n/en.jsonp.js b/dist/i18n/en.jsonp.js
new file mode 100644
index 000000000..8677dddfc
--- /dev/null
+++ b/dist/i18n/en.jsonp.js
@@ -0,0 +1,268 @@
+/* eslint-disable quote-props, quotes, indent */
+document.localeJson = {
+ "en": {
+ "translation": {
+ "title": "Kiwix",
+ "sub-title": "Offline Browser",
+ "home": "Home",
+ "home-search": "Search",
+ "home-welcome-text": "Once you have loaded a ZIM archive, you can search its contents using the above search field.",
+ "home-btn-random-tip": "Select a random article to display",
+ "home-btn-random": "Random",
+ "home-btn-back": "Back",
+ "home-btn-fileselect": "Select ZIM file(s)",
+ "home-btn-forward": "Forward",
+ "home-btn-top": "Top",
+ "home-prefix-placeholder": "Search...",
+ "home-prefix-tip": "You can search the contents of your ZIM archive using this search field. It will suggest article titles **starting** with the letters you type.",
+ "configure": "Configure",
+ "configure-title": "Configuration",
+ "configure-about-usage-link": "About (Usage)",
+ "configure-btn-library": "Browse ZIM Library",
+ "configure-btn-library-tip": "This will display a graphical library of ZIM archives for download if your browser can open it. Otherwise, it opens a text-only version. If you are using the Chromium extension in ServiceWorkerLocal mode, you will only be able to use the latter (switch to ServiceWorker mode for the full graphical version).",
+ "configure-btn-folderselect": "Select Folder",
+ "configure-changed-content-note": "(Re-pick folder if there is new content on your device)",
+ "configure-btn-rescan": "Rescan",
+ "configure-about-rescan-tip": "Rescans your SD Cards and internal memory",
+ "configure-select-file-numbers": "archive(s) found in selected location. ",
+ "configure-download-instructions": "This application needs a ZIM archive to work. For full instructions, please see the section",
+ "configure-select-instructions": "Please select or drag and drop a .zim file (or all the .zimaa, .zimab etc in case of a split ZIM file):",
+ "configure-select-file-instructions": "Please select the archive you want to use:",
+ "configure-select-file-first-option": "Select an archive...",
+ "configure-selectordisplay": "Drag and drop a new ZIM file, or",
+ "configure-selectordisplay-link": "display file selectors",
+ "configure-static-content": "Only ZIMs with static content (e.g. Wiki-style) are supported in JQuery mode. ",
+ "configure-supportedarchives": "For information on ZIM compatibility, see",
+ "configure-compatibility-images-title": "Image handling",
+ "configure-compatibility-images-label": "Work around anti-fingerprinting measures by substituting WebP images with canvas elements (setting determined automatically, can be disabled):",
+ "configure-compatibility-images-tip": "For browsers that do not have native WebP support and that implement anti-fingerprinting measures, we cannot extract the image data from the canvas elements produced by the polyfill, so we use the canvas as substitute for the image. If not needed, disabling this may improve performance.",
+ "configure-compatibility-images-control": "Use WebP workaround if needed",
+ "configure-display-settings-title": "Display settings",
+ "configure-display-panel-header": "Display options",
+ "configure-display-slideaway": "Hide header and footer when scrolling or swiping down (scroll up slightly to show again)",
+ "configure-display-slideaway-tip": "Header and footer will slide away when scrolling or (on fixed pages, swiping) down at least 50 pixels, and will slide back when you scroll up. On fixed pages, you can also use Ctrl/Command + UpArrow or DownArrow. The option is now on by default.",
+ "configure-display-uianimations": "Animate transition between app pages",
+ "configure-display-uianimations-tip": "The animation is on by default and can be disabled by unchecking this option.",
+ "configure-display-homekeyfocus": "Home key and Home tab focus search bar (may have side effects on ZIMs that handle Home key)",
+ "configure-display-homekeyfocus-tip": "Auto-focuses the search bar when you press the Home key, and also when you click or tap on the Home tab. Enables quick access to search, no matter where you are in an article.",
+ "configure-display-openexternallinks": "Open external links in new tabs. Disabling this might break kiwix-js UI in some specific cases",
+ "configure-display-openexternallinks-tip": "Opens the external links outside kiwix-js (avoids some side-effects affecting kiwix-js UI).",
+ "configure-display-selectapptheme": "Select app theme (content inversion is experimental):",
+ "configure-display-selectapptheme-tip": "Allows selection of themes either for the app only, or for the app and the loaded content.",
+ "configure-display-themeoption-light": "Light",
+ "configure-display-themeoption-dark-apponly": "Dark (app only)",
+ "configure-display-themeoption-dark-invert": "Dark (generic invert)",
+ "configure-display-themeoption-dark-mwinvert": "Dark (wikimedia invert)",
+ "configure-display-themeoption-auto-apponly": "Auto (app only)",
+ "configure-display-themeoption-auto-invert": "Auto (generic invert)",
+ "configure-display-themeoption-auto-mwinvert": "Auto (wikimedia invert)",
+ "configure-display-apptheme-auto-description": " (Auto themes match the dark/light mode of your device.)",
+ "configure-display-apptheme-mwinvert-description": "* Implements workarounds specific to Wikimedia ZIMs. Try generic option if there are display errors with recent ZIMs.",
+ "configure-display-apptheme-info": "[ Show article with applied theme ]",
+ "configure-language-selector-default": "Language",
+ "configure-language-selector-other": "More soon...",
+ "configure-performance-settings-title": "Performance settings",
+ "configure-performance-panel-header": "Speed up archive access",
+ "configure-performance-cacheassets-description": "Kiwix JS can speed up the display of articles by caching assets:",
+ "configure-performance-cacheassets-true": "Cache assets (recommended)",
+ "configure-performance-cacheassets-true-tip": "The cache provides high-speed access to ZIM assets such as stylesheets and scripts, which will improve article load times.",
+ "configure-performance-cacheassets-false": "Do not cache assets (empties caches: for low-memory devices)",
+ "configure-performance-cacheassets-false-tip": "For low-memory devices, caching assets may cause app instability. This option allows you to disable the cache.",
+ "configure-performance-cachestatuspanel-label": "Cache status",
+ "configure-performance-cachestatuspanel-cacheused": "Cache used",
+ "configure-performance-cachestatuspanel-assets": "Assets",
+ "configure-performance-searchrange-label": "Select max number of search results:",
+ "configure-performance-searchrange-valuetext": "Value",
+ "configure-performance-searchrange-help": "default 25, higher values increase search time",
+ "configure-compatibility-settings-title": "Compatibility settings",
+ "configure-compatibility-panel-header": "Content injection mode",
+ "configure-compatibility-see": "See",
+ "configure-compatibility-modeslink": "About (Technical Information)",
+ "configure-compatibility-helpstub": "for an explanation of the difference between these modes:",
+ "configure-compatibility-option-serviceworker": "ServiceWorker (recommended, supports dynamic content and inline JavaScript)",
+ "configure-compatibility-option-serviceworker-tip": "This mode requires that the browser or framework be capable of installing a Service Worker. It enables dynamic ZIM content and running JavaScript (including inline JS). It works by intercepting the browser's Fetch calls and supplying the requested content from the ZIM.",
+ "configure-compatibility-option-serviceworkerlocal": "ServiceWorkerLocal (secure local Service Worker, but no inline JavaScript)",
+ "configure-compatibility-option-serviceworkerlocal-tip": "[For Chromium extensions only:] This mode runs the Service Worker in a secure local sandbox, and does not need one-time access to our PWA server. However, due to the strong security restrictions in the API, it is not capable of running inline JavaScript, so dynamic ZIM content may fail.",
+ "configure-compatibility-option-jquery": "JQuery (deprecated: no dynamic content, compatible with older browsers)",
+ "configure-compatibility-option-jquery-tip": "This mode is deprecated, but should be fine for Wikipedia / WikiMedia archives. It works on all devices.",
+ "configure-expert-settings-title": "Expert settings",
+ "configure-expert-panel-header": "Troubleshooting and development",
+ "configure-expert-hideactivecontentwarning": "Permanently hide active content warning (for experienced users)",
+ "configure-expert-hideactivecontentwarning-tip": "A warning is shown if you load a ZIM that has active or dynamic content while you are in JQuery mode. It is not recommended to disable this warning.",
+ "configure-expert-disabledragdrop": "Disable drag-and-drop (in case it is causing anomalies)",
+ "configure-expert-disabledragdrop-tip": "This option disables drag-and-drop of ZIM files onto the app. It is not recommended to disable this feature.",
+ "configure-expert-bypassappcache": "Bypass AppCache (disables offline use of this app!)",
+ "configure-expert-bypassappcache-tip": "WARNING: Leaving this checked will prevent offline usage of the PWA. Setting will clear all existing Cache API caches, but assetsCache will be used unless also disabled above. For testing new code with the PWA.",
+ "configure-expert-resetapp-description": "Reset the app to default settings and erase all caches:",
+ "configure-expert-resetapp": "Reset App",
+ "configure-expert-resetapp-tip": "This will return the app to its original settings on launch, and will empty all caches and settings and deregister Service Workers. The app will then reload.",
+ "configure-api-panel-header": "API Status",
+ "api-messagechannel-available": "MessageChannel API: available",
+ "api-messagechannel-unavailable": "MessageChannel API: unavailable",
+ "api-serviceworker-available-registered": "ServiceWorker API: available, and registered",
+ "api-serviceworker-available-unregistered": "ServiceWorker API: available, but not registered",
+ "api-serviceworker-unavailable": "ServiceWorker API: unavailable",
+ "api-cookie": "Cookie",
+ "api-localstorage": "Local Storage",
+ "api-storage-used-label": "Settings Storage API in use:",
+ "api-none": "None",
+ "api-error-uninitialized_masculine": "Not initialized",
+ "api-error-uninitialized_feminine": "Not initialized",
+ "api-decompressor-error-loading-part1": "Error loading",
+ "api-decompressor-error-loading-part2": "decompressor!",
+ "api-decompressor-label": "Decompressor API",
+ "api-pwa-origin-label": "PWA Origin:",
+ "api-searchprovider-label": "Search Provider:",
+ "api-searchprovider-title": "Title",
+ "api-searchprovider-titleonly": "Title only",
+ "dialog-allow-internetaccess-title": "Allow Internet access",
+ "dialog-allow-internetaccess-message1": "
To enable the Service Worker, we",
+ "dialog-allow-internetaccess-message2": "
We shall attempt to switch you to ServiceWorker mode (this is now the default).",
+ "dialog-allow-internetaccess-message3": "It supports more types of ZIM archives and is much more robust.
We",
+ "dialog-allow-internetaccess-message4": "need one-time access to our secure server so that the app can re-launch as a Progressive Web App (PWA). If available, the PWA will work offline, but will auto-update periodically when online as per the Service Worker spec.
You can switch back any time by returning to JQuery mode.
WARNING: This will attempt to access the following server: ",
+ "dialog-archive-notset-title": "No archive selected",
+ "dialog-archive-notset-message": "Archive not set: please select an archive",
+ "dialog-article-notfound-message": "Article with the following URL was not found in the archive:",
+ "dialog-article-notfound-title": "Error: article not found",
+ "dialog-article-readerror-message": "Error reading article with url:",
+ "dialog-article-readerror-title": "Error reading article",
+ "dialog-cancel": "Cancel",
+ "dialog-ok": "Okay",
+ "dialog-confirm": "Confirm",
+ "dialog-blocked-fileprotocol": "
You seem to be opening kiwix-js with the file:// protocol, which is blocked by your browser for security reasons.
The easiest way to run it is to download and run it as a browser extension (from the vendor store).
Or else you can open it through a web server: either through a local one (http://localhost/...) or through a remote one (but you will need a secure connection, e.g.: https://webserver/...)
Another option is to force your browser to accept that (but you'll open a security breach): on Chrome, you can start it with --allow-file-access-from-files command-line argument; on Firefox, you can set privacy.file_unique_origin to false in about:config
",
+ "dialog-bypassappcachecheck-message": "This setting can only be used in ServiceWorker mode!",
+ "dialog-bypassappcache-conflict-title": "Deselect \"Bypass AppCache\"",
+ "dialog-bypassappcache-conflict-message": "You must deselect the \"Bypass AppCache\" option before switching to JQuery mode!",
+ "dialog-devicestrage-error-title": "Error: no matching storage",
+ "dialog-devicestorage-error-message": "Unable to find which device storage corresponds to directory",
+ "dialog-disabledragdrop-title": "Reload app",
+ "dialog-disabledragdrop-message": "
We will now attempt to reload the app to apply the new setting.
(If you cancel, then the setting will only be applied when you next start the app.)
",
+ "dialog-error-title": "Error!",
+ "dialog-file-notset-message": "Data files not set",
+ "dialog-file-notset-title": "Archive not ready",
+ "dialog-focussearchbarcheck-message": "Please note that this setting focuses the search bar when you go to a ZIM landing page, disabling sliding away of header and footer on that page (only).",
+ "dialog-invalid-archivelocation-title": "Error: invalid archive files location",
+ "dialog-invalid-archivelocation-message": "It looks like you have put some archive files at the root of your sdcard (or internal storage). Please move them to a subdirectory",
+ "dialog-invalid-zim-title": "Invalid file format",
+ "dialog-invalid-zim-message": "One or more files does not appear to be a ZIM file!",
+ "dialog-launchlocal-title": "Warning!",
+ "dialog-launchlocal-message": "This will switch to using locally packaged code only. Some configuration settings may be lost.
WARNING: After this, you may not be able to switch back to SW mode without an online connection!",
+ "dialog-launchpwa-fail-title": "Confirmation to retry PWA launch",
+ "dialog-launchpwa-fail-message": "The last attempt to launch the PWA appears to have failed.
Do you wish to try again?",
+ "dialog-launchpwa-unsupported-title": "ServiceWorker API not available",
+ "dialog-launchpwa-unsupported-message": "
Unfortunately, your browser does not appear to support ServiceWorker mode, which is now the default for this app.
You can continue to use the app in the (now deprecated) JQuery mode, but note that this mode only works well with ZIM archives that have static content, such as Wikipedia / Wikimedia ZIMs or Stackexchange.
If you can, we recommend that you update your browser to a version that supports ServiceWorker mode.
",
+ "dialog-messagechannel-unsupported-title": "MessageChannel API not available",
+ "dialog-messagechannel-unsupported-message": "The MessageChannel API is not available on your device. Falling back to JQuery mode...",
+ "dialog-old-android": "You seem to be using an Android device with DeviceStorage API. That must be a quite old Firefox version because this API has been removed in 2016. Be aware that there was a bug on Firefox, that prevents finding Wikipedia archives in a SD-card (at least on some devices). Please put the archive in the internal storage if the application can't find it.",
+ "dialog-other-language-message": "We are working hard to bring you more languages! If you are interested in helping to translate the interface to your language, please create an issue on our GitHub. Thank you!",
+ "dialog-open-externalurl-message": "
Do you want to open this external link?",
+ "dialog-open-externalurl-newtab": "(in a new tab)",
+ "dialog-open-externalurl-title": "Opening external link",
+ "dialog-randomarticle-error-message": "Error finding random article",
+ "dialog-readsplitzim-error-message": "Error reading files in split archive",
+ "dialog-readzim-error-title": "Error reading archive file(s)",
+ "dialog-readzim-error-message": "Error reading ZIM file",
+ "dialog-reset-warning-title": "WARNING!",
+ "dialog-reset-warning-message": "This will reset the app to a freshly installed state, deleting all app caches and settings!",
+ "dialog-scanstorage-error-message": "Error scanning your device storage:",
+ "dialog-scanstorage-fxos-error-message": "If you're using the Firefox OS Simulator, please put the archives in a \"fake-sdcard\" directory inside your Firefox profile (e.g., ~/.mozilla/firefox/xxxx.default/extensions/fxos_2_x_simulator@mozilla.org/profile/fake-sdcard/wikipedia_en_ray_charles_2015-06.zim)",
+ "dialog-scanstorage-fxos-error-title": "Error scanning Device Storage",
+ "dialog-server-access-check": "Checking server access...",
+ "dialog-server-access-check-failed": "The server is not currently accessible!
(Kiwix needs one-time access to the server to cache the PWA). Please try again when you have a stable Internet connection.",
+ "dialog-serviceworker-registration-failure-title": "Failed to register Service Worker",
+ "dialog-serviceworker-registration-failure-message": "The Service Worker could not be properly registered. Switching back to JQuery mode... Error message:",
+ "dialog-serviceworker-registration-failure-fileprotocol": "
You seem to be opening kiwix-js with the file:// protocol. You should open it through a web server: either through a local one (http://localhost/...) or through a remote one (but you need a secure connection, e.g.: https://webserver.org/...)",
+ "dialog-serviceworker-unsupported-title": "ServiceWorker mode unsupported",
+ "dialog-serviceworker-unsupported-message": "
Unfortunately, your browser does not appear to support ServiceWorker mode, which is now the default for this app.
You can continue to use the app in the (now deprecated) JQuery mode, but note that this mode only works well with ZIM archives that have static content, such as Wikipedia / Wikimedia ZIMs or Stackexchange.
If you can, we recommend that you update your browser to a version that supports ServiceWorker mode.
We have switched you to ServiceWorker mode (this is now the default). It supports more types of ZIM archives and is much more robust.
If you experience problems with this mode, you can switch back to the (now deprecated) JQuery mode. In that case, please report the problems you experienced to us (see About section).
",
+ "dialog-slideawaycheck-message": "This setting may not work correctly on Firefox OS. If you find that some ZIM links become unresponsive, try turning this setting off.",
+ "dialog-unsupported-archivetype-message": "
You are attempting to open a Zimit-style archive, which is currently unsupported in this app.
There is experimental support for this kind of archive in the Kiwix JS PWA. Go to: https://pwa.kiwix.org.
Alternatively, you can use Kiwix Serve to serve this archive to your browser from localhost. Kiwix Serve is included with Kiwix Desktop.
",
+ "dialog-unsupported-archivetype-title": "Unsupported archive type!",
+ "dialog-warning": "Warning",
+ "dialog-welcome-title": "Welcome",
+ "dialog-welcome-message": "Welcome to Kiwix! This application needs at least a ZIM file in your SD-card (or internal storage). Please download one and put it on the device (see About section). Also check that your device is not connected to a computer through USB device storage (which often locks the SD-card content)",
+ "about": "About",
+ "about-app": "About",
+ "abouut-app-title": "About this app",
+ "about-usage": "Usage",
+ "about-usage-title": "Usage",
+ "about-search-usage": "Search usage",
+ "about-image-download": "Image download",
+ "about-privacy-policy": "Privacy policy",
+ "about-technical-information": "Technical information",
+ "about-official-site": "Official site:",
+ "about-zim-format": "ZIM archive format",
+ "about-fat-fs": "Downloading and storing large archives",
+ "about-contentinjection-modes": "JQuery and ServiceWorker modes",
+ "about-feedback": "Feedback / helping / contributing",
+ "about-credits": "Credits",
+ "about-licence": "Licence information",
+ "about-other-platforms": "Other platforms/versions",
+ "about-download-archives": "Download ZIM archives (content):",
+ "about-download-language": "Download by language",
+ "about-download-index": "Index of all files",
+ "about-download-library": "Library of archives",
+ "about-app-para1": "If your Internet access is expensive, slow, unreliable, controlled or censored, you can still gain free offline access to many valuable resources. Carry the world's largest Encyclopaedia around in your pocket, in any language, or a worldwide Travel Guide when you are on the road!",
+ "about-app-para2": "To use this app, you will need to download, completely free, one or more archives (called ZIM archives) from the Kiwix website and store them on your device or a thumb drive / external drive. You will then be able to access your chosen content totally offline.",
+ "about-app-para3": "Archives are available with content in many different languages from sources such as Wikipedia, Wiktionary, WikiMed, Wikivoyage, Project Gutenberg, Stack Exchange, TED Talks and many others. There are also \"themed\" archives with selected topics of interest such as medicine, movies, history, geography, maths, physics, etc.",
+ "about-usage-step1": "Step 1: Choose your content",
+ "about-step1-para1": "Go to https://library.kiwix.org (easy-to-use graphical interface, archive previews) or https://download.kiwix.org/zim/ (traditional file list), and select the archives that interest you in your favourite language(s). If you don't have Internet access, you can also access/share content from a USB stick.",
+ "about-step1-para2": "For a quick test, we recommend you start with a small archive containing all the Wikipedia articles about climate change in English.",
+ "about-step1-para3": "Wikipedia archives with \"mini\" in the filename are the smallest, since they only contain the introduction of each article; \"nopic\" means no pictures; \"maxi\" means everything except video and audio. The largest files without any of these qualifiers are complete. Note that you can only see the filenames easily in the traditional file list .",
+ "about-step1-para4": "Before downloading non-Wiki ZIM types, check if your browser supports archives with dynamic content: look at the bottom of the Configuration page, in the API panel, and if you see \"ServiceWorker API available and registered\" in green, then the app can read all ZIM types (except Zimit: see ZIM archive format for more details). Otherwise you should mostly stick to MediaWiki (Wikipedia, Wikivoyage, Wiktionary...) and Stack Exchange archives (see modes below for an explanation).",
+ "about-step2": "Step 2: Download or copy the content onto your device",
+ "about-step2-para1": "Download your chosen content and/or copy it into a dedicated ZIM folder on your device's storage. Check the size before you download archives as many file sizes are very large (several Gigabytes). Themed versions such as WikiMed, or versions without images, are much smaller than full Wikipedia archives and can be readily downloaded in your browser.",
+ "about-step2-para2": "If you don't have enough internal storage, consider using a modern microSD card, an external hard drive, or thumb drive. For larger archives (greater than 2GB) on older devices, it is possible that an archive might not be supported if your storage is formatted using a FAT filesystem (NB exFAT is fine). See Downloading large archives below for a solution.",
+ "about-step3": "Step 3: Drag and drop the file into the app",
+ "about-step3-para1": "You can drag and drop the archive file into the the open app (if you have a split file, be sure to drag all parts), or else you can go to the \"Configure\" menu and select your ZIM file.",
+ "about-step4": "Step 4: Enjoy your offline content!",
+ "about-search-title": "Title and full-text search usage",
+ "about-search-para1": "There are three types of search:",
+ "about-search-para2": "Title search matches the start of an article title, so if you search for 'France' you will get 'France (country)', 'France (disambiguation)', 'France (film)', etc. This kind of search tries to be case-insensitive, but the number of case variants tried is necessarily limited. If not enough results are returned, you can increase the maximum number of search results using the slider in Configuration.",
+ "about-search-para3": "Alphabetical search: If you type a letter of the alphabet in the search box (upper case may be most useful), it will show an alphabetical list of articles starting with that letter. This is useful for ZIM archives that have descriptive rather than semantic titles (e.g. TED Talks). You can also display a list of all titles (up to the limit set in Configuration) simply by clicking the search button without typing anything.",
+ "about-search-para4": "Full-text search: This type of search is only availalbe in relatively recent desktop browsers, and if the archive contains a full-text index. If it is supported, it will be used automatically, but it is slower than title search, and you may notice a delay before the results are added to the title-search results. Additionally, full-text search cannot be used if your archive is split into various chunks. To see whether it is available, look in the API panel at the bottom of the Configuration page after you have loaded a ZIM. If it says \"Xapian [fulltext]\" then it should be automatically enabled for that ZIM.",
+ "about-remove-navbars": "Removing navigation bars",
+ "about-remove-navbars-para1": "The default setting is for the top and bottom navigation bars to slide away when you scroll down and slide back when you scroll up. However, in some ZIM archives, e.g. PhET, it is not possible to scroll, and the navigation bars can obscure some content. In this case, in most browsers you can swipe decisively up or down on the window (with touch or with the mouse wheel/touchpad) to toggle the display of the navigation bars. In all browsers, you can also use the Ctrl/Cmd + UpArrow/DownArrow keys.",
+ "about-image-download-para1": "Unfortunately, it is not usually possible to download and save an image from a ZIM article using the context menu (after right-clicking or long-pressing the image). One workaround is to choose \"Copy Image\" in the context menu, then paste it in any suitable software (Paint, Gimp etc, or even a Word processor), and then save it from there.",
+ "about-privacy-short-title": "Short version:",
+ "about-privacy-short-para1": "Kiwix JS works offline, and does not collect or record any of your personal data. It only remembers your browsing history for the duration of a session (for the purpose of returning to previously viewed pages). This history is lost on exiting the app and is not recorded in any way.",
+ "about-privacy-long-title": "Longer version:",
+ "about-privacy-long-para1": "This application only reads the archive files that you explicitly select on your device together with files in its own package. Some ZIM archives contain active content (scripts) which may, in rare circumstances, attempt to contact external servers for incidental files such as fonts. We have a Content Security Policy which attempts to prevent this, but it is not possible to guarantee that all such requests will be blocked, for example if a ZIM were to contain intentionally malicious code that can break the sandbox. Please note that scripts will only run if you enable ServiceWorker Mode (the default) in Configuration. Nevertheless, if you believe your Internet access is insecure, or is being observed or censored, we recommend that you completely shut down your Internet (Data or WiFi) access before using the application.",
+ "about-privacy-long-para2": "Additionally, if you obtained this app from a third-party site (including a browser extension store), then the site operator may track your usage of the app (e.g. download, install, uninstall, date and number of sessions) for the purpose of providing anonymous, aggregate usage statistics to developers. If this concerns you, you should check the relevant site's Privacy Policy for further information.",
+ "about-zim-format-para1": "Offline archives use the OpenZIM format , but note that this app has only been tested extensively on MediaWiki (Wikipedia, Wikivoyage, etc.), Gutenberg, Stackexchage and TED Talks archives. Video content is supported if your device, browser or OS understands the format. Some ZIMs use a proprietary dynamic UI which is only supported in ServiceWorker Mode (see below).",
+ "about-zim-format-para2": "This application is not currently compatible with archives that are created by Zimit (https://youzim.it ) using the Web Archive (WARC) format. We have plans to enable this format, but there are considerable technical challenges to overcome in order to display these archives with the fidelity that you expect from Kiwix -- see issue #1009 . However, there is experimental support for Zimit archives in our Progressive Web App (PWA) available from https://pwa.kiwix.org .",
+ "about-large-archives-para1": "Full versions of Wikipedia can be enormous: French, German and Spanish Wikipedia with images are each >25GB; full English Wikipedia with images is >90GB. For these very large archives you can find convenient BitTorrent links provided by library.kiwix.org , which may be more reliable than attempting to use your browser. You can use an open-source BitTorrent client such as QBittorrent with these links (install the software before clicking on the torrent link).",
+ "about-large-archives-para2": "If you need to store a large ZIM archive on an older filesystem formatted as FAT16 or FAT32, you need to be aware of the file size limits of those systems (FAT16 < 2GiB; FAT32 < 4GiB). Most modern microSD cards, thumb drives or hard drives are formatted as exFAT or another modern FS such as NTFS, which do not have this issue. If your ZIM archive is larger than the FS limit, it is possible to split the archive into several 2GiB-1 or 4GiB-1 files (or smaller). You will need to give a file extension to each chunk in the right order following this pattern: *.zimaa, *.zimab, *.zimac, ..., etc.). When you pick this archive in the app, be sure to pick all the chunks, or drag-and-drop them all into the app.",
+ "about-large-archives-para3": "For some information on how to split archves, see Download a ZIM archive .",
+ "about-contentinjection-para1": "Depending on your browser or framework, this app may be capable of running in different modes, which we call \"ServiceWorker Mode\" and \"JQuery Mode\". There is a toggle under Compatibility Settings in Configuration that allows you to select between these. Here is a technical explanation of what these modes do:",
+ "about-contentinjection-para2": "ServiceWorker Mode: This is the default mode. As its name implies, it requires that the browser or framework be capable of installing a Service Worker, which is usually the case in modern browsers. It works by intercepting the browser or framework's Fetch calls (network requests) and supplying the requested content from the ZIM. In this mode, the content is read and supplied as-is from the archive to the browser. Dynamic content (e.g. JavaScript) and proprietary UIs are fully supported in this mode. However, Zimit archives are not currently supported due to a conflict between the Kiwix JS Service Worker and the WARC Service Worker (but you can use the PWA for experimental support, see above). This mode can feel initially a little slower than JQuery mode until commonly used assets are cached, but it soon equals JQuery mode in speed, at least in modern browsers. However, older browsers such as IE11 are incompatible with this mode, and the app must be running in a secure context (https:, localhost, or certain browser extensions). While this mode is not natively supported in Mozilla (Firefox) browser extensions, we provide a functional workaround by re-launching the extension as a Progressive Web App (PWA). Note that this mode cannot run with the file: protocol (but only IE11 and old Edge allow the app to run by launching index.html from the file system).",
+ "about-contentinjection-para3": "ServiceWorkerLocal Mode: This is only available in Chromium extensions. It is the same as above, but due to very tight security restrictions in these extensions, no inline JavaScript or eval statements can run. Unfortunately, modern ZIMs may have such dynamic content, and so functionality may be restricted in this mode. Nevertheless, it is more secure: the content is sandboxed and no one-time server access is required to enable the Service Worker. You are protected from inline code execution at the cost of loss of some features in dynamic ZIMs.",
+ "about-contentinjection-para4": "JQuery Mode: This mode is now deprecated (and does not in fact require JQuery). It is retained for compatibility with older browsers or frameworks that cannot run Service Workers. The mode has limitations which mean that only static content can be displayed, such as that found in Wikipedia / WikiMedia archives and (for now) Stackexchange. It is a way of inserting articles extracted from the ZIM into the DOM (browser document) by injecting the content into an iframe or tab. We then use native DOM methods, or sometimes JQuery, to parse the article's HTML and insert required assets (images, stylesheets, event listeners for hyperlinks, etc.). On old devices, DOM traversal can be slow, but it is compensated for because we do not extract or run JavaScript assets (which would be technically extremely complicated). As a result, for WikiMedia archives this mode is usually quite fast. On the downside, ZIMs that have a proprietary dynamic UI (such as Gutenberg or TED talks) are only partially supported in this mode: the UI does not work, but articles can be searched for and loaded from the search bar.",
+ "about-feedback-para1": "We welcome constructive feedback and suggestions for improvement. We will consider feature requests, but it is even better if you can contribute to improving the app! The source code is on GitHub , and we welcome Pull Requests (but open an issue and discuss your proposal first).",
+ "about-feedback-para2": "The bug and issue tracker is on GitHub too. We use it as our roadmap. Alternatively, you can send your feedback by email. In all cases, if you are reporting a bug, please give as much detail as you can: which device you are using, which version of Kiwix, which archive, which articles etc.",
+ "about-feedback-para3": "If you like the Kiwix project and use it, please consider giving a donation at https://support.kiwix.org to help maintain our servers, ZIM files and applications.",
+ "about-feedback-other-help": "You can also help by:",
+ "about-feedback-other-para1": "Adding articles to Wikipedia or improving the existing ones, by editing articles ;",
+ "about-feedback-other-para2": "Participating in the Kiwix project.",
+ "about-credits-gratitude": "We owe a big debt of gratitude to:
Kelson and all the Kiwix community for welcoming us to this project;
Wikipedia teams and contributors for helping to make knowledge available to everybody;
All the developers of libraries and tools we used, for releasing them as Free software (see libraries and tools paragraph).
",
+ "about-licence-text": "
Copyright 2013-2023 Mossroy, Peter-x, Jaifroid and other contributors.
This application is licensed under the GPL v3 Licence:
Kiwix is free software: you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation, either version 3 of the Licence, or (at your option) any later version.
Kiwix is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for more details.
You should have received a copy of the GNU General Public Licence along with Kiwix (file LICENSE-GPLv3.txt). If not, see https://www.gnu.org/licenses/.
",
+ "about-libraries": "Main libraries and resources used:",
+ "about-other-clients": "Other Kiwix clients exist on various platforms such as desktop and mobile apps for Linux, Windows, Android and iOS. We also have an offline-first, fully featured PWA based on the code in Kiwix JS: https://pwa.kiwix.org .",
+ "about-official-download": "See the official download site: https://www.kiwix.org/applications/ .",
+ "about-back-contents": "↑ Back to Contents",
+ "alert-activecontentwarning-title": "Unable to display active content:",
+ "alert-activecontentwarning-part1": "This ZIM is not fully supported in JQuery mode. Content may be available by clicking search button above (or type a letter of the alphabet), or else",
+ "alert-activecontentwarning-part2": "switch to ServiceWorker mode",
+ "alert-activecontentwarning-part3": "if your platform supports it.",
+ "alert-activecontentwarning-part4": "Permanently hide",
+ "alert-update-version": "Version",
+ "alert-update-available": "is ready to install. (Re-launch app to install.)",
+ "alert-download-message": "Download If the download does not begin, please tap the following link:",
+ "spinner-caching": "Caching",
+ "spinner-caching-assets": "Caching assets...",
+ "spinner-loading": "Loading"
+ }
+ }
+}
diff --git a/dist/i18n/es.jsonp.js b/dist/i18n/es.jsonp.js
new file mode 100644
index 000000000..5c7fe623e
--- /dev/null
+++ b/dist/i18n/es.jsonp.js
@@ -0,0 +1,268 @@
+/* eslint-disable quote-props, quotes, indent */
+document.localeJson = {
+ "es": {
+ "translation": {
+ "title": "Kiwix",
+ "sub-title": "Navegador de contenido offline",
+ "home": "Inicio",
+ "home-search": "Buscar",
+ "home-welcome-text": "Una vez que haya cargado un archivo ZIM, puede buscar en el contenido usando el campo de búsqueda arriba.",
+ "home-btn-random-tip": "Mostrar un artículo al azar",
+ "home-btn-random": "Aleatorio",
+ "home-btn-back": "Atrás",
+ "home-btn-fileselect": "Seleccione archivo(s) ZIM",
+ "home-btn-forward": "Adelante",
+ "home-btn-top": "Arriba",
+ "home-prefix-placeholder": "Buscar...",
+ "home-prefix-tip": "Puede buscar en el contenido de su archivo ZIM usando este campo de búsqueda. Sugerirá títulos de artículos que **empiezan** con las letras que escriba.",
+ "configure": "Configurar",
+ "configure-title": "Configuración",
+ "configure-about-usage-link": "Información (Uso)",
+ "configure-btn-library": "Biblioteca ZIM",
+ "configure-btn-library-tip": "Muestra una biblioteca gráfica de archivos ZIM para descargar si su navegador puede abrirla. De lo contrario, muestra una biblioteca en formato texto. Si está usando la extensión Chromium en modo ServiceWorkerLocal, sólo podrá usar el formato texto (cambie al modo ServiceWorker para la versión gráfica completa).",
+ "configure-btn-folderselect": "Seleccione carpeta",
+ "configure-changed-content-note": "(Vuelva a seleccionar carpeta si hay contenido actualizado en su dispositivo)",
+ "configure-btn-rescan": "Volver a escanear",
+ "configure-about-rescan-tip": "Volver a escanear las tarjetas SD y la memoria interna",
+ "configure-select-file-numbers": "archivo(s) encontrado(s) en la ubicación seleccionada. ",
+ "configure-download-instructions": "Esta aplicación necesita un archivo ZIM para funcionar. Para instrucciones completas, vea la sección",
+ "configure-select-instructions": "Seleccione o arrastre y suelte un archivo .zim (o todos los .zimaa, .zimab etc en caso de un archivo dividido):",
+ "configure-select-file-instructions": "Seleccione el archivo que desea utilizar:",
+ "configure-select-file-first-option": "Seleccione un archivo...",
+ "configure-selectordisplay": "Arrastre y suelte un nuevo archivo ZIM, o",
+ "configure-selectordisplay-link": "mostrar selector de archivos",
+ "configure-static-content": "Sólo funcionan bien los ZIM con contenido estático (tipo Wiki) en el modo JQuery. ",
+ "configure-supportedarchives": "Para informarse sobre la compatibilidad de los archivos, vea",
+ "configure-compatibility-images-title": "Manejo de imágenes",
+ "configure-compatibility-images-label": "Sustituir imágenes WebP con elementos canvas para evitar las medidas anti-huellas (configuración determinada automáticamente, puede ser desactivada):",
+ "configure-compatibility-images-tip": "Para navegadores que no tienen soporte nativo para WebP y que implementan medidas anti-huellas, no podemos extraer los datos de imagen de los elementos canvas producidos por el polyfill, por lo que usamos el canvas como sustituto de la imagen. Si no es necesario, desactivar esto puede mejorar el rendimiento.",
+ "configure-compatibility-images-control": "Usar solución alternativa WebP si es necesario",
+ "configure-display-settings-title": "Configurar página",
+ "configure-display-panel-header": "Opciones de página",
+ "configure-display-slideaway": "Ocultar encabezado y pie de página al desplazarse o deslizar hacia abajo (desplácese hacia arriba para mostrarlos de nuevo)",
+ "configure-display-slideaway-tip": "El encabezado y el pie de página se ocultarán al desplazarse o (en páginas fijas, deslizar) hacia abajo al menos 50 píxeles, y volverán a aparecer al desplazarse hacia arriba. En las páginas fijas, también puede usar Ctrl/Command + FlechaArriba o FlechaAbajo. La opción está activada por defecto.",
+ "configure-display-uianimations": "Animar transición entre páginas de la aplicación",
+ "configure-display-uianimations-tip": "La animación está activada por defecto y puede ser desactivada desmarcando esta opción.",
+ "configure-display-homekeyfocus": "La tecla y la pestaña Inicio enfocan la barra de búsqueda (puede tener efectos secundarios en archivos que manejen la tecla Inicio)",
+ "configure-display-homekeyfocus-tip": "Enfoca automáticamente la barra de búsqueda al pulsar la tecla Inicio, y también al hacer clic o tocar en la pestaña Inicio. Habilita acceso rápido a la búsqueda con el teclado, sin importar en qué parte del artículo esté.",
+ "configure-display-openexternallinks": "Abrir enlaces externos en nuevas pestañas. Si desactiva esto, se puede romper la interfaz de kiwix-js en algunos casos específicos",
+ "configure-display-openexternallinks-tip": "Abre los enlaces externos fuera de kiwix-js (evita algunos efectos secundarios que afectan la interfaz de kiwix-js).",
+ "configure-display-selectapptheme": "Seleccionar tema de la aplicación (la inversión de contenido es experimental):",
+ "configure-display-selectapptheme-tip": "Permite la selección de temas para la aplicación o para la aplicación y el contenido cargado.",
+ "configure-display-themeoption-light": "Claro",
+ "configure-display-themeoption-dark-apponly": "Oscuro (sólo aplicación)",
+ "configure-display-themeoption-dark-invert": "Oscuro (inversión genérica)",
+ "configure-display-themeoption-dark-mwinvert": "Oscuro (inversión wikimedia)",
+ "configure-display-themeoption-auto-apponly": "Auto (sólo aplicación)",
+ "configure-display-themeoption-auto-invert": "Auto (inversión genérica)",
+ "configure-display-themeoption-auto-mwinvert": "Auto (inversión wikimedia)",
+ "configure-display-apptheme-auto-description": " (Temas automáticos se adaptan al modo oscuro/claro de su dispositivo.)",
+ "configure-display-apptheme-mwinvert-description": "* Implementa soluciones específicas para ZIMs de Wikimedia. Pruebe la opción genérica si hay errores de visualización con otros ZIMs.",
+ "configure-display-apptheme-info": "[ Mostrar artículo con tema seleccionado ]",
+ "configure-language-selector-default": "Idioma",
+ "configure-language-selector-other": "Más pronto...",
+ "configure-performance-settings-title": "Mejorar rendimiento",
+ "configure-performance-panel-header": "Acelerar acceso al archivo",
+ "configure-performance-cacheassets-description": "Kiwix JS puede acelerar la visualización de artículos almacenando en caché los activos:",
+ "configure-performance-cacheassets-true": "Guardar activos en caché (recomendado)",
+ "configure-performance-cacheassets-true-tip": "La caché proporciona acceso de alta velocidad a los activos en el ZIM, como las hojas de estilo y los scripts. Esto puede reducir el tiempo de espera para cargar los artículos.",
+ "configure-performance-cacheassets-false": "No almacenar activos en caché (también vacía la caché)",
+ "configure-performance-cacheassets-false-tip": "Idóneo para dispositivos con poca memoria, ya que la caché puede causar inestabilidad en la aplicación. Esta opción permite desactivar la caché.",
+ "configure-performance-cachestatuspanel-label": "Estado de caché",
+ "configure-performance-cachestatuspanel-cacheused": "Caché en uso",
+ "configure-performance-cachestatuspanel-assets": "Activos",
+ "configure-performance-searchrange-label": "Número máximo de resultados de búsqueda:",
+ "configure-performance-searchrange-valuetext": "Valor actual",
+ "configure-performance-searchrange-help": "por defecto 25, valores más altos aumentan el tiempo de búsqueda",
+ "configure-compatibility-settings-title": "Opciones de compatibilidiad",
+ "configure-compatibility-panel-header": "Modo de inyección de contenido",
+ "configure-compatibility-see": "Ver",
+ "configure-compatibility-modeslink": "Información técnica",
+ "configure-compatibility-helpstub": "para una explicación de la diferencia entre estos modos:",
+ "configure-compatibility-option-serviceworker": "Modo ServiceWorker (recomendado, soporta contenido dinámico y ejecución arbitraria de JS)",
+ "configure-compatibility-option-serviceworker-tip": "Este modo requiere que el navegador o el framework sean capaces de instalar un Service Worker. Permite contenido ZIM dinámico y ejecutar cualquier elemento con JavaScript sin restricciones. Funciona interceptando las llamadas Fetch del navegador y suministrando el contenido solicitado desde el ZIM.",
+ "configure-compatibility-option-serviceworkerlocal": "ServiceWorkerLocal (Service Worker local seguro, pero sin ejecución arbitraria de JavaScript)",
+ "configure-compatibility-option-serviceworkerlocal-tip": "[Sólo para extensiones de Chromium:] Este modo ejecuta el Service Worker en un sandbox local seguro, y no necesita acceso único a nuestro servidor PWA. Sin embargo, debido a las fuertes restricciones de seguridad en la API, no es capaz de ejecutar todos los fragmentos sueltos de JavaScript, por lo que el contenido ZIM dinámico puede fallar.",
+ "configure-compatibility-option-jquery": "JQuery (obsoleto: no soporta contenido dinámico, compatible con navegadores antiguos)",
+ "configure-compatibility-option-jquery-tip": "Este modo está obsoleto, pero funciona bien con los archivos de Wikipedia / WikiMedia. Funciona en todos los dispositivos.",
+ "configure-expert-settings-title": "Opciones avanzadas",
+ "configure-expert-panel-header": "Resolución de problemas y desarrollo",
+ "configure-expert-hideactivecontentwarning": "Ocultar permanentemente la advertencia de contenido activo (para usuarios experimentados)",
+ "configure-expert-hideactivecontentwarning-tip": "Se muestra una advertencia si carga un ZIM que tiene contenido activo o dinámico mientras está en modo JQuery. No se recomienda desactivar esta advertencia.",
+ "configure-expert-disabledragdrop": "Desactivar función de arrastrar y soltar (en caso de que esté causando anomalías)",
+ "configure-expert-disabledragdrop-tip": "Esta opción desactiva la función de arrastrar y soltar los archivos ZIM para cargarlos en la aplicación. No se recomienda desactivar esta función.",
+ "configure-expert-bypassappcache": "Desactivar AppCache (¡desactiva el uso sin conexión de esta aplicación!)",
+ "configure-expert-bypassappcache-tip": "ADVERTENCIA: Dejar esto marcado deshabilitará el uso sin conexión de la PWA. El ajuste borrará todas las cachés de la API de Caché, pero se utilizará la caché de activos a menos que también se desactive arriba. Facilita el desarrollo de nuevo código en la PWA.",
+ "configure-expert-resetapp-description": "Restablecer la aplicación a la configuración predeterminada y borrar todas las cachés:",
+ "configure-expert-resetapp": "Restablecer aplicación",
+ "configure-expert-resetapp-tip": "Esto devolverá la aplicación a su configuración original al iniciarla, y vaciará todas las cachés y configuraciones y cancelará el registro de los Service Workers. La aplicación se volverá a cargar.",
+ "configure-api-panel-header": "Estado de las API",
+ "api-messagechannel-available": "API MessageChannel: disponible",
+ "api-messagechannel-unavailable": "API MessageChannel: no disponible",
+ "api-serviceworker-available-registered": "API ServiceWorker: disponible, servicio registrado",
+ "api-serviceworker-available-unregistered": "API ServiceWorker: disponible, servicio no registrado",
+ "api-serviceworker-unavailable": "API ServiceWorker: no disponible",
+ "api-cookie": "Cookie",
+ "api-localstorage": "Almacenamiento local",
+ "api-storage-used-label": "API de almacenamiento:",
+ "api-none": "Ninguna",
+ "api-error-uninitialized_masculine": "No definido",
+ "api-error-uninitialized_feminine": "No definida",
+ "api-decompressor-error-loading-part1": "¡Error al cargar descompresor",
+ "api-decompressor-error-loading-part2": "!",
+ "api-decompressor-label": "API de descompresión:",
+ "api-pwa-origin-label": "Origen PWA:",
+ "api-searchprovider-label": "Proveedor de búsqueda:",
+ "api-searchprovider-title": "Título",
+ "api-searchprovider-titleonly": "Sólo título",
+ "dialog-allow-internetaccess-title": "Permitir acceso a Internet",
+ "dialog-allow-internetaccess-message1": "
Para habilitar el Service Worker,",
+ "dialog-allow-internetaccess-message2": "
Vamos a intentar cambiar al modo ServiceWorker (ahora es el modo predeterminado).",
+ "dialog-allow-internetaccess-message3": "Soporta más tipos de archivos ZIM y es mucho más robusto.
",
+ "dialog-allow-internetaccess-message4": "Necesitamos acceder una sóla vez a nuestro servidor seguro para que la aplicación pueda volver a iniciarse como una Progressive Web App (PWA). Si está disponible, la PWA funcionará sin conexión, pero se actualizará automáticamente cuando esté en línea según la especificación del Service Worker.
Puede volver al modo JQuery en cualquier momento.
ADVERTENCIA: Esto intentará acceder al siguiente servidor: ",
+ "dialog-archive-notset-title": "Ningún archivo seleccionado",
+ "dialog-archive-notset-message": "Nignún archivo está cargado: por favor, seleccione uno",
+ "dialog-article-notfound-message": "El artículo con la siguiente URL no se encontró en el archivo:",
+ "dialog-article-notfound-title": "Error: artículo no encontrado",
+ "dialog-article-readerror-message": "Error al leer el artículo con la siguiente URL:",
+ "dialog-article-readerror-title": "Error al leer artículo",
+ "dialog-cancel": "Cancelar",
+ "dialog-ok": "OK",
+ "dialog-confirm": "Confirmar",
+ "dialog-blocked-fileprotocol": "
Parece que está abriendo kiwix-js con el protocolo file://, lo cual está bloqueado por su navegador por razones de seguridad.
La forma más fácil de ejecutar esta aplicación es en forma de una extensión (se puede obtenir gratis de la tienda de extensiones de su navegador).
O bien puede abrirlo a través de un servidor web: ya sea a través de uno local (http://localhost/...) o a través de uno remoto (pero necesitará una conexión segura, p.ej.: https://webserver/...)
Otra opción es forzar a su navegador a que lo acepte (pero abrirá una brecha de seguridad): en Chrome/Edge, puede iniciarlo con el argumento de línea de comandos --allow-file-access-from-files; en Firefox, puede cambiar la opción privacy.file_unique_origin a falso en about:config
",
+ "dialog-bypassappcachecheck-message": "¡Este ajuste sólo se puede usar en el modo ServiceWorker!",
+ "dialog-bypassappcache-conflict-title": "Deseleccionar \"Desactivar AppCache\"",
+ "dialog-bypassappcache-conflict-message": "¡Debe deseleccionar la opción \"Desactivar AppCache\" antes de cambiar al modo JQuery!",
+ "dialog-devicestrage-error-title": "Error: nignún almacenamiento correspondiente",
+ "dialog-devicestorage-error-message": "No se encuentra un almacenamiento que corresponda al directorio",
+ "dialog-disabledragdrop-title": "Reiniciar la aplicación",
+ "dialog-disabledragdrop-message": "
Ahora intentaremos volver a cargar la aplicación para activar el nuevo ajuste.
(Si cancela, el ajuste sólo se aplicará la próxima vez que reinicie la aplicación.)
",
+ "dialog-error-title": "¡Error!",
+ "dialog-file-notset-message": "El archivo no está cargado correctamente",
+ "dialog-file-notset-title": "Archivo no listo",
+ "dialog-focussearchbarcheck-message": "Tenga en cuenta que esta configuración enfoca la barra de búsqueda cuando abre la página de inicio de un archivo, y por eso desactiva el deslizamiento del encabezado y pie en esta página (únicamente).",
+ "dialog-invalid-archivelocation-title": "Error: ubicación de archivos no válida",
+ "dialog-invalid-archivelocation-message": "Parece que ha puesto algunos archivos de archivo en la raíz de su tarjeta SD (o almacenamiento interno). Por favor, muévalos a un subdirectorio",
+ "dialog-invalid-zim-title": "Formato de archivo inválido",
+ "dialog-invalid-zim-message": "¡Uno o más archivos no parecen ser un archivo ZIM!",
+ "dialog-launchlocal-title": "¡Aviso!",
+ "dialog-launchlocal-message": "Esto revertirá la aplicación a la instalación local. Algunas opciones de configuración pueden perderse.
¡ATENCIÓN: Después de reinciar, es posible que no pueda volver al modo SW sin tener una conexión activa de Internet!",
+ "dialog-launchpwa-fail-title": "Confirma el reinicio de la PWA",
+ "dialog-launchpwa-fail-message": "El último intento de lanzar la PWA parece haber fallado.
¿Desea intentarlo de nuevo?",
+ "dialog-launchpwa-unsupported-title": "API ServiceWorker no disponible",
+ "dialog-launchpwa-unsupported-message": "
Desafortunadamente, su navegador no parece soportar el modo ServiceWorker, que ahora es el modo predeterminado para esta aplicación.
Puede continuar usando la aplicación en el modo JQuery (ahora obsoleto), pero tenga en cuenta que este modo sólo funciona bien con los archivos ZIM que tienen contenido estático, tales como los archivos de Wikipedia / WikiMedia o Stackexchange.
Si puede, le recomendamos que actualice su navegador a una versión que soporte el modo ServiceWorker.
",
+ "dialog-messagechannel-unsupported-title": "API MessageChannel no disponible",
+ "dialog-messagechannel-unsupported-message": "La API MessageChannel no está disponible en su dispositivo. Reactivando el modo JQuery...",
+ "dialog-old-android": "Parece que está usando un dispositivo Android con la API DeviceStorage. Debe ser una versión bastante antigua de Firefox, ya que esta API se eliminó en 2016. Tenga en cuenta que había un error en Firefox que impedía encontrar los archivos de Wikipedia en una tarjeta SD (al menos en algunos dispositivos). Por favor, ponga el archivo en el almacenamiento interno si la aplicación no puede encontrarlo.",
+ "dialog-open-externalurl-message": "
¿Quiere abrir este enlace externo?",
+ "dialog-open-externalurl-newtab": "(en una nueva pestaña)",
+ "dialog-open-externalurl-title": "Abriendo vínculo externo",
+ "dialog-other-language-message": "¡Estamos trabajando duro para traerle más idiomas! Si está interesad@ en ayudar a traducir la interfaz a su idioma, por favor, cree un tiquete en nuestro GitHub. ¡Gracias!",
+ "dialog-randomarticle-error-message": "Error al buscar un artículo aleatorio",
+ "dialog-readsplitzim-error-message": "Error al leer archivos en ZIM dividido",
+ "dialog-readzim-error-title": "Error al leer archivo(s)",
+ "dialog-readzim-error-message": "Error al leer archivo",
+ "dialog-reset-warning-title": "¡AVISO!",
+ "dialog-reset-warning-message": "¡Se restablecerá la aplicación al estado original, borrando todas las cachés y configuraciones!",
+ "dialog-scanstorage-error-message": "Error al escanear el almacenamiento del dispositivo:",
+ "dialog-scanstorage-fxos-error-message": "Si está usando el simulador de Firefox OS, por favor, ponga los archivos en un directorio \"fake-sdcard\" dentro de su perfil de Firefox (p.ej.: ~/.mozilla/firefox/xxxx.default/extensions/fxos_2_x_simulator@mozilla.org/profile/fake-sdcard/wikipedia_en_ray_charles_2015-06.zim)",
+ "dialog-scanstorage-fxos-error-title": "Error al escanear almacenamiento",
+ "dialog-server-access-check": "Verificando acceso al servidor...",
+ "dialog-server-access-check-failed": "¡El servidor no está accesible actualmente!
(Kiwix necesita acceso una vez al servidor para almacenar en caché la PWA). Por favor, inténtelo de nuevo cuando tenga una conexión a Internet estable.",
+ "dialog-serviceworker-registration-failure-title": "No se pudo registrar el Service Worker",
+ "dialog-serviceworker-registration-failure-message": "El Service Worker no se pudo registrar correctamente. Reactivando el modo JQuery... Mensaje de error:",
+ "dialog-serviceworker-registration-failure-fileprotocol": "
Parece que está accediendo a kiwix-js con el protocolo file://. Debe abrirlo con un servidor web: ya sea uno local (http://localhost/...) o uno remoto (pero necesita una conexión segura en este caso, p.ej.: https://webserver.org/...)",
+ "dialog-serviceworker-unsupported-title": "Modo ServiceWorker no disponible",
+ "dialog-serviceworker-unsupported-message": "
Desafortunadamente, su navegador no parece soportar el modo ServiceWorker, que ahora es el modo predeterminado para esta aplicación.
Puede continuar usando la aplicación en el modo JQuery (ahora obsoleto), pero tenga en cuenta que este modo sólo funciona bien con los archivos ZIM que tienen contenido estático, como los archivos ZIM de Wikipedia / Wikimedia o Stackexchange.
Si puede, le recomendamos que actualice su navegador a una versión que soporte el modo ServiceWorker.
",
+ "dialog-serviceworker-unsupported-fallback": "Use modo JQuery",
+ "dialog-serviceworker-defaultmodechange-title": "Cambio del modo de inyección de contenido predeterminado",
+ "dialog-serviceworker-defaultmodechange-message": "
Le hemos cambiado al modo ServiceWorker (ahora es el modo predeterminado). Soporta más tipos de archivo ZIM y es mucho más robusto.
Si tiene problemas con este modo, puede volver al modo JQuery (ahora obsoleto). En tal caso, por favor, informe de los problemas que ha experimentado (véase la página Información).
",
+ "dialog-slideawaycheck-message": "Esta configuración puede no funcionar correctamente en Firefox OS. Si encuentra que algunos enlaces ZIM no responden, se recomienda desactivar esta configuración.",
+ "dialog-unsupported-archivetype-message": "
Está intentando abrir un archivo de estilo Zimit, que actualmente no es compatible con esta aplicación.
Hay soporte experimental para este tipo de archivo en la PWA de Kiwix JS. Vaya a: https://pwa.kiwix.org.
Alternativamente, puede usar Kiwix Serve para servir este archivo a su navegador desde localhost. Kiwix Serve está incluido con Kiwix Desktop.
",
+ "dialog-unsupported-archivetype-title": "¡Tipo de archivo no compatible!",
+ "dialog-warning": "¡Aviso!",
+ "dialog-welcome-title": "Bienvenide",
+ "dialog-welcome-message": "¡Bienvenide a Kiwix! Esta aplicación necesita al menos un archivo ZIM en su tarjeta SD (o almacenamiento interno). Por favor, descargue uno y póngalo en el dispositivo (véase la sección Información). También compruebe que su dispositivo no está conectado a un ordenador a través del almacenamiento de dispositivos USB (que a menudo bloquea el contenido de la tarjeta SD).",
+ "about": "Información",
+ "about-app": "Acerca de la aplicación",
+ "about-app-title": "Acerca de la aplicación",
+ "about-usage": "Uso de la aplicación",
+ "about-usage-title": "Uso de la aplicación",
+ "about-search-usage": "Uso de la búsqueda",
+ "about-image-download": "Descarga de imágenes",
+ "about-privacy-policy": "Política de privacidad",
+ "about-technical-information": "Información técnica",
+ "about-official-site": "Sitio oficial:",
+ "about-zim-format": "Formato de archivos ZIM",
+ "about-fat-fs": "Descarga y almacenamiento de archivos grandes",
+ "about-contentinjection-modes": "Modos JQuery y ServiceWorker",
+ "about-feedback": "Comentarios / ayuda / contribución",
+ "about-credits": "Créditos",
+ "about-licence": "Licencia",
+ "about-other-platforms": "Otras plataformas/versiones",
+ "about-download-archives": "Descargar archivos ZIM (contenido):",
+ "about-download-language": "Descargar por idioma",
+ "about-download-index": "Índice de todos los archivos ZIM",
+ "about-download-library": "Biblioteca de archivos ZIM",
+ "about-app-para1": "Si su acceso a Internet es caro, lento, poco fiable, controlado o censurado, aún puede obtener acceso gratuito, y sin conexión a Internet, a numerosos recursos valiosos. ¡Lleve la enciclopedia más grande del mundo en su bolsillo, en cualquier idioma, o una guía de viajes cuando esté en la carretera!",
+ "about-app-para2": "Para usar esta aplicación, necesitará descargar, de forma completamente gratis, uno o más archivos (llamados archivos ZIM) del sitio web de Kiwix y almacenarlos en su dispositivo o en una memoria USB / disco externo. A continuación, podrá acceder a su contenido elegido totalmente sin conexión a Internet.",
+ "about-app-para3": "Los archivos están disponibles con contenido en muchos idiomas diferentes de fuentes como Wikipedia, Wiccionario, WikiMed, Wikiviajes, Proyecto Gutenberg, Stack Exchange, TED Talks y muchos otros. También hay archivos \"temáticos\" con temas de interés seleccionados como medicina, películas, historia, geografía, matemáticas, física, etc.",
+ "about-usage-step1": "Paso 1: Elija su contenido",
+ "about-step1-para1": "Vaya a https://library.kiwix.org (interfaz gráfica fácil de usar, vistas previas de archivos) o https://download.kiwix.org/zim/ (lista tradicional de archivos), y seleccione los archivos que le interesen en su(s) idioma(s) favorito(s). Si no tiene acceso a Internet, también puede acceder/compartir contenido desde una memoria USB.",
+ "about-step1-para2": "Para una prueba rápida, recomendamos que empiece con un pequeño archivo que contiene los artículos de Wikipedia sobre el cambio climático en español.",
+ "about-step1-para3": "Los archivos ZIM de Wikipedia con \"mini\" en el nombre son los más pequeños, ya que sólo contienen la introducción de cada artículo; \"nopic\" significa un archivo sin imágenes; \"maxi\" significa que contiene todo excepto video y audio. Los archivos más grandes sin ninguno de estos calificadores son completos. Tenga en cuenta que sólo puede ver los nombres de los archivos fácilmente en la lista tradicional de archivos .",
+ "about-step1-para4": "Antes de descargar los archivos ZIM que no son de tipo \"Wiki\", compruebe si su navegador soporta los archivos con contenido dinámico: mire en la parte inferior de la página de Configuración, en el panel API, y si ve \"API ServiceWorker: disponible, servicio registrado\" en verde, entonces la aplicación puede leer todos los tipos de ZIM (excepto Zimit: véase formato de archivo ZIM para más información). De lo contrario, debería limitarse principalmente a los archivos de MediaWiki (Wikipedia, Wikiviajes, Wikcionario...) y Stack Exchange (véase modos para una explicación).",
+ "about-step2": "Paso 2: Descargue o copie el contenido en su dispositivo",
+ "about-step2-para1": "Descargue el contenido elegido y/o cópielo en una carpeta ZIM dedicada en el almacenamiento de su dispositivo. Compruebe el tamaño antes de descargar los archivos ya que muchos tamaños de archivo son muy grandes (varios Gigabytes). Las versiones temáticas como WikiMed, o las versiones sin imágenes, son mucho más pequeñas que los archivos ZIM completos y se pueden descargar fácilmente en su navegador.",
+ "about-step2-para2": "Si no tiene suficiente almacenamiento interno, considere la posibilidad de utilizar una tarjeta microSD, un disco duro externo, o una memoria USB moderna. Para archivos más grandes (superiores a 2 GB) en dispositivos antiguos, es posible que un archivo no sea compatible si su almacenamiento está formateado con un sistema de archivos FAT (NB exFAT está bien). Vea Descarga de archivos grandes a continuación para una solución.",
+ "about-step3": "Paso 3: Arrastre y suelte el archivo en la aplicación",
+ "about-step3-para1": "Puede arrastrar y soltar el archivo de archivo en la aplicación ya abierta (si tiene un archivo dividido en partes, asegúrese de arrastrar todas las partes), o bien puede ir al menú \"Configurar\" y seleccionar su archivo ZIM.",
+ "about-step4": "Paso 4: ¡Disfrute de su contenido sin conexión a Internet!",
+ "about-search-title": "Uso de la búsqueda por título y texto completo",
+ "about-search-para1": "Hay tres tipos de búsqueda:",
+ "about-search-para2": "La búsqueda por título coincide con el inicio de un título de artículo, por lo que si busca 'Francia', obtendrá 'Francia (país)', 'Francia (desambiguación)', 'Francia (película)', etc. Este tipo de búsqueda intenta ser insensible a las mayúsculas y minúsculas, pero el número de variantes de mayúsculas y minúsculas que se prueban es necesariamente limitado. Si no se devuelven suficientes resultados, puede aumentar el número máximo de resultados de búsqueda utilizando el control deslizante de Configuración.",
+ "about-search-para3": "La búsqueda alfabética: Si escribe una letra del alfabeto en el campo de búsqueda (las mayúsculas pueden ser más útiles), se mostrará una lista alfabética de artículos que empiezan por esa letra. Esto es útil para los archivos ZIM que tienen títulos descriptivos en lugar de semánticos (por ejemplo, TED Talks). También se puede mostrar una lista de todos los títulos (hasta el límite establecido en Configuración) simplemente haciendo clic en el botón de búsqueda sin escribir nada.",
+ "about-search-para4": "La búsqueda de texto completo: Este tipo de búsqueda sólo está disponible en los navegadores de escritorio relativamente recientes, y si el archivo contiene un índice de texto completo. Si es compatible, se utilizará automáticamente, pero es más lenta que la búsqueda por título, y puede notar un retraso antes de que los resultados se añadan a los resultados de la búsqueda por título. Además, la búsqueda de texto completo no se puede utilizar si su archivo está dividido en varios fragmentos. Para ver si está disponible, mire en el panel API en la parte inferior de la página de Configuración después de haber cargado un ZIM. Si dice \"Xapian [fulltext]\", entonces debería estar habilitada automáticamente para ese ZIM.",
+ "about-remove-navbars": "Eliminación de barras de navegación",
+ "about-remove-navbars-para1": "La configuración predeterminada es que las barras de navegación superior e inferior se deslicen cuando se desplaza hacia abajo y vuelvan a aparecer cuando se desplaza hacia arriba. Sin embargo, en algunos archivos ZIM, por ejemplo, PhET, no es posible desplazarse, y las barras de navegación pueden ocultar parte del contenido. En este caso, en la mayoría de los navegadores puede deslizar decididamente hacia arriba o hacia abajo en la ventana (con el tacto o con la rueda del ratón/touchpad) para alternar la visualización de las barras de navegación. En todos los navegadores, también puede utilizar las teclas Ctrl/Cmd + FlechaArriba/FlechaAbajo.",
+ "about-image-download-para1": "Desafortunadamente, no suele ser posible descargar y guardar una imagen de un artículo ZIM utilizando el menú contextual (después de hacer clic con el botón derecho o mantener pulsada la imagen). Una solución alternativa es elegir \"Copiar imagen\" en el menú contextual, luego pegarla en cualquier software adecuado (Paint, Gimp, etc, o incluso un procesador de textos), y luego guardarla desde allí.",
+ "about-privacy-short-title": "Versión corta:",
+ "about-privacy-short-para1": "Kiwix JS funciona sin conexión a Internet y no recopila ni registra ninguno de los datos personales del usuario. Sólo recuerda su historial de navegación durante la duración de una sesión (con el fin de volver a las páginas vistadas anteriormente). Este historial se pierde al salir de la aplicación y no se registra de ninguna manera.",
+ "about-privacy-long-title": "Versión larga:",
+ "about-privacy-long-para1": "Esta aplicación sólo lee los archivos que usted selecciona explícitamente en su dispositivo junto con los archivos del propio paquete del software. Algunos archivos ZIM contienen contenido activo (scripts) que pueden, en circunstancias excepcionales, intentar ponerse en contacto con servidores externos para obtener archivos incidentales como fuentes. Tenemos una Política de Seguridad de Contenido que intenta evitar esto, pero no es posible garantizar que todas estas solicitudes se bloqueen, por ejemplo, si un ZIM contuviera código malicioso intencional que pudiera romper el sandbox. Tenga en cuenta que los scripts sólo se ejecutarán si habilita el Modo ServiceWorker (predeterminado) en Configuración. Sin embargo, si cree que su acceso a Internet no es seguro, o está siendo observado o censurado, le recomendamos que cierre completamente su acceso a Internet (datos o WiFi) antes de utilizar la aplicación.",
+ "about-privacy-long-para2": "Además, si obtuvo esta aplicación de un sitio de terceros (incluida una tienda de extensiones de navegador), entonces el operador del sitio puede rastrear su uso de la aplicación (por ejemplo, descarga, instalación, desinstalación, fecha y número de sesiones) con el fin de proporcionar estadísticas de uso anónimas y agregadas a los desarrolladores. Si esto le preocupa, debe consultar la Política de Privacidad del sitio correspondiente para obtener más información.",
+ "about-zim-format-para1": "Los archivos sin conexión utilizan el formato OpenZIM , pero tenga en cuenta que esta aplicación sólo se ha probado exhaustivamente con los archivos MediaWiki (Wikipedia, Wikivoyage, etc.), Gutenberg, Stackexchage y TED Talks. El contenido de video es compatible si su dispositivo, navegador o sistema operativo entiende el formato. Algunos ZIM utilizan una interfaz de usuario dinámica que sólo es compatible con el Modo ServiceWorker (ver más abajo).",
+ "about-zim-format-para2": "Esta aplicación no es compatible actualmente con los archivos creados por Zimit (https://youzim.it ) utilizando el formato Web Archive (WARC). Tenemos planes para habilitar este formato, pero hay varios desafíos técnicos que superar para mostrar estos archivos con la fidelidad que usted espera de Kiwix -- ver asunto #1009 . Sin embargo, hay soporte experimental para los archivos Zimit en nuestra Progressive Web App (PWA) disponible en https://pwa.kiwix.org .",
+ "about-large-archives-para1": "Versiones completas de Wikipedia pueden ser enormes: la Wikipedia francesa, alemana y española con imágenes son cada una >25GB; la Wikipedia inglesa completa con imágenes es >90GB. Para estos archivos muy grandes puede encontrar enlaces convenientes de BitTorrent proporcionados por library.kiwix.org , que pueden ser más fiables que intentar utilizar su navegador para bajar estos archivos. Puede utilizar un cliente BitTorrent de código abierto como QBittorrent con estos enlaces (instale el software antes de hacer clic en el enlace torrent).",
+ "about-large-archives-para2": "Si necesita almacenar un archivo ZIM muy grande en un sistema de archivos más antiguo formateado como FAT16 o FAT32, debe ser consciente de los límites de tamaño de archivo de esos sistemas (FAT16 < 2GiB; FAT32 < 4GiB). La mayoría de las tarjetas microSD, unidades de memoria USB o discos duros modernos están formateados como exFAT u otro sistema de archivos moderno como NTFS, que no tienen este problema. Si su archivo ZIM es más grande que el límite del sistema de archivos, es posible dividir el archivo en varios archivos de 2GiB-1 o 4GiB-1 (o más pequeños). Deberá dar una extensión de archivo a cada fragmento en el orden correcto siguiendo este patrón: *.zimaa, *.zimab, *.zimac, ..., etc.). Cuando elija este archivo en la aplicación, asegúrese de elegir todos los fragmentos, o arrástrelos todos a la aplicación.",
+ "about-large-archives-para3": "Para obtener información sobre cómo dividir los archivos, consulte Bajar un archivo ZIM (en inglés).",
+ "about-contentinjection-para1": "Dependiendo de su navegador o framework, esta aplicación puede ser capaz de ejecutarse en diferentes modos, que llamamos \"Modo ServiceWorker\" y \"Modo JQuery\". Hay una opción en Configuración que le permite seleccionar entre estos modos. A continuación damos una explicación técnica de lo que hacen estos modos:",
+ "about-contentinjection-para2": "Modo ServiceWorker: Este es el modo predeterminado. Como su nombre indica, requiere que el navegador o el framework sea capaz de instalar un Service Worker, lo cual suele ser el caso en los navegadores modernos. Funciona interceptando las llamadas Fetch (solicitudes de red) del navegador o del framework y suministrando el contenido solicitado desde el ZIM. En este modo, el contenido se lee y se suministra tal cual desde el archivo al navegador. El contenido dinámico (por ejemplo, JavaScript) y las interfaces de usuario propietarias son totalmente compatibles con este modo. Sin embargo, los archivos Zimit no son compatibles actualmente debido a un conflicto entre el Service Worker de Kiwix JS y el Service Worker WARC (pero puede utilizar la PWA para obtener soporte experimental, véase más arriba). Este modo puede parecer inicialmente un poco más lento que el modo JQuery hasta que se almacenen en caché los activos de uso común, pero pronto iguala al modo JQuery en velocidad, al menos en los navegadores modernos. Sin embargo, los navegadores antiguos como IE11 son incompatibles con este modo, y la aplicación debe estar funcionando en un contexto seguro (https:, localhost, o ciertas extensiones de navegador). Aunque este modo no es compatible de forma nativa con las extensiones de Mozilla (Firefox), proporcionamos una solución funcional al volver a lanzar la extensión como una Progressive Web App (PWA). Tenga en cuenta que este modo no se puede ejecutar con el protocolo file: (pero sólo IE11 y el antiguo Edge permiten que la aplicación se ejecute al lanzar index.html desde el sistema de archivos).",
+ "about-contentinjection-para3": "Modo ServiceWorkerLocal: Este modo sólo está disponible en las extensiones de Chromium. Es lo mismo que arriba, pero debido a las restricciones de seguridad muy estrictas en estas extensiones, no se puede ejecutar ningún JavaScript en línea o declaraciones eval. Desafortunadamente, los ZIM modernos pueden tener tal contenido dinámico, y por lo tanto la funcionalidad puede estar restringida en este modo. Sin embargo, es más seguro: el contenido está en un sandbox y no se requiere ningún acceso al servidor para habilitar el Service Worker. Está protegido de la ejecución de código en línea a costa de la pérdida de algunas características en los ZIM dinámicos.",
+ "about-contentinjection-para4": "Modo JQuery: Este modo ahora está obsoleto (y de hecho no requiere JQuery). Se mantiene para la compatibilidad con los navegadores antiguos o los frameworks que no pueden ejecutar Service Workers. El modo tiene limitaciones que significan que sólo se puede mostrar contenido estático, como el que se encuentra en los archivos de Wikipedia / WikiMedia y (por ahora) Stackexchange. Es una forma de insertar artículos extraídos del ZIM en el DOM (documento del navegador) inyectando el contenido en un iframe o pestaña. A continuación, utilizamos métodos DOM nativos, o a veces JQuery, para analizar el HTML del artículo e insertar los activos necesarios (imágenes, hojas de estilo, escuchadores de eventos para los hipervínculos, etc.). En los dispositivos antiguos, el recorrido del DOM puede ser lento, pero se compensa porque no extraemos ni ejecutamos activos JavaScript (lo que sería técnicamente extremadamente complicado). Como resultado, para los archivos WikiMedia este modo suele ser bastante rápido. Por otro lado, los ZIM que tienen una interfaz de usuario dinámica propietaria (como Gutenberg o TED Talks) sólo se admiten parcialmente en este modo: la interfaz de usuario no funciona, pero los artículos se pueden buscar y cargar desde la barra de búsqueda.",
+ "about-feedback-para1": "Agradecemos los comentarios constructivos y las sugerencias de mejora. Consideraremos las solicitudes de nuevas funciones, pero es aún mejor si usted mism@ puede contribuir a mejorar la aplicación. El código fuente está en GitHub , y agradecemos las Pull Requests (pero abra un issue y discuta su propuesta primero).",
+ "about-feedback-para2": "El rastreador de los bugs y problemas también está en GitHub. Lo utilizamos como nuestra hoja de ruta. Alternativamente, puede enviar sus comentarios por correo electrónico. En todos los casos, si está informando de un error, por favor, dé tantos detalles como pueda: qué dispositivo está utilizando, qué versión de Kiwix, qué archivo, qué artículos, etc.",
+ "about-feedback-para3": "Si le gusta el proyecto Kiwix y lo utiliza, por favor, considere hacer una donación en la página https://support.kiwix.org para ayudar a mantener nuestros servidores, archivos ZIM y aplicaciones.",
+ "about-feedback-other-help": "También puede ayudar:",
+ "about-feedback-other-para1": "Añadiendo artículos a Wikipedia o mejorando los existentes, mediante la edición de artículos ;",
+ "about-feedback-other-para2": "Participando en el proyecto Kiwix.",
+ "about-credits-gratitude": "Sinceros agradecimiento a:
Kelson y toda la comunidad de Kiwix por darnos la bienvenida a este proyecto;
Los equipos y colaboradores de Wikipedia por ayudar a hacer que el conocimiento sea accesible para todo el mundo;
Todos los desarrolladores de las bibliotecas y herramientas que utilizamos, por publicarlas como software libre (véase el párrafo sobre bibliotecas y herramientas).
Esta aplicación está licenciada bajo la Licencia GPL v3:
Kiwix es software libre: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
Kiwix se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Vea la Licencia Pública General de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con Kiwix (archivo LICENSE-GPLv3.txt). Si no es así, consulte https://www.gnu.org/licenses/.
",
+ "about-libraries": "Principales bibliotecas y herramientas utilizadas:",
+ "about-other-clients": "Otros clientes de Kiwix existen en varias plataformas como aplicaciones de escritorio y móviles para Linux, Windows, Android e iOS. También tenemos una PWA con muchas funciones adicionales, y que funciona sin necesidad de conexión a Internet, basada en el código de Kiwix JS: https://pwa.kiwix.org .",
+ "about-official-download": "Vea el sitio oficial de descargas: https://www.kiwix.org/applications/ .",
+ "about-back-contents": "↑ Volver al Índice",
+ "alert-activecontentwarning-title": "No se puede mostrar contenido activo:",
+ "alert-activecontentwarning-part1": "Este ZIM no es totalmente compatible con el modo JQuery. El contenido puede estar disponible haciendo clic en el botón de búsqueda arriba (o escribiendo una letra del alfabeto), o bien",
+ "alert-activecontentwarning-part2": "cambiando al modo ServiceWorker",
+ "alert-activecontentwarning-part3": "si su plataforma lo soporta.",
+ "alert-activecontentwarning-part4": "Ocultar permanentemente",
+ "alert-update-version": "Versión",
+ "alert-update-available": "está lista para instalar. (Vuelva a iniciar la aplicación para instalarla.)",
+ "alert-download-message": "Descargar Si no se inicia la descarga, pulse el siguiente enlace:",
+ "spinner-caching": "Almacenando",
+ "spinner-caching-assets": "Almacenando activos...",
+ "spinner-loading": "Cargando"
+ }
+ }
+}
diff --git a/dist/i18n/fr.jsonp.js b/dist/i18n/fr.jsonp.js
new file mode 100644
index 000000000..62a7f3bde
--- /dev/null
+++ b/dist/i18n/fr.jsonp.js
@@ -0,0 +1,268 @@
+/* eslint-disable quote-props, quotes, indent */
+document.localeJson = {
+ "fr": {
+ "translation": {
+ "title": "Kiwix",
+ "sub-title": "Navigateur de contenu hors-ligne",
+ "home": "Accueil",
+ "home-search": "Chercher",
+ "home-welcome-text": "Lorsque vous avez chargé un fichier ZIM, vous pouvez rechercher le contenu via le champ ci-dessus.",
+ "home-btn-random-tip": "Afficher un article au hasard",
+ "home-btn-random": "Aléatoire",
+ "home-btn-back": "Retour",
+ "home-btn-fileselect": "Sélectionner fichier(s) ZIM",
+ "home-btn-forward": "Suivant",
+ "home-btn-top": "Haut",
+ "home-prefix-placeholder": "Chercher...",
+ "home-prefix-tip": "Vous pouvez chercher dans votre fichier ZIM via ce champ de recherche. Il vous proposera les titres d'articles qui **commençent** par les lettres que vous tapez.",
+ "configure": "Configuration",
+ "configure-title": "Configuration",
+ "configure-about-usage-link": "Informations (Utilisation)",
+ "configure-btn-library": "Bibliothèque ZIM",
+ "configure-btn-library-tip": "Cela affiche une bibliothèque graphique d'archives ZIM à télécharger si votre navigateur peut l'ouvrir. Sinon, il affiche une bibliothèque de téléchargement en mode texte. Si vous utilisez l'extension Chromium en mode ServiceWorkerLocal, vous ne pourrez utiliser que la seconde (passez en mode ServiceWorker pour la version graphique complète).",
+ "configure-btn-folderselect": "Sélectionner un dossier",
+ "configure-changed-content-note": "(Re-sélecctionnez le dossier s'il y a de nouveau contenu sur votre appareil)",
+ "configure-btn-rescan": "Réanalyser",
+ "configure-about-rescan-tip": "Réanalyser la carte SD et la mémoire interne",
+ "configure-select-file-numbers": "archive(s) trouvée(s) dans le lieu sélectionné. ",
+ "configure-download-instructions": "Cette application a besoin d'un fichier ZIM pour fonctionner. Pour des instructions complètes, veuillez consulter la section",
+ "configure-select-instructions": "Veuillez sélectionner ou glisser-déposer un fichier .zim (ou tous les .zimaa, .zimab etc. dans le cas d'un fichier ZIM découpé) :",
+ "configure-select-file-instructions": "Veuillez sélectionner l'archive que vous souhaitez utiliser :",
+ "configure-select-file-first-option": "Sélectionner une archive...",
+ "configure-selectordisplay": "Glisser-déposer un nouveau fichier ZIM, ou",
+ "configure-selectordisplay-link": "afficher le sélecteur de fichiers",
+ "configure-static-content": "Seuls les ZIM avec un contenu statique (de type Wiki) sont pris en charge en mode JQuery. ",
+ "configure-supportedarchives": "Pour se renseigner sur la compatibilité ZIM, voir la section",
+ "configure-compatibility-images-title": "Gestion des images",
+ "configure-compatibility-images-label": "Remplacer les images WebP par des éléments canvas pour éviter les mesures anti-empreintes (configuration déterminée automatiquement, peut être désactivée) :",
+ "configure-compatibility-images-tip": "Pour les navigateurs qui ne prennent pas en charge nativement le WebP et qui mettent en œuvre des mesures anti-empreintes, nous ne pouvons pas extraire les données d'image des éléments canvas produits par le polyfill, nous utilisons donc le canvas comme substitut de l'image. Si ce n'est pas nécessaire, la désactivation de cette option peut améliorer les performances.",
+ "configure-compatibility-images-control": "Utiliser workaround pour les images WebP si nécessaire",
+ "configure-display-settings-title": "Configurer l'affichage",
+ "configure-display-panel-header": "Options de l'affichage",
+ "configure-display-slideaway": "Masquer l'en-tête et le pied de page lors du défilement ou du balayage vers le bas (défilez légèrement vers le haut pour les afficher à nouveau)",
+ "configure-display-slideaway-tip": "L'en-tête et le pied de page disparaîtront lors du défilement ou du balayage vers le bas d'au moins 50 pixels, et réapparaîtront lorsque vous remonterez. Sur les pages fixes, vous pouvez également utiliser Ctrl/Command + Flèche haut ou bas. L'option est maintenant activée par défaut.",
+ "configure-display-uianimations": "Animer la transition entre les pages de l'application",
+ "configure-display-uianimations-tip": "L'animation est activée par défaut et peut être désactivée en décochant cette option.",
+ "configure-display-homekeyfocus": "La touche et l'onglet Accueil mettent le focus sur la barre de recherche (peut avoir des effets secondaires chez les fichiers qui gèrent la touche Accueil)",
+ "configure-display-homekeyfocus-tip": "La barre de recherche se focalise automatiquement lorsque vous appuyez sur la touche Accueil, ainsi que lorsque vous cliquez ou tapez sur l'onglet Accueil. Active l'accès rapide à la recherche par clavier, quel que soit l'endroit où vous vous trouvez dans l'article.",
+ "configure-display-openexternallinks": "Ouvrir les liens externes dans de nouveaux onglets. Si vous désactivez cette option, l'interface de kiwix-js peut être cassée dans certains cas spécifiques",
+ "configure-display-openexternallinks-tip": "Ouvre les liens externes en dehors de kiwix-js (évite certains effets secondaires affectant l'interface de kiwix-js).",
+ "configure-display-selectapptheme": "Sélectionner le thème de l'application (le mode inversé est expérimentale) :",
+ "configure-display-selectapptheme-tip": "Permet de sélectionner un thème pour l'application ou pour l'application et le contenu chargé.",
+ "configure-display-themeoption-light": "Clair",
+ "configure-display-themeoption-dark-apponly": "Sombre (application uniquement)",
+ "configure-display-themeoption-dark-invert": "Sombre (inversion générique)",
+ "configure-display-themeoption-dark-mwinvert": "Sombre (inversion Wikimédia)",
+ "configure-display-themeoption-auto-apponly": "Automatique (application uniquement)",
+ "configure-display-themeoption-auto-invert": "Automatique (inversion générique)",
+ "configure-display-themeoption-auto-mwinvert": "Automatique (inversion Wikimédia)",
+ "configure-display-apptheme-auto-description": " (Les thèmes automatiques s'adaptent au mode sombre/clair de votre appareil.)",
+ "configure-display-apptheme-mwinvert-description": "* Implémente des solutions spécifiques aux ZIM de Wikimédia. Essayez l'option générique si vous rencontrez des problèmes d'affichage avec d'autres ZIM.",
+ "configure-display-apptheme-info": "[ Afficher l'article avec le thème sélectionné ]",
+ "configure-language-selector-default": "Langue",
+ "configure-language-selector-other": "Bientôt plus...",
+ "configure-performance-settings-title": "Améliorer les performances",
+ "configure-performance-panel-header": "Accélérer l'accès au fichier",
+ "configure-performance-cacheassets-description": "Kiwix JS peut accélérer l'affichage des articles en mettant en cache les ressources :",
+ "configure-performance-cacheassets-true": "Mettre en cache les ressources (recommandé)",
+ "configure-performance-cacheassets-true-tip": "Le cache permet un accès à haute vitesse aux ressources du ZIM, telles que les feuilles de style et les scripts. Cela peut réduire le temps d'attente pour le chargement des articles.",
+ "configure-performance-cacheassets-false": "Ne pas mettre en cache les ressources (vide également le cache)",
+ "configure-performance-cacheassets-false-tip": "Idéal pour les appareils à faible mémoire, car le cache peut provoquer des instabilités dans l'application. Cette option permet de désactiver le cache.",
+ "configure-performance-cachestatuspanel-label": "État du cache",
+ "configure-performance-cachestatuspanel-cacheused": "Cache utilisé",
+ "configure-performance-cachestatuspanel-assets": "Ressources",
+ "configure-performance-searchrange-label": "Nombre maximal de résultats de recherche :",
+ "configure-performance-searchrange-valuetext": "Valeur actuelle",
+ "configure-performance-searchrange-help": "par défaut 25, des valeurs plus élevées augmentent le temps de recherche",
+ "configure-compatibility-settings-title": "Options de compatibilité",
+ "configure-compatibility-panel-header": "Mode d'injection de contenu",
+ "configure-compatibility-see": "Voir",
+ "configure-compatibility-modeslink": "Informations techniques",
+ "configure-compatibility-helpstub": "pour une explication de la différence entre ces modes :",
+ "configure-compatibility-option-serviceworker": "Mode ServiceWorker (recommandé, prend en charge le contenu dynamique et l'exécution arbitraire de JS)",
+ "configure-compatibility-option-serviceworker-tip": "Ce mode nécessite que le navigateur ou le framework soit capable d'installer un Service Worker. Il permet le contenu ZIM dynamique et l'exécution de n'importe quel élément avec JavaScript sans restrictions. Il fonctionne en interceptant les appels Fetch du navigateur et en fournissant le contenu demandé à partir du ZIM.",
+ "configure-compatibility-option-serviceworkerlocal": "Mode ServiceWorkerLocal (Service Worker local sécurisé, mais pas d'exécution arbitraire de JavaScript)",
+ "configure-compatibility-option-serviceworkerlocal-tip": "[Pour les extensions Chromium uniquement :] Ce mode exécute le Service Worker dans un bac à sable local sécurisé, et n'a pas besoin d'un accès unique à notre serveur PWA. Cependant, en raison des fortes restrictions de sécurité de l'API, il n'est pas capable d'exécuter tous les fragments de JavaScript lâches, de sorte que le contenu ZIM dynamique peut échouer.",
+ "configure-compatibility-option-jquery": "JQuery (obsolète : ne prend pas en charge le contenu dynamique, compatible avec les anciens navigateurs)",
+ "configure-compatibility-option-jquery-tip": "Ce mode est obsolète, mais fonctionne bien avec les fichiers Wikipédia / WikiMédia. Il fonctionne sur tous les appareils.",
+ "configure-expert-settings-title": "Options avancées",
+ "configure-expert-panel-header": "Dépannage et développement",
+ "configure-expert-hideactivecontentwarning": "Masquer l'avertissement de contenu actif (pour les utilisateurs expérimentés)",
+ "configure-expert-hideactivecontentwarning-tip": "Un avertissement s'affiche si vous chargez un ZIM qui contient du contenu actif ou dynamique en mode JQuery. Il n'est pas recommandé de désactiver cet avertissement.",
+ "configure-expert-disabledragdrop": "Désactiver le glisser-déposer (si cela provoque des anomalies)",
+ "configure-expert-disabledragdrop-tip": "Cette option désactive la fonctionnalité de glisser-déposer des fichiers ZIM pour les charger dans l'application. Il n'est pas recommandé de désactiver cette fonctionnalité.",
+ "configure-expert-bypassappcache": "Désactiver AppCache (désactive l'utilisation hors ligne de cette application !)",
+ "configure-expert-bypassappcache-tip": "AVERTISSEMENT : Désactiver cette option désactivera l'utilisation hors ligne de la PWA. Le paramètre effacera tous les caches de l'API de Cache, mais le cache des actifs sera utilisé à moins qu'il ne soit également désactivé ci-dessus. Il facilite le développement de nouveaux codes dans la PWA.",
+ "configure-expert-resetapp-description": "Réinitialiser l'application à configuration d'origine et vider tous les caches :",
+ "configure-expert-resetapp": "Réinitialiser l'application",
+ "configure-expert-resetapp-tip": "Cela réinitialisera l'application à sa configuration d'origine au démarrage, videra tous les caches et les paramètres et annulera l'enregistrement des Service Workers. L'application sera rechargée.",
+ "configure-api-panel-header": "État des API",
+ "api-messagechannel-available": "API MessageChannel : disponible",
+ "api-messagechannel-unavailable": "API MessageChannel : non disponible",
+ "api-serviceworker-available-registered": "API ServiceWorker : disponible, service enregistré",
+ "api-serviceworker-available-unregistered": "API ServiceWorker : disponible, service non enregistré",
+ "api-serviceworker-unavailable": "API ServiceWorker : non disponible",
+ "api-cookie": "Cookie",
+ "api-localstorage": "Stockage local",
+ "api-storage-used-label": "API de stockage :",
+ "api-none": "Aucun",
+ "api-error-uninitialized_masculine": "Pas défini",
+ "api-error-uninitialized_feminine": "Pas définie",
+ "api-decompressor-error-loading-part1": "Erreur lors du chargement du décompresseur",
+ "api-decompressor-error-loading-part2": "!",
+ "api-decompressor-label": "API de décompression :",
+ "api-pwa-origin-label": "Origine PWA :",
+ "api-searchprovider-label": "Moteur de recherche :",
+ "api-searchprovider-title": "Titre",
+ "api-searchprovider-titleonly": "Titre uniquement",
+ "dialog-allow-internetaccess-title": "Autoriser l'accès à Internet",
+ "dialog-allow-internetaccess-message1": "
Pour activer le Service Worker, nous",
+ "dialog-allow-internetaccess-message2": "
Nous allons essayer de passer en mode ServiceWorker (c'est maintenant le mode par défaut).",
+ "dialog-allow-internetaccess-message3": "Il prend en charge plus de types de fichiers ZIM et est beaucoup plus robuste.
",
+ "dialog-allow-internetaccess-message4": "avons besoin d'accéder une seule fois à notre serveur sécurisé pour que l'application puisse redémarrer en tant que Progressive Web App (PWA). Si elle est disponible, la PWA fonctionnera hors ligne, mais se mettra à jour automatiquement lorsqu'elle sera en ligne selon la spécification du Service Worker.
Vous pouvez revenir au mode JQuery à tout moment.
AVERTISSEMENT : Cela tentera d'accéder au serveur suivant : ",
+ "dialog-archive-notset-title": "Aucun fichier sélectionné",
+ "dialog-archive-notset-message": "Aucun fichier n'est chargé : veuillez en sélectionner un",
+ "dialog-article-notfound-message": "L'article avec l'URL suivante n'a pas été trouvé dans le fichier :",
+ "dialog-article-notfound-title": "Erreur : article non trouvé",
+ "dialog-article-readerror-message": "Erreur lors de la lecture de l'article avec l'URL suivante :",
+ "dialog-article-readerror-title": "Erreur lors de la lecture de l'article",
+ "dialog-cancel": "Annuler",
+ "dialog-ok": "OK",
+ "dialog-confirm": "Confirmer",
+ "dialog-blocked-fileprotocol": "
Il semble que vous ouvrez kiwix-js avec le protocole file://, ce qui est bloqué par votre navigateur pour des raisons de sécurité.
La façon la plus simple d'exécuter cette application est sous la forme d'une extension (vous pouvez l'obtenir gratuitement dans le magasin d'extensions de votre navigateur).
Vous pouvez également l'ouvrir via un serveur Web : soit via un serveur local (http://localhost/...) ou via un serveur distant (mais vous aurez besoin d'une connexion sécurisée, p. ex. : https://webserver/...)
Une autre option consiste à forcer votre navigateur à l'accepter (mais cela ouvrira une faille de sécurité) : dans Chrome/Edge, vous pouvez le démarrer avec l'argument de ligne de commande --allow-file-access-from-files ; dans Firefox, vous pouvez changer l'option privacy.file_unique_origin à false dans about:config
",
+ "dialog-bypassappcachecheck-message": "Ce paramètre ne peut être utilisé que dans le mode ServiceWorker !",
+ "dialog-bypassappcache-conflict-title": "Désélectionnez « Désactiver AppCache »",
+ "dialog-bypassappcache-conflict-message": "Vous devez désélectionner « Désactiver AppCache » avant de passer en mode JQuery !",
+ "dialog-devicestrage-error-title": "Erreur : aucun stockage correspondant",
+ "dialog-devicestorage-error-message": "Aucun stockage correspondant n'a été trouvé dans le répertoire",
+ "dialog-disabledragdrop-title": "Redémarrer l'application",
+ "dialog-disabledragdrop-message": "
Nous allons maintenant redémarrer l'application pour activer le nouveau paramètre.
(Si vous annulez, le paramètre ne sera appliqué que la prochaine fois que vous redémarrerez l'application.)
",
+ "dialog-error-title": "Erreur !",
+ "dialog-file-notset-message": "Le fichier n'est pas chargé correctement",
+ "dialog-file-notset-title": "Fichier non chargé",
+ "dialog-focussearchbarcheck-message": "Veuillez noter que ce paramètre met le focus sur la barre de recherche lorsque vous allez sur la page d'accueil d'un ZIM, désactivant le glissement de l'en-tête et du pied sur cette page (uniquement).",
+ "dialog-invalid-archivelocation-title": "Erreur : emplacement d'archive non valide",
+ "dialog-invalid-archivelocation-message": "Il semble que vous ayez placé des fichiers d'archive à la racine de votre carte SD (ou de votre stockage interne). Veuillez les déplacer dans un sous-répertoire",
+ "dialog-invalid-zim-title": "Format de fichier non valide",
+ "dialog-invalid-zim-message": "Un ou plusieurs fichiers ne semblent pas être un fichier ZIM !",
+ "dialog-launchlocal-title": "Avertissement !",
+ "dialog-launchlocal-message": "Cela réinitialisera l'application à l'état d'installation locale. Certains paramètres peuvent être perdus.
ATTENTION : Après le redémarrage, vous ne pourrez peut-être pas revenir au mode SW sans une connexion Internet active !",
+ "dialog-launchpwa-fail-title": "Confirmer le redémarrage de la PWA",
+ "dialog-launchpwa-fail-message": "La dernière tentative de lancement de la PWA semble avoir échoué.
Malheureusement, votre navigateur ne semble pas prendre en charge le mode ServiceWorker, qui est maintenant le mode par défaut pour cette application.
Vous pouvez continuer à utiliser l'application en mode JQuery (maintenant obsolète), mais veuillez noter que ce mode ne fonctionne bien qu'avec les fichiers ZIM qui ont un contenu statique, comme les fichiers ZIM de Wikipédia / WikiMédia ou Stackexchange.
Si possible, nous vous recommandons de mettre à jour votre navigateur vers une version prenant en charge le mode ServiceWorker.
",
+ "dialog-messagechannel-unsupported-title": "API MessageChannel non disponible",
+ "dialog-messagechannel-unsupported-message": "L'API MessageChannel n'est pas disponible sur votre appareil. Redémarrage en mode JQuery...",
+ "dialog-old-android": "Il paraît que vous utilisez un appareil Android avec l'API DeviceStorage. Il doit s'agir d'une version assez ancienne de Firefox, car cette API a été supprimée en 2016. Veuillez noter qu'il y avait un bogue dans Firefox qui empêchait de trouver les fichiers de Wikipédia sur une carte SD (du moins sur certains appareils). Veuillez donc placer le fichier dans le stockage interne si l'application ne peut pas le trouver.",
+ "dialog-open-externalurl-message": "
Voulez-vous ouvrir ce lien externe ?
",
+ "dialog-open-externalurl-newtab": "(dans un nouvel onglet)",
+ "dialog-open-externalurl-title": "Ouverture d'un lien externe",
+ "dialog-other-language-message": "Nous travaillons dur pour vous apporter plus de langues ! Si vous souhaitez aider à traduire l'interface dans votre langue, veuillez créer un ticket sur notre GitHub. Merci !",
+ "dialog-randomarticle-error-message": "Erreur lors de la recherche d'un article aléatoire",
+ "dialog-readsplitzim-error-message": "Erreur lors de la lecture des fichiers dans l'archive découpée",
+ "dialog-readzim-error-title": "Erreur : lecture de fichier(s)",
+ "dialog-readzim-error-message": "Erreur lors de la lecture du fichier ZIM",
+ "dialog-reset-warning-title": "ATTENTION !",
+ "dialog-reset-warning-message": "Cela réinitialisera l'application à l'état d'installation originale. Tous les caches et paramètres seront effacés !",
+ "dialog-scanstorage-error-message": "Erreur lors de l'analyse du stockage de l'appareil :",
+ "dialog-scanstorage-fxos-error-message": "Si vous utilisez le simulateur Firefox OS, veuillez placer les archives dans un répertoire « fake-sdcard » à l'intérieur de votre profil Firefox (par exemple : ~/.mozilla/firefox/xxxx.default/extensions/fxos_2_x_simulator@mozilla.org/profile/fake-sdcard/wikipedia_en_ray_charles_2015-06.zim)",
+ "dialog-scanstorage-fxos-error-title": "Erreur d'analyse du stockage",
+ "dialog-server-access-check": "Vérification de l'accès au serveur...",
+ "dialog-server-access-check-failed": "Le serveur n'est pas accessible actuellement !
(Kiwix a besoin d'accéder une fois au serveur pour mettre en cache la PWA). Veuillez réessayer lorsque vous aurez une connexion Internet stable.",
+ "dialog-serviceworker-registration-failure-title": "Échec de l'enregistrement du Service Worker",
+ "dialog-serviceworker-registration-failure-message": "Le Service Worker n'a pas pu être enregistré correctement. Redémarrage en mode JQuery... Message d'erreur :",
+ "dialog-serviceworker-registration-failure-fileprotocol": "
Il semble que vous ouvrez kiwix-js avec le protocole file://. Vous devez l'ouvrir avec un serveur Web : soit un serveur local (http://localhost/...) ou un serveur distant (mais vous aurez besoin d'une connexion sécurisée dans ce cas, p. ex. : https://webserver.org/...)",
+ "dialog-serviceworker-unsupported-title": "Mode ServiceWorker non disponible",
+ "dialog-serviceworker-unsupported-message": "
Malheureusement, votre navigateur ne semble pas prendre en charge le mode ServiceWorker, qui est maintenant le mode par défaut pour cette application.
Vous pouvez continuer à utiliser l'application en mode JQuery (maintenant obsolète), mais veuillez noter que ce mode ne fonctionne bien qu'avec les fichiers ZIM qui ont un contenu statique, comme les fichiers ZIM de Wikipédia / WikiMédia ou Stackexchange.
Si possible, nous vous recommandons de mettre à jour votre navigateur vers une version prenant en charge le mode ServiceWorker.
",
+ "dialog-serviceworker-unsupported-fallback": "Utiliser le mode JQuery",
+ "dialog-serviceworker-defaultmodechange-title": "Changement du mode d'injection de contenu par défaut",
+ "dialog-serviceworker-defaultmodechange-message": "
Nous vous avons basculé en mode ServiceWorker (c'est maintenant le mode par défaut). Il prend en charge plus de types de fichiers ZIM et est beaucoup plus robuste.
Si vous rencontrez des problèmes avec ce mode, vous pouvez revenir au mode JQuery (maintenant obsolète). Dans ce cas, veuillez signaler les problèmes que vous avez rencontrés (voir la page Informations).
",
+ "dialog-slideawaycheck-message": "Ce paramètre peut ne pas fonctionner correctement chez Firefox OS. Si vous constatez que certains liens ZIM deviennent inactifs, veuillez désactiver ce paramètre.",
+ "dialog-unsupported-archivetype-message": "
Vous essayez d'ouvrir un fichier de style Zimit, qui n'est actuellement pas pris en charge par cette application.
Il existe une prise en charge expérimentale de ce type de fichier dans la PWA de Kiwix JS. Allez sur : https://pwa.kiwix.org.
Alternativement, vous pouvez utiliser Kiwix Serve pour servir ce fichier à votre navigateur à partir de localhost. Kiwix Serve est inclus dans Kiwix Desktop.
",
+ "dialog-unsupported-archivetype-title": "Type de fichier non pris en charge !",
+ "dialog-warning": "Avertissement",
+ "dialog-welcome-title": "Bienvenue",
+ "dialog-welcome-message": "Bienvenue dans Kiwix ! Cette application a besoin d'au moins un fichier ZIM sur votre carte SD (ou stockage interne). Veuillez en télécharger un et le placer sur l'appareil (voir la section Informations). Veuillez également vérifier que votre appareil n'est pas connecté à un ordinateur via le stockage USB (ce qui bloque souvent le contenu de la carte SD).",
+ "about": "Informations",
+ "about-app": "À propos",
+ "about-app-title": "À propos de l'application",
+ "about-usage": "Utilisation",
+ "about-usage-title": "Utilisation de l'application",
+ "about-search-usage": "Utilisation de la recherche",
+ "about-image-download": "Téléchargement d'images",
+ "about-privacy-policy": "Politique de confidentialité",
+ "about-technical-information": "Informations techniques",
+ "about-official-site": "Site officiel :",
+ "about-zim-format": "Format de fichier ZIM",
+ "about-fat-fs": "Téléchargement et stockage de gros fichiers",
+ "about-contentinjection-modes": "Modes JQuery et ServiceWorker",
+ "about-feedback": "Commentaires / aide / contribution",
+ "about-credits": "Crédits",
+ "about-licence": "Licence",
+ "about-other-platforms": "Autres plateformes/versions",
+ "about-download-archives": "Télécharger des archives ZIM (contenu) :",
+ "about-download-language": "Télécharger par langue",
+ "about-download-index": "Index de tous les fichiers ZIM",
+ "about-download-library": "Bibliothèque de fichiers ZIM",
+ "about-app-para1": "Si votre accès à Internet est coûteux, lent, peu fiable, contrôlé ou censuré, vous pouvez quand même accéder gratuitement, et hors ligne, à de nombreuses ressources précieuses. Emportez la plus grande encyclopédie du monde dans votre poche, dans n'importe quelle langue, ou un guide de voyage lorsque vous êtes sur la route !",
+ "about-app-para2": "Pour utiliser cette application, vous devrez télécharger, gratuitement, un ou plusieurs archives (appelés fichiers ZIM) depuis le site web de Kiwix et les stocker sur votre appareil ou sur une clé USB/disque externe. Vous pourrez ensuite accéder au contenu de votre choix totalement hors ligne.",
+ "about-app-para3": "Les archives sont disponibles avec du contenu dans de nombreuses langues différentes, provenant de sources telles que Wikipédia, Wiktionnaire, WikiMed, Wikivoyage, Projet Gutenberg, Stack Exchange, TED Talks et bien d'autres. Il existe également des archives « thématiques » avec des sujets d'intérêt sélectionnés, tels que la médecine, le cinéma, l'histoire, la géographie, les mathématiques, la physique, etc.",
+ "about-usage-step1": "Étape 1 : Choisissez votre contenu",
+ "about-step1-para1": "Allez sur https://library.kiwix.org (interface graphique facile à utiliser, aperçus d'archives) ou sur https://download.kiwix.org/zim/ (liste de fichiers traditionnelle), et sélectionnez les archives qui vous intéressent dans votre (vos) langue(s) préférée(s). Si vous n'avez pas accès à Internet, vous pouvez également accéder/partager du contenu à partir d'une clé USB.",
+ "about-step1-para2": "Pour un test rapide, nous vous recommandons de commencer par une petite archive contenant les articles Wikipédia sur le changement climatique en français.",
+ "about-step1-para3": "Les archives de Wikipédia dont le nom de fichier contient « mini » sont les plus petites, car elles ne contiennent que l'introduction de chaque article ; « nopic » signifie que les images ont été retirées ; « maxi » signifie que l'archive contient tout sauf la vidéo et l'audio. Les plus grands fichiers sans aucun de ces qualificatifs sont la version complète. Notez que vous ne pouvez voir les noms de fichiers facilement que dans la liste de fichiers traditionnelle .",
+ "about-step1-para4": "Avant de télécharger les fichiers ZIM qui ne sont pas de type \"Wiki\", vérifiez si votre navigateur prend en charge les archives avec du contenu dynamique : regardez en bas de la page de Configuration, dans le panneau API, et si vous voyez « API ServiceWorker : disponible, service enregistré » en vert, alors l'application peut lire tous les types de fichiers ZIM (sauf Zimit : voir format d'archive ZIM pour plus d'informations). Sinon, vous devriez vous en tenir aux archives MediaWiki (Wikipédia, Wikivoyage, Wiktionnaire...) et Stack Exchange (voir modes ci-dessous pour une explication).",
+ "about-step2": "Étape 2 : Téléchargez ou copiez le contenu sur votre appareil",
+ "about-step2-para1": "Téléchargez le contenu choisi et/ou copiez-le dans un dossier ZIM dédié sur le stockage de votre appareil. Vérifiez la taille avant de télécharger des archives car de nombreux fichiers sont très volumineux (plusieurs gigaoctets). Les versions thématiques telles que WikiMed, ou les versions sans images, sont beaucoup plus petites que les archives complètes de Wikipédia et peuvent être facilement téléchargées dans votre navigateur.",
+ "about-step2-para2": "Si vous n'avez pas assez d'espace de stockage interne, envisagez d'utiliser une carte microSD moderne, un disque dur externe ou une clé USB. Pour les archives plus volumineuses (supérieures à 2 Go) sur les anciens appareils, il est possible qu'une archive ne soit pas prise en charge si votre stockage est formaté avec un système de fichiers FAT (NB exFAT est correct). Voir Téléchargement de grandes archives ci-dessous pour une solution.",
+ "about-step3": "Étape 3 : Glissez-déposez le fichier dans l'application",
+ "about-step3-para1": "Vous pouvez glisser-déposer le fichier dans l'application ouverte (si vous avez un fichier découpé en plusieurs parties, assurez-vous de glisser toutes les parties), ou vous pouvez aller dans le menu « Configurer » et sélectionner votre fichier ZIM.",
+ "about-step4": "Étape 4 : Profitez de votre contenu hors ligne !",
+ "about-search-title": "Utilisation de la recherche par titre et texte intégral",
+ "about-search-para1": "Il y a trois types de recherche :",
+ "about-search-para2": "La recherche par titre correspond au début d'un titre d'article, de sorte que si vous cherchez « France », vous obtiendrez « France (pays) », « France (désambiguïsation) », « France (film) », etc. Ce type de recherche tente d'être insensible à la casse, mais le nombre de variantes de casse testées est nécessairement limité. Si vous ne trouvez pas assez de résultats, vous pouvez augmenter le nombre maximal de résultats de recherche à l'aide du curseur de la page de Configuration.",
+ "about-search-para3": "Recherche alphabétique: Si vous tapez une lettre de l'alphabet dans le champ de recherche (les majuscules peuvent être plus utiles), une liste alphabétique des articles commençant par cette lettre s'affichera. Cette fonction est utile pour les archives du ZIM dont les titres sont plus descriptifs que sémantiques (par exemple, TED Talks). Vous pouvez également afficher une liste de tous les titres (jusqu'à la limite fixée dans la Configuration) en cliquant simplement sur le bouton de recherche sans rien taper.",
+ "about-search-para4": "La recherche de texte intégral n'est disponible que dans les navigateurs de bureau relativement récents, et si l'archive contient un index de texte intégral. Si elle est prise en charge, elle sera utilisée automatiquement, mais elle est plus lente que la recherche par titre, et vous pouvez remarquer un délai avant que les résultats ne soient ajoutés aux résultats de la recherche par titre. De plus, la recherche de texte intégral ne peut pas être utilisée si votre fichier est découpé en pluseurs parties. Pour voir si elle est disponible, regardez dans le panneau API en bas de la page de Configuration après avoir chargé un ZIM. S'il indique « Xapian [fulltext] », alors elle devrait être activée automatiquement pour ce ZIM.",
+ "about-remove-navbars": "Suppression des barres de navigation",
+ "about-remove-navbars-para1": "Le paramètre par défaut est que les barres de navigation supérieure et inférieure disparaissent lorsque vous faites défiler vers le bas et réapparaissent lorsque vous faites défiler vers le haut. Cependant, dans certaines archives ZIM, par exemple PhET, il n'est pas possible de faire défiler, et les barres de navigation peuvent masquer une partie du contenu. Dans ce cas, dans la plupart des navigateurs, vous pouvez faire glisser de manière décisive vers le haut ou vers le bas sur la fenêtre (avec le toucher ou avec la molette de la souris/touchpad) pour basculer l'affichage des barres de navigation. Dans tous les navigateurs, vous pouvez également utiliser les touches Ctrl/Cmd + FlècheHaut/FlècheBas.",
+ "about-image-download-para1": "Malheureusement, il n'est généralement pas possible de télécharger et d'enregistrer une image à partir d'un article ZIM en utilisant le menu contextuel (après un clic droit ou un appui long sur l'image). Une solution de contournement consiste à choisir « Copier l'image » dans le menu contextuel, puis à la coller dans un logiciel approprié (Paint, Gimp, etc., ou même un traitement de texte), puis à l'enregistrer à partir de là.",
+ "about-privacy-short-title": "Version courte :",
+ "about-privacy-short-para1": "Kiwix JS fonctionne hors ligne et ne collecte ni ne stocke aucune donnée personnelle de l'utilisateur. Il se souvient uniquement de l'historique de navigation pendant la durée d'une session (afin de pouvoir revenir aux pages précédemment visitées). Cet historique est perdu lorsque vous quittez l'application et n'est enregistré d'aucune manière.",
+ "about-privacy-long-title": "Version plus longue :",
+ "about-privacy-long-para1": "Cette application ne lit que les fichiers que vous sélectionnez explicitement sur votre appareil, ainsi que les fichiers du propre paquet logiciel. Quelques fichiers ZIM contiennent du contenu actif (scripts) qui peuvent, dans des circonstances exceptionnelles, tenter de contacter des serveurs externes pour obtenir des fichiers accessoires. Nous avons une politique de sécurité du contenu qui tente d'éviter cela, mais il n'est pas possible de garantir que toutes ces demandes seront bloquées, par exemple si un ZIM contenait du code malveillant intentionnel qui pourrait contourner le bac à sable. Veuillez noter que les scripts ne s'exécuteront que si vous activez le mode ServiceWorker (réglé par défaut) dans la Configuration. Cependant, si vous pensez que votre accès à Internet n'est pas sûr, ou si vous êtes surveillé ou censuré, nous vous recommandons de fermer complètement votre accès à Internet (données ou WiFi) avant d'utiliser l'application.",
+ "about-privacy-long-para2": "En outre, si vous avez obtenu cette application à partir d'un site tiers (y compris la boutique d'extensions du navigateur), l'opérateur du site peut suivre votre utilisation de l'application (par exemple, téléchargement, installation, désinstallation, date et nombre de sessions) afin de fournir des statistiques d'utilisation anonymes et agrégées aux développeurs. Si cela vous préoccupe, vous devez consulter la politique de confidentialité du site correspondant pour plus d'informations.",
+ "about-zim-format-para1": "Les fichiers hors ligne utilisent le format OpenZIM , mais veuillez noter que cette application n'a été testée qu'avec les fichiers de MediaWiki (Wikipédia, Wikivoyage, etc.), Gutenberg, Stackexchage et TED Talks. Le contenu vidéo est pris en charge si votre appareil, votre navigateur ou votre système d'exploitation comprend le format. Certains ZIM utilisent une interface utilisateur dynamique qui n'est prise en charge que dans le mode ServiceWorker (voir ci-dessous).",
+ "about-zim-format-para2": "Cette application ne prend pas en charge actuellement les fichiers créés par Zimit (https://youzim.it ) utilisant le format Web Archive (WARC). Nous avons l'intention de prendre en charge ce format, mais il y a plusieurs défis techniques à relever pour afficher ces fichiers avec la fidélité que vous attendez de Kiwix — voir ticket #1009 . Cependant, il existe une prise en charge expérimentale des fichiers Zimit dans notre Progressive Web App (PWA) disponible au téléchargement sur https://pwa.kiwix.org .",
+ "about-large-archives-para1": "Les versions complètes de Wikipédia peuvent être énormes : les versions française, allemande et espagnole de Wikipédia avec des images sont chacune >25 Go ; la version anglaise complète de Wikipédia avec des images est >90 Go. Pour ces très gros fichiers, vous pouvez trouver des liens BitTorrent pratiques fournis par library.kiwix.org , qui peuvent être plus fiables que d'essayer d'utiliser votre navigateur pour télécharger ces fichiers. Vous pouvez utiliser un client BitTorrent open source comme QBittorrent avec ces liens (installez le logiciel avant de cliquer sur le lien torrent).",
+ "about-large-archives-para2": "Si vous avez besoin de stocker un très gros fichier ZIM sur un système de fichiers plus ancien formaté comme FAT16 ou FAT32, vous devez être conscient des limites de taille de fichier de ces systèmes (FAT16 < 2GiB ; FAT32 < 4GiB). La plupart des cartes microSD, des clés USB ou des disques durs modernes sont formatés en exFAT ou dans un autre système de fichiers moderne comme NTFS, qui n'ont pas ce problème. Si votre fichier ZIM est plus grand que la limite du système de fichiers, vous pouvez le diviser en plusieurs fichiers de 2GiB-1 ou 4GiB-1 (ou plus petits). Vous devrez donner une extension de fichier à chaque fragment dans l'ordre correct en suivant ce modèle : *.zimaa, *.zimab, *.zimac, ..., etc. Lorsque vous sélectionnez ce fichier dans l'application, assurez-vous de sélectionner tous les fragments, ou faites-les tous glisser dans l'application.",
+ "about-large-archives-para3": "Pour plus d'informations sur la façon de diviser les fichiers, voir Télécharger un fichier ZIM (en anglais).",
+ "about-contentinjection-para1": "En fonction de votre navigateur ou de votre framework, cette application peut être capable de fonctionner dans différents modes, que nous appelons « Mode ServiceWorker » et « Mode JQuery ». Il y a une option dans la Configuration qui vous permet de sélectionner entre ces modes. Nous donnons ci-dessous une explication technique de ce que font ces modes :",
+ "about-contentinjection-para2": "Mode ServiceWorker : C’est le mode par défaut. Comme son nom l'indique, il nécessite que le navigateur ou le framework soit capable d'installer un Service Worker, ce qui est généralement le cas dans les navigateurs modernes. Il fonctionne en interceptant les appels Fetch (requêtes réseau) du navigateur ou du framework et en fournissant le contenu demandé depuis le ZIM. Dans ce mode, le contenu est lu et fourni tel quel depuis le fichier au navigateur. Le contenu dynamique (par exemple, JavaScript) et les interfaces utilisateur propriétaires sont entièrement compatibles avec ce mode. Cependant, les fichiers Zimit ne sont pas actuellement pris en charge en raison d'un conflit entre le Service Worker de Kiwix JS et le Service Worker WARC (mais vous pouvez utiliser la PWA pour obtenir un support expérimental, voir ci-dessus). Ce mode peut sembler initialement un peu plus lent que le mode JQuery jusqu'à ce que les ressources couramment utilisées soient mises en cache, mais il égale rapidement le mode JQuery en vitesse, du moins dans les navigateurs modernes. Cependant, les navigateurs anciens comme IE11 sont incompatibles avec ce mode, et l'application doit fonctionner dans un contexte sécurisé (https:, localhost, ou certaines extensions de navigateur). Bien que ce mode ne soit pas compatible nativement avec les extensions Mozilla (Firefox), nous fournissons une solution fonctionnelle en relançant l'extension comme une Progressive Web App (PWA). Notez que ce mode ne peut pas être exécuté avec le protocole file: (mais seul IE11 et l'ancien Edge permettent à l'application de fonctionner en lançant index.html depuis le système de fichiers).",
+ "about-contentinjection-para3": "Mode ServiceWorkerLocal : Ce mode n'est disponible que dans les extensions Chromium. Il est identique au mode ci-dessus, mais en raison des restrictions de sécurité très strictes dans ces extensions, aucun JavaScript en ligne ou déclarations eval ne peut être exécuté. Malheureusement, les ZIM modernes peuvent avoir un tel contenu dynamique, et donc la fonctionnalité peut être limitée dans ce mode. Cependant, il est plus sûr : le contenu est dans un bac à sable et aucun accès au serveur n'est requis pour activer le Service Worker. Il est protégé contre l'exécution de code en ligne au détriment de la perte de certaines fonctionnalités dans les ZIM dynamiques.",
+ "about-contentinjection-para4": "Mode JQuery : Ce mode est maintenant obsolète (et en fait ne nécessite pas JQuery). Il est maintenu pour la compatibilité avec les anciens navigateurs ou les frameworks qui ne peuvent pas exécuter de Service Workers. Le mode a des limitations qui signifient qu'il ne peut afficher que du contenu statique, comme celui que l'on trouve dans les fichiers Wikipédia / WikiMédia et (pour l'instant) Stackexchange. C'est une façon d'insérer des articles extraits du ZIM dans le DOM (document du navigateur) en injectant le contenu dans un iframe ou un onglet. Ensuite, nous utilisons des méthodes DOM natives, ou parfois JQuery, pour analyser le HTML de l'article et insérer les ressources nécessaires (images, feuilles de style, écouteurs d'événements pour les hyperliens, etc.). Sur les anciens appareils, le parcours du DOM peut être lent, mais cela est compensé par le fait que nous n'extraions ni n'exécutons les ressources JavaScript (ce qui serait techniquement extrêmement compliqué). En conséquence, pour les fichiers WikiMédia, ce mode est généralement assez rapide. D'autre part, les ZIM qui ont une interface utilisateur dynamique propriétaire (comme Gutenberg ou TED Talks) ne sont pris en charge que partiellement dans ce mode : l'interface utilisateur ne fonctionne pas, mais les articles peuvent être recherchés et chargés à partir de la barre de recherche.",
+ "about-feedback-para1": "Nous apprécions les commentaires constructifs et les suggestions d'amélioration. Nous examinerons les demandes de nouvelles fonctionnalités, mais ce sera encore mieux si vous pouvez contribuer à améliorer l'application vous-même. Le code source est sur GitHub , et nous apprécions les Pull Requests (mais ouvrez d'abord un ticket pour discuter de votre proposition).",
+ "about-feedback-para2": "Le trackeur de bugs et de problèmes est également sur GitHub. Nous l'utilisons comme feuille de route. Alternativement, vous pouvez envoyer vos commentaires par courriel. Dans tous les cas, si vous signalez un bogue, veuillez fournir autant de détails que possible : quel appareil vous utilisez, quelle version de Kiwix, quel fichier, quels articles, etc.",
+ "about-feedback-para3": "Si vous aimez le projet Kiwix et que vous l'utilisez, pensez à faire un don à l'adress https://support.kiwix.org pour aider à maintenir nos serveurs, nos fichiers ZIM et nos applications.",
+ "about-feedback-other-help": "Vous pouvez également aider :",
+ "about-feedback-other-para1": "en ajoutant des articles à Wikipédia ou en améliorant ceux qui existent déjà, en éditant des articles ;",
+ "about-feedback-other-para2": "en participant au projet Kiwix.",
+ "about-credits-gratitude": "Nos sincères remerciements à :
Kelson et toute la communauté de Kiwix pour nous avoir accueillis dans ce projet ;
Les équipes et les contributeurs de Wikipédia pour avoir contribué à rendre la connaissance accessible à tous ;
Tous les développeurs des bibliothèques et outils que nous utilisons, pour les avoir publiés en tant que logiciels libres (voir la section sur les bibliothèques et outils).
Kiwix est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation, soit la version 3 de la Licence, soit (à votre choix) toute version ultérieure.
Kiwix est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADÉQUATION À UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec Kiwix (fichier LICENSE-GPLv3.txt). Si ce n'est pas le cas, consultez https://www.gnu.org/licenses/.
",
+ "about-libraries": "Principales bibliothèques et outils utilisés :",
+ "about-other-clients": "D'autres clients Kiwix existent sur plusieurs plateformes, comme les applications de bureau et mobiles pour Linux, Windows, Android et iOS. Nous avons également une PWA avec de nombreuses fonctionnalités supplémentaires, qui fonctionne hors ligne, basée sur le code de Kiwix JS : https://pwa.kiwix.org .",
+ "about-official-download": "Voir le site officiel de téléchargement : https://www.kiwix.org/applications/ .",
+ "about-back-contents": "↑ Retour à l'index",
+ "alert-activecontentwarning-title": "Impossible d'afficher le contenu actif :",
+ "alert-activecontentwarning-part1": "Ce ZIM n'est pas entièrement pris en charge en mode JQuery. Le contenu peut être disponible en cliquant sur le bouton de recherche ci-dessus (ou en tapant une lettre de l'alphabet), ou bien",
+ "alert-activecontentwarning-part2": "en passant au mode ServiceWorker",
+ "alert-activecontentwarning-part3": "si votre plateforme le prend en charge.",
+ "alert-activecontentwarning-part4": "Masquer en permanence",
+ "alert-update-version": "La version",
+ "alert-update-available": "est prête à être installée. (Relancez l'application pour installer.)",
+ "alert-download-message": "Télécharger Si le téléchargement ne démarre pas, veuillez cliquer sur le lien suivant :",
+ "spinner-caching": "Mise en cache :",
+ "spinner-caching-assets": "Mise en cache...",
+ "spinner-loading": "Chargement"
+ }
+ }
+}
diff --git a/dist/index.html b/dist/index.html
new file mode 100644
index 000000000..bb99a238d
--- /dev/null
+++ b/dist/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Redirection to index.html
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dist/manifest.fx.v3.json b/dist/manifest.fx.v3.json
new file mode 100644
index 000000000..cd081a61e
--- /dev/null
+++ b/dist/manifest.fx.v3.json
@@ -0,0 +1,47 @@
+{
+ "manifest_version": 3,
+ "name": "Kiwix",
+ "version": "3.11.1",
+
+ "description": "Kiwix Offline Browser",
+
+ "icons": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "48": "www/img/icons/kiwix-48.png",
+ "64": "www/img/icons/kiwix-64.png",
+ "90": "www/img/icons/kiwix-90.png",
+ "128": "www/img/icons/kiwix-128.png"
+ },
+
+ "action": {
+ "default_icon": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "64": "www/img/icons/kiwix-64.png"
+ },
+ "default_title": "Kiwix"
+ },
+
+ "background": {
+ "scripts": ["backgroundscript.js"]
+ },
+
+ "content_security_policy": {
+ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';",
+ "sandbox": "sandbox allow-scripts allow-downloads allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
+ },
+
+ "web_accessible_resources": [{
+ "resources": ["www/index.html", "www/article.html"],
+ "matches": ["https://*.kiwix.org/*"]
+ }],
+
+ "author": "Kiwix",
+ "homepage_url": "https://www.kiwix.org",
+ "offline_enabled": true
+}
diff --git a/dist/manifest.json b/dist/manifest.json
new file mode 100644
index 000000000..6ce0a3333
--- /dev/null
+++ b/dist/manifest.json
@@ -0,0 +1,47 @@
+{
+ "manifest_version": 3,
+ "name": "Kiwix",
+ "version": "3.11.1",
+
+ "description": "Kiwix Offline Browser",
+
+ "icons": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "48": "www/img/icons/kiwix-48.png",
+ "64": "www/img/icons/kiwix-64.png",
+ "90": "www/img/icons/kiwix-90.png",
+ "128": "www/img/icons/kiwix-128.png"
+ },
+
+ "action": {
+ "default_icon": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "64": "www/img/icons/kiwix-64.png"
+ },
+ "default_title": "Kiwix"
+ },
+
+ "background": {
+ "service_worker": "service-worker.js"
+ },
+
+ "content_security_policy": {
+ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';",
+ "sandbox": "sandbox allow-scripts allow-downloads allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
+ },
+
+ "web_accessible_resources": [{
+ "resources": ["www/index.html", "www/article.html"],
+ "matches": ["https://*.kiwix.org/*"]
+ }],
+
+ "author": "Kiwix",
+ "homepage_url": "https://www.kiwix.org",
+ "offline_enabled": true
+}
diff --git a/dist/manifest.v2.json b/dist/manifest.v2.json
new file mode 100644
index 000000000..115dea9f2
--- /dev/null
+++ b/dist/manifest.v2.json
@@ -0,0 +1,47 @@
+{
+ "manifest_version": 2,
+ "name": "Kiwix",
+ "version": "3.11.1",
+
+ "description": "Kiwix : offline Wikipedia reader",
+
+ "icons": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "48": "www/img/icons/kiwix-48.png",
+ "64": "www/img/icons/kiwix-64.png",
+ "90": "www/img/icons/kiwix-90.png",
+ "128": "www/img/icons/kiwix-128.png"
+ },
+
+ "browser_action": {
+ "default_icon": {
+ "16": "www/img/icons/kiwix-16.png",
+ "19": "www/img/icons/kiwix-19.png",
+ "32": "www/img/icons/kiwix-32.png",
+ "38": "www/img/icons/kiwix-38.png",
+ "64": "www/img/icons/kiwix-64.png"
+ },
+ "default_title": "Kiwix"
+ },
+
+ "applications": {
+ "gecko": {
+ "id": "kiwix-html5-unlisted@kiwix.org"
+ }
+ },
+
+ "web_accessible_resources": ["www/index.html"],
+
+ "background": {
+ "scripts": ["backgroundscript.js"]
+ },
+
+ "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
+
+ "author": "mossroy",
+ "homepage_url": "https://www.kiwix.org",
+ "offline_enabled": true
+}
diff --git a/dist/manifest.webapp b/dist/manifest.webapp
new file mode 100644
index 000000000..fbe8c8373
--- /dev/null
+++ b/dist/manifest.webapp
@@ -0,0 +1,32 @@
+{
+ "version": "3.11.1",
+ "name": "Kiwix",
+ "description": "Offline Wikipedia Viewer, and more",
+ "launch_path": "/www/index.html",
+ "icons": {
+ "16": "/www/img/icons/kiwix-16.png",
+ "32": "/www/img/icons/kiwix-32.png",
+ "48": "/www/img/icons/kiwix-48.png",
+ "60": "/www/img/icons/kiwix-60.png",
+ "90": "/www/img/icons/kiwix-90.png",
+ "120": "/www/img/icons/kiwix-120.png",
+ "128": "/www/img/icons/kiwix-128.png",
+ "256": "/www/img/icons/kiwix-256.png"
+ },
+ "developer": {
+ "name": "Mossroy , Peter-x and other Kiwix contributors",
+ "url": "https://github.com/kiwix"
+ },
+ "default_locale": "en",
+ "permissions": {
+ "device-storage:sdcard": {
+ "description": "Required to read Wikipedia archives",
+ "access": "readonly"
+ },
+ "geolocation": {
+ "description": "Necessary only for the 'articles nearby' feature"
+ }
+ },
+ "type": "privileged",
+ "origin": "app://kiwix.org"
+}
diff --git a/dist/package.json b/dist/package.json
new file mode 100644
index 000000000..534f32ec5
--- /dev/null
+++ b/dist/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "kiwix-js",
+ "productName": "Kiwix JS",
+ "version": "3.11.1",
+ "description": "Kiwix JS offline ZIM archive reader",
+ "type": "module",
+ "scripts": {
+ "serve": "vite",
+ "preview": "del-cli dist && npm run build-src && vite preview",
+ "prebuild": "del-cli dist",
+ "build": "rollup --config --file dist/www/js/bundle.js && rollup --config --file dist/www/js/bundle.min.js --environment BUILD:production",
+ "prebuild-min": "del-cli dist",
+ "build-min": "rollup --config --file dist/www/js/bundle.min.js --environment BUILD:production",
+ "prebuild-src": "del-cli dist",
+ "build-src": "rollup --config --file dist/www/js/bundle.js",
+ "del-dist": "del-cli dist",
+ "test": "testcafe all ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "test-unit-browsers": "testcafe firefox:headless,chrome:headless,edge:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "test-unit-firefox": "testcafe firefox:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "test-unit-chrome": "testcafe chrome:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "test-unit-edge": "testcafe edge:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "test-unit-mac": "testcafe safari ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
+ "web-server": "http-server -p 8080 .",
+ "test-e2e": "npm run test-e2e-firefox && npm run test-e2e-chrome && npm run test-e2e-edge && npm run test-e2e-iemode",
+ "test-e2e-firefox": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/firefox/firefox.e2e.runner.js'",
+ "test-e2e-chrome": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/chrome/chromium.e2e.runner.js'",
+ "test-e2e-edge": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/edge/microsoftEdge.e2e.runner.js'",
+ "test-e2e-iemode": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/edge/ieMode.e2e.runner.js'"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "dependencies": {
+ "@fortawesome/fontawesome-free": "5.9.0",
+ "@types/fs-extra": "^9.0.11",
+ "bootstrap": "^4.6.2",
+ "core-js": "3.30.2",
+ "jquery": "^3.7.0"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.21.5",
+ "@babel/core": "^7.21.5",
+ "@babel/preset-env": "^7.21.5",
+ "@rollup/plugin-babel": "^6.0.3",
+ "@rollup/plugin-commonjs": "^24.1.0",
+ "@rollup/plugin-node-resolve": "^15.0.2",
+ "@rollup/plugin-replace": "^5.0.2",
+ "@rollup/plugin-terser": "^0.4.1",
+ "@vitejs/plugin-legacy": "^4.0.3",
+ "babel-plugin-polyfill-corejs3": "^0.7.1",
+ "del-cli": "^5.0.0",
+ "eslint": "^8.42.0",
+ "eslint-config-standard": "^17.1.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-n": "^16.0.0",
+ "eslint-plugin-promise": "^6.1.1",
+ "http-server": "^14.1.1",
+ "mocha": "^10.2.0",
+ "qunit": "^2.19.4",
+ "rollup": "^3.21.3",
+ "rollup-plugin-copy": "^3.4.0",
+ "selenium-webdriver": "^4.11.1",
+ "start-server-and-test": "^2.0.0",
+ "testcafe": "^3.0.0",
+ "vite": "^4.3.4"
+ }
+}
diff --git a/dist/service-worker.js b/dist/service-worker.js
new file mode 100644
index 000000000..73d8945ca
--- /dev/null
+++ b/dist/service-worker.js
@@ -0,0 +1,440 @@
+/**
+ * service-worker.js : Service Worker implementation,
+ * in order to capture the HTTP requests made by an article, and respond with the
+ * corresponding content, coming from the archive
+ *
+ * Copyright 2022 Mossroy, Jaifroid and contributors
+ * Licence GPL v3:
+ *
+ * This file is part of Kiwix.
+ *
+ * Kiwix is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public Licence as published by
+ * the Free Software Foundation, either version 3 of the Licence, or
+ * (at your option) any later version.
+ *
+ * Kiwix is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public Licence for more details.
+ *
+ * You should have received a copy of the GNU General Public Licence
+ * along with Kiwix (file LICENSE-GPLv3.txt). If not, see
+ */
+'use strict';
+
+/* global chrome */
+
+/**
+ * App version number - ENSURE IT MATCHES VALUE IN init.js
+ * DEV: Changing this will cause the browser to recognize that the Service Worker has changed, and it will
+ * download and install a new copy; we have to hard code this here because it is needed before any other file
+ * is cached in APP_CACHE
+ */
+const appVersion = '3.11.1';
+
+/**
+ * The name of the Cache API cache in which assets defined in regexpCachedContentTypes will be stored
+ * The value is sometimes needed here before it can be passed from app.js, so we have to duplicate it
+ * @type {String}
+ */
+// DEV: Ensure this matches the name defined in app.js
+const ASSETS_CACHE = 'kiwixjs-assetsCache';
+
+/**
+ * The name of the application cache to use for caching online code so that it can be used offline
+ * The cache name is made up of the prefix below and the appVersion: this is necessary so that when
+ * the app is updated, a new cache is created. The new cache will start being used after the user
+ * restarts the app, when we will also delete the old cache.
+ * @type {String}
+ */
+const APP_CACHE = 'kiwixjs-appCache-' + appVersion;
+
+/**
+ * A global Boolean that governs whether ASSETS_CACHE will be used
+ * Caching is on by default but can be turned off by the user in Configuration
+ * @type {Boolean}
+ */
+var useAssetsCache = true;
+
+/**
+ * A global Boolean that governs whether the APP_CACHE will be used
+ * This is an expert setting in Configuration
+ * @type {Boolean}
+ */
+var useAppCache = true;
+
+/**
+ * A regular expression that matches the Content-Types of assets that may be stored in ASSETS_CACHE
+ * Add any further Content-Types you wish to cache to the regexp, separated by '|'
+ * @type {RegExp}
+ */
+var regexpCachedContentTypes = /text\/css|text\/javascript|application\/javascript/i;
+
+/**
+ * A regular expression that excludes listed schemata from caching attempts
+ * As of 08-2019 the chrome-extension: schema is incompatible with the Cache API
+ * 'example-extension' is included to show how to add another schema if necessary
+ * @type {RegExp}
+ */
+var regexpExcludedURLSchema = /^(?:file|chrome-extension|example-extension):/i;
+
+/**
+ * Pattern for ZIM file namespace: see https://wiki.openzim.org/wiki/ZIM_file_format#Namespaces
+ * In our case, there is also the ZIM file name used as a prefix in the URL
+ * @type {RegExp}
+ */
+const regexpZIMUrlWithNamespace = /(?:^|\/)([^/]+\/)([-ABCIJMUVWX])\/(.+)/;
+
+/**
+ * Pattern to parse the first offset of a "range" request header
+ * NB: this only reads the first offset of the first byte range, where the spec allows several ranges, and several units.
+ * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
+ * But, in our case, we send a header to tell the browser we only accept the bytes unit.
+ * I did not see multiple ranges asked by a browser.
+ *
+ * @type {RegExp}
+ */
+const regexpByteRangeHeader = /^\s*bytes=(\d+)-/;
+
+/**
+ * The list of files that the app needs in order to run entirely from offline code
+ */
+const precacheFiles = [
+ '.', // This caches the redirect to www/index.html, in case a user launches the app from its root directory
+ 'manifest.json',
+ 'service-worker.js',
+ 'i18n/en.jsonp.js',
+ 'i18n/es.jsonp.js',
+ 'i18n/fr.jsonp.js',
+ 'www/css/app.css',
+ 'www/css/kiwixJS_invert.css',
+ 'www/css/kiwixJS_mwInvert.css',
+ 'www/css/transition.css',
+ 'www/img/icons/kiwix-256.png',
+ 'www/img/icons/kiwix-32.png',
+ 'www/img/icons/kiwix-60.png',
+ 'www/img/spinner.gif',
+ 'www/img/Icon_External_Link.png',
+ 'www/index.html',
+ 'www/article.html',
+ 'www/library.html',
+ 'www/main.html',
+ 'www/js/bundle.js',
+ 'www/js/init.js',
+ 'www/js/bootstrap.bundle.min.js',
+ 'www/js/bootstrap.bundle.min.js.map',
+ 'www/css/bootstrap.min.css',
+ 'www/css/bootstrap.min.css.map',
+ 'www/js/jquery.slim.min.js',
+ 'www/js/jquery.slim.min.map'
+];
+
+if ('WebAssembly' in self) {
+ precacheFiles.push(
+ 'www/js/xzdec-wasm.wasm',
+ 'www/js/zstddec-wasm.wasm',
+ 'www/js/libzim-wasm.js',
+ 'www/js/libzim-wasm.wasm'
+ );
+} else {
+ precacheFiles.push(
+ 'www/js/libzim-asm.js'
+ );
+}
+
+/**
+ * If we're in a Chromium extension, add a listener to launch the tab when the icon is clicked
+ */
+if (typeof chrome !== 'undefined' && chrome.action) {
+ chrome.action.onClicked.addListener(function () {
+ var newURL = chrome.runtime.getURL('www/index.html');
+ chrome.tabs.create({ url: newURL });
+ });
+}
+
+// Process install event
+self.addEventListener('install', function (event) {
+ console.debug('[SW] Install Event processing');
+ // DEV: We can't skip waiting because too many params are loaded at an early stage from the old file before the new one can activate...
+ // self.skipWaiting();
+ // We try to circumvent the browser's cache by adding a header to the Request, and it ensures all files are explicitly versioned
+ var requests = precacheFiles.map(function (urlPath) {
+ return new Request(urlPath + '?v' + appVersion, { cache: 'no-cache' });
+ });
+ if (!regexpExcludedURLSchema.test(requests[0].url)) {
+ event.waitUntil(caches.open(APP_CACHE).then(function (cache) {
+ return Promise.all(
+ requests.map(function (request) {
+ return fetch(request).then(function (response) {
+ // Fail on 404, 500 etc
+ if (!response.ok) throw Error('Could not fetch ' + request.url);
+ return cache.put(request.url.replace(/\?v[^?/]+$/, ''), response);
+ }).catch(function (err) {
+ console.error('There was an error pre-caching files', err);
+ });
+ })
+ );
+ }));
+ }
+});
+
+// Allow sw to control current page
+self.addEventListener('activate', function (event) {
+ // "Claiming" the ServiceWorker is necessary to make it work right away,
+ // without the need to reload the page.
+ // See https://developer.mozilla.org/en-US/docs/Web/API/Clients/claim
+ event.waitUntil(self.clients.claim());
+ console.debug('[SW] Claiming clients for current page');
+ // Check all the cache keys, and delete any old caches
+ event.waitUntil(
+ caches.keys().then(function (keyList) {
+ return Promise.all(keyList.map(function (key) {
+ console.debug('[SW] Current cache key is ' + key);
+ if (key !== APP_CACHE && key !== ASSETS_CACHE) {
+ console.debug('[SW] App updated to version ' + appVersion + ': deleting old cache');
+ return caches.delete(key);
+ } else {
+ return Promise.resolve();
+ }
+ }));
+ })
+ );
+});
+
+let outgoingMessagePort = null;
+let fetchCaptureEnabled = false;
+
+/**
+ * Intercept selected Fetch requests from the browser window
+ */
+self.addEventListener('fetch', function (event) {
+ // Only cache GET requests
+ if (event.request.method !== 'GET') return;
+ var rqUrl = event.request.url;
+ var urlObject = new URL(rqUrl);
+ // Test the URL with parameters removed
+ var strippedUrl = urlObject.pathname;
+ // Select cache depending on request format
+ var cache = /\.zim\//i.test(strippedUrl) ? ASSETS_CACHE : APP_CACHE;
+ if (cache === ASSETS_CACHE && !fetchCaptureEnabled) return;
+ // For APP_CACHE assets, we should ignore any querystring (whereas it should be conserved for ZIM assets,
+ // especially .js assets, where it may be significant). Anchor targets are irreleveant in this context.
+ if (cache === APP_CACHE) rqUrl = strippedUrl;
+ event.respondWith(
+ // First see if the content is in the cache
+ fromCache(cache, rqUrl).then(function (response) {
+ // The response was found in the cache so we respond with it
+ return response;
+ }, function () {
+ // The response was not found in the cache so we look for it in the ZIM
+ // and add it to the cache if it is an asset type (css or js)
+ if (cache === ASSETS_CACHE && regexpZIMUrlWithNamespace.test(strippedUrl)) {
+ const range = event.request.headers.get('range');
+ return fetchUrlFromZIM(urlObject, range).then(function (response) {
+ // Add css or js assets to ASSETS_CACHE (or update their cache entries) unless the URL schema is not supported
+ if (regexpCachedContentTypes.test(response.headers.get('Content-Type')) &&
+ !regexpExcludedURLSchema.test(event.request.url)) {
+ event.waitUntil(updateCache(ASSETS_CACHE, rqUrl, response.clone()));
+ }
+ return response;
+ }).catch(function (msgPortData) {
+ console.error('Invalid message received from app.js for ' + strippedUrl, msgPortData);
+ return msgPortData;
+ });
+ } else {
+ // It's not an asset, or it doesn't match a ZIM URL pattern, so we should fetch it with Fetch API
+ return fetch(event.request).then(function (response) {
+ // If request was successful, add or update it in the cache, but be careful not to cache the ZIM archive itself!
+ if (!regexpExcludedURLSchema.test(event.request.url) && !/\.zim\w{0,2}$/i.test(strippedUrl)) {
+ event.waitUntil(updateCache(APP_CACHE, rqUrl, response.clone()));
+ }
+ return response;
+ }).catch(function (error) {
+ console.debug('[SW] Network request failed and no cache.', error);
+ });
+ }
+ })
+ );
+});
+
+/**
+ * Handle custom commands sent from app.js
+ */
+self.addEventListener('message', function (event) {
+ if (event.data.action) {
+ if (event.data.action === 'init') {
+ // On 'init' message, we initialize the outgoingMessagePort and enable the fetchEventListener
+ outgoingMessagePort = event.ports[0];
+ fetchCaptureEnabled = true;
+ } else if (event.data.action === 'disable') {
+ // On 'disable' message, we delete the outgoingMessagePort and disable the fetchEventListener
+ outgoingMessagePort = null;
+ fetchCaptureEnabled = false;
+ }
+ var oldValue;
+ if (event.data.action.assetsCache) {
+ // Turns caching on or off (a string value of 'enable' turns it on, any other string turns it off)
+ oldValue = useAssetsCache;
+ useAssetsCache = event.data.action.assetsCache === 'enable';
+ if (useAssetsCache !== oldValue) console.debug('[SW] Use of assetsCache was switched to: ' + useAssetsCache);
+ }
+ if (event.data.action.appCache) {
+ // Enables or disables use of appCache
+ oldValue = useAppCache;
+ useAppCache = event.data.action.appCache === 'enable';
+ if (useAppCache !== oldValue) console.debug('[SW] Use of appCache was switched to: ' + useAppCache);
+ }
+ if (event.data.action === 'getCacheNames') {
+ event.ports[0].postMessage({ app: APP_CACHE, assets: ASSETS_CACHE });
+ }
+ if (event.data.action.checkCache) {
+ // Checks and returns the caching strategy: checkCache key should contain a sample URL string to test
+ testCacheAndCountAssets(event.data.action.checkCache).then(function (cacheArr) {
+ event.ports[0].postMessage({ type: cacheArr[0], name: cacheArr[1], description: cacheArr[2], count: cacheArr[3] });
+ });
+ }
+ }
+});
+
+/**
+ * Handles URLs that need to be extracted from the ZIM archive
+ *
+ * @param {URL} urlObject The URL object to be processed for extraction from the ZIM
+ * @param {String} range Optional byte range string
+ * @returns {Promise} A Promise for the Response, or rejects with the invalid message port data
+ */
+function fetchUrlFromZIM (urlObject, range) {
+ return new Promise(function (resolve, reject) {
+ // Note that titles may contain bare question marks or hashes, so we must use only the pathname without any URL parameters.
+ // Be sure that you haven't encoded any querystring along with the URL.
+ var barePathname = decodeURIComponent(urlObject.pathname);
+ var partsOfZIMUrl = regexpZIMUrlWithNamespace.exec(barePathname);
+ var prefix = partsOfZIMUrl[1];
+ var nameSpace = partsOfZIMUrl[2];
+ var title = partsOfZIMUrl[3];
+
+ var titleWithNameSpace = nameSpace + '/' + title;
+
+ // Let's instantiate a new messageChannel, to allow app.js to give us the content
+ var messageChannel = new MessageChannel();
+ messageChannel.port1.onmessage = function (msgPortEvent) {
+ if (msgPortEvent.data.action === 'giveContent') {
+ // Content received from app.js
+ var contentLength = msgPortEvent.data.content ? (msgPortEvent.data.content.byteLength || msgPortEvent.data.content.length) : null;
+ var contentType = msgPortEvent.data.mimetype;
+ var headers = new Headers();
+ if (contentLength) headers.set('Content-Length', contentLength);
+ // Set Content-Security-Policy to sandbox the content (prevent XSS attacks from malicious ZIMs)
+ headers.set('Content-Security-Policy', "default-src 'self' data: blob: about: chrome-extension: moz-extension: https://browser-extension.kiwix.org https://kiwix.github.io 'unsafe-inline' 'unsafe-eval'; sandbox allow-scripts allow-same-origin allow-modals allow-popups allow-forms allow-downloads;");
+ headers.set('Referrer-Policy', 'no-referrer');
+ if (contentType) headers.set('Content-Type', contentType);
+
+ // Test if the content is a video or audio file. In this case, Chrome & Edge need us to support ranges.
+ // See kiwix-js #519 and openzim/zimwriterfs #113 for why we test for invalid types like "mp4" or "webm" (without "video/")
+ // The full list of types produced by zimwriterfs is in https://github.com/openzim/zimwriterfs/blob/master/src/tools.cpp
+ if (contentLength >= 1 && /^(video|audio)|(^|\/)(mp4|webm|og[gmv]|mpeg)$/i.test(contentType)) {
+ headers.set('Accept-Ranges', 'bytes');
+ }
+
+ var slicedData = msgPortEvent.data.content;
+ if (range) {
+ // The browser asks for a range of bytes (usually for a video or audio stream)
+ // In this case, we partially honor the request: if it asks for offsets x to y,
+ // we send partial contents starting at x offset, till the end of the data (ignoring y offset)
+ // Our backend can currently only read the whole content from the ZIM file.
+ // So it's probably better to send all we have: hopefully it will avoid some subsequent requests of
+ // the browser to get the following chunks (which would trigger some other complete reads in the ZIM file)
+ // This might be improved in the future with the libzim wasm backend, that should be able to handle ranges.
+ const partsOfRangeHeader = regexpByteRangeHeader.exec(range);
+ const begin = partsOfRangeHeader[1];
+ const end = contentLength - 1;
+ slicedData = slicedData.slice(begin);
+
+ headers.set('Content-Range', 'bytes ' + begin + '-' + end + '/' + contentLength);
+ headers.set('Content-Length', end - begin + 1);
+ }
+
+ var responseInit = {
+ // HTTP status is usually 200, but has to bee 206 when partial content (range) is sent
+ status: range ? 206 : 200,
+ statusText: 'OK',
+ headers
+ };
+
+ var httpResponse = new Response(slicedData, responseInit);
+
+ // Let's send the content back from the ServiceWorker
+ resolve(httpResponse);
+ } else if (msgPortEvent.data.action === 'sendRedirect') {
+ resolve(Response.redirect(prefix + msgPortEvent.data.redirectUrl));
+ } else {
+ reject(msgPortEvent.data, titleWithNameSpace);
+ }
+ };
+ outgoingMessagePort.postMessage({
+ action: 'askForContent',
+ title: titleWithNameSpace
+ }, [messageChannel.port2]);
+ });
+}
+
+/**
+ * Looks up a Request in a cache and returns a Promise for the matched Response
+ * @param {String} cache The name of the cache to look in
+ * @param {String} requestUrl The Request URL to fulfill from cache
+ * @returns {Promise} A Promise for the cached Response, or rejects with strings 'disabled' or 'no-match'
+ */
+function fromCache (cache, requestUrl) {
+ // Prevents use of Cache API if user has disabled it
+ if (!(useAppCache && cache === APP_CACHE || useAssetsCache && cache === ASSETS_CACHE)) {
+ return Promise.reject(new Error('disabled'));
+ }
+ return caches.open(cache).then(function (cacheObj) {
+ return cacheObj.match(requestUrl).then(function (matching) {
+ if (!matching || matching.status === 404) {
+ return Promise.reject(new Error('no-match'));
+ }
+ console.debug('[SW] Supplying ' + requestUrl + ' from ' + cache + '...');
+ return matching;
+ });
+ });
+}
+
+/**
+ * Stores or updates in a cache the given Request/Response pair
+ * @param {String} cache The name of the cache to open
+ * @param {Request|String} request The original Request object or the URL string requested
+ * @param {Response} response The Response received from the server/ZIM
+ * @returns {Promise} A Promise for the update action
+ */
+function updateCache (cache, request, response) {
+ // Prevents use of Cache API if user has disabled it
+ if (!response.ok || !(useAppCache && cache === APP_CACHE || useAssetsCache && cache === ASSETS_CACHE)) {
+ return Promise.resolve();
+ }
+ return caches.open(cache).then(function (cacheObj) {
+ console.debug('[SW] Adding ' + (request.url || request) + ' to ' + cache + '...');
+ return cacheObj.put(request, response);
+ });
+}
+
+/**
+ * Tests the caching strategy available to this app and if it is Cache API, count the
+ * number of assets in ASSETS_CACHE
+ * @param {String} url A URL to test against excludedURLSchema
+ * @returns {Promise} A Promise for an array of format [cacheType, cacheDescription, assetCount]
+ */
+function testCacheAndCountAssets (url) {
+ if (regexpExcludedURLSchema.test(url)) return Promise.resolve(['custom', 'custom', 'Custom', '-']);
+ if (!useAssetsCache) return Promise.resolve(['none', 'none', 'None', 0]);
+ return caches.open(ASSETS_CACHE).then(function (cache) {
+ return cache.keys().then(function (keys) {
+ return ['cacheAPI', ASSETS_CACHE, 'Cache API', keys.length];
+ }).catch(function (err) {
+ return err;
+ });
+ }).catch(function (err) {
+ return err;
+ });
+}
diff --git a/dist/www/article.html b/dist/www/article.html
new file mode 100644
index 000000000..73875a8a8
--- /dev/null
+++ b/dist/www/article.html
@@ -0,0 +1,8 @@
+
+
+
+
+ Placeholder for injecting an article into the iframe
+
+
+
\ No newline at end of file
diff --git a/dist/www/css/app.css b/dist/www/css/app.css
new file mode 100644
index 000000000..7c8866c0a
--- /dev/null
+++ b/dist/www/css/app.css
@@ -0,0 +1,367 @@
+/*!
+ * app.css : Main CSS of the application
+ *
+ * Copyright 2013-2019 Mossroy and contributors
+ * Licence GPL v3:
+ *
+ * This file is part of Kiwix.
+ *
+ * Kiwix is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public Licence as published by
+ * the Free Software Foundation, either version 3 of the Licence, or
+ * (at your option) any later version.
+ *
+ * Kiwix is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public Licence for more details.
+ *
+ * You should have received a copy of the GNU General Public Licence
+ * along with Kiwix (file LICENSE-GPLv3.txt). If not, see
+ */
+
+[role=region] {
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ position: fixed;
+ overflow-x: hidden;
+}
+[role=region] > header {
+ margin-bottom: 1rem;
+ text-align: center;
+}
+[role=region] > header > h1 {
+ margin: 0;
+ text-shadow: 0 1px 1px rgba(0,0,0,.4);
+}
+[role=region] > .view-content {
+ margin: 0;
+ position: relative; /*Fixes #250 Random button display bug in W10M */
+}
+[role=region] > footer {
+ background: rgba(0,0,0,.2);
+ right: 0;
+ bottom: 0;
+ left: 0;
+ position: fixed;
+ text-align: center;
+}
+[role=region] > footer > menu[role=toolbar] {
+ margin: 0;
+ padding: 0;
+}
+
+#navigationButtons .restrictedSize {
+ max-width: 80%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.nopadding {
+ padding-right: 1px !important;
+ padding-left: 1px !important;
+}
+
+.form-control {
+ margin-top: 2px;
+}
+
+#articleList {
+ margin-bottom: 12px !important;
+}
+
+#top, #articleContent, #footer, article {
+ transition: transform 0.3s ease;
+}
+
+#articleListWithHeader {
+ position: absolute;
+ top: 0;
+ left: 5%;
+ padding-left: 12px;
+ padding-right: 12px;
+ background: lightblue;
+ z-index: 1;
+}
+
+#articleList a:hover, #articleList a.hover {
+ background: lightblue;
+}
+
+#formArticleSearch {
+ padding-top: 1rem;
+}
+
+#configuration {
+ margin: 0 1rem;
+}
+
+#filesSelectionInfoAndCount {
+ padding-top: 0.5rem;
+}
+#filesSelectionInfoAndCount p{
+ display: inline;
+}
+
+#archiveList {
+ width: 60%;
+ min-width: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+#rescanButtonAndText button {
+ margin-top: 0.5rem;
+}
+/* Custom file input */
+
+input[type="file"] {
+ display: none;
+}
+
+iframe {
+ border: 0;
+}
+
+.custom-file-upload {
+ border: 2px solid darkgray;
+ display: inline-block;
+ padding: 6px 12px;
+ cursor: pointer;
+}
+
+.dark .custom-file-upload {
+ border: 2px solid darkslategray;
+}
+
+
+/* App theme: dark */
+
+.dark header, .dark #cachingAssets, .dark #about, .dark #configuration, .dark #welcomeText, .dark #articleListWithHeader,
+.dark #alertBoxHeader, .dark footer:not([class=_light]), .dark img {
+ filter: invert(1) hue-rotate(180deg);
+}
+
+.dark body {
+ background: #171717;
+}
+
+.dark .card-warning .card-header {
+ background-color: #FFFF00;
+}
+
+.dark .modal-content{
+ background: #333 !important;
+}
+
+.dark .modal-title, .dark .modal-body{
+ color: #FFFFFF !important;
+}
+
+/* End of app theme: dark */
+
+/* Content themes: _invert, _mwInvert */
+
+iframe._invert, iframe._mwInvert {
+ filter: invert(1) hue-rotate(180deg);
+}
+
+/* End of content themes */
+
+.appThemeInfo {
+ display: none;
+ margin: 5px;
+}
+
+.articleIFrame {
+ width: 100%;
+ border: 0;
+}
+
+.apiAvailable {
+ color: green;
+}
+
+.apiUnavailable, .apiSuboptimal {
+ color : orange;
+}
+
+.apiBroken {
+ color : red;
+}
+
+.loader {
+ position: absolute;
+ margin: 0 auto;
+ left: 0;
+ right: 0;
+ border: 5px solid lightgrey;
+ -webkit-animation: spin 1s linear infinite;
+ animation: spin 1s linear infinite;
+ border-top: 5px solid steelblue;
+ border-radius: 50%;
+ width: 50px;
+ height: 50px;
+}
+
+.status {
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ z-index: 1;
+}
+
+.message {
+ position: absolute;
+ margin: 70px auto 0;
+ left: 0;
+ right: 0;
+ font-size: smaller;
+ background: whitesmoke;
+ color: dimgrey;
+ border: 1px solid gainsboro;
+ padding: 1px 4px;
+ width: 200px;
+}
+
+.alert {
+ margin-bottom: 0 !important;
+}
+
+.alert-link {
+ text-decoration: underline;
+}
+
+#alertBoxHeader {
+ transition: opacity 0.5s;
+ text-align: center;
+}
+
+.modal-dialog {
+ -webkit-animation-name: animatetop;
+ -webkit-animation-duration: 0.1s;
+ animation-name: animatetop;
+ animation-duration: 0.1s;
+}
+
+.container {
+ margin-bottom: 1.5em;
+}
+
+.card {
+ margin-top: 1em;
+ margin-bottom: 1.5em;
+}
+
+/* Modify default Bootstrap 4 colours */
+.card-info {
+ border-color: #bce8f1;
+}
+.card-info .card-header {
+ background-color: #d9edf7;
+ color: #31708f;
+}
+.card-success {
+ border-color: #d6e9c6;
+}
+.card-success .card-header{
+ background-color: #dff0d8;
+ color: #3c763d;
+}
+.card-danger {
+ border-color: #ebccd1;
+}
+.card-danger .card-header {
+ background-color: #f2dede;
+ color: #a94442;
+}
+.card-warning {
+ border-color: #faebcc;
+}
+.card-warning .card-header {
+ background-color: #fcf8e3;
+ color: #8a6d3b;
+}
+
+.btn-lg {
+ color: #337ab7;
+}
+
+/* Add missing margin to buttons */
+button {
+ margin: 2px;
+}
+
+.btn-danger {
+ background-color: lightyellow;
+ color: darkred;
+}
+
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
+/* Animation for .modal-dialog */
+@keyframes animatetop {
+ from {top: -300px; opacity: 0}
+ to {top: 0px; opacity: 1}
+}
+
+/* Reduce the size of some elements for small screens */
+@media (max-width: 768px) {
+
+ /* Reduce the height of top menu */
+ .navbar {
+ min-height: 20px !important;
+ margin-bottom: 1px !important;
+ }
+ .navbar-brand {
+ padding-top: 2px !important;
+ padding-bottom: 1px !important;
+ height: 25px !important;
+ }
+ .navbar-toggle {
+ padding-top: 2px !important;
+ padding-bottom: 2px !important;
+ margin-top: 2px !important;
+ margin-bottom: 0 !important;
+ }
+ [role=region] > header {
+ margin-bottom: 0 !important;
+ }
+
+ /* Remove space between search zone and iframe */
+ .list-group {
+ margin-bottom: 0 !important;
+ }
+
+ /* Reduce height of the search field */
+ .form-control {
+ padding-bottom: 5px !important;
+ }
+ #formArticleSearch {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ }
+ /* Reduce size of the top buttons */
+ .btn-outline-secondary {
+ font-size: 10px !important;
+ }
+
+ /* Reduce size of the bottom buttons */
+ .btn-lg, .btn-group-lg > .btn {
+ padding-top: 1px !important;
+ padding-bottom: 1px !important;
+ font-size: 16px !important;
+ }
+
+ #archiveList {
+ width: 100%;
+ min-width: auto;
+ margin-bottom: 0.5em;
+ }
+
+}
diff --git a/dist/www/css/bootstrap.min.css b/dist/www/css/bootstrap.min.css
new file mode 100644
index 000000000..83a71b1f5
--- /dev/null
+++ b/dist/www/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.6.2 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors
+ * Copyright 2011-2022 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:.875em;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.width{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:1px solid #adb5bd}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background-color:transparent;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentcolor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentcolor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/dist/www/css/bootstrap.min.css.map b/dist/www/css/bootstrap.min.css.map
new file mode 100644
index 000000000..4eb463791
--- /dev/null
+++ b/dist/www/css/bootstrap.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/utilities/_interactions.scss","../../scss/utilities/_overflow.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_stretched-link.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Copyright 2011-2022 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$color}: #{$value};\n }\n\n @each $bp, $value in $grid-breakpoints {\n --breakpoint-#{$bp}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box; // 1\n}\n\nhtml {\n font-family: sans-serif; // 2\n line-height: 1.15; // 3\n -webkit-text-size-adjust: 100%; // 4\n -webkit-tap-highlight-color: rgba($black, 0); // 5\n}\n\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\n// TODO: remove in v5\n// stylelint-disable-next-line selector-list-comma-newline-after\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use\n// the `inherit` value on things like `
` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\n// on elements that programmatically receive focus but wouldn't normally show a visible\n// focus outline. In general, this would mean that the outline is only applied if the\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\n// wants focus outlines to always be presented.\n//\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\n[tabindex=\"-1\"]:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `
`-`
` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable-next-line selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `
`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Remove the bottom border in Firefox 39-.\n// 5. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-original-title] { // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 4\n text-decoration-skip-ink: none; // 5\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n\nsmall {\n @include font-size(80%); // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n @include font-size(75%);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n\n @include hover() {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n color: inherit;\n text-decoration: none;\n\n @include hover() {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-monospace;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\n // making it impossible to interact with the content\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg {\n // Workaround for the SVG overflow bug in IE10/11 is still required.\n // See https://github.com/twbs/bootstrap/issues/26878\n overflow: hidden;\n vertical-align: middle;\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $table-caption-color;\n text-align: left;\n caption-side: bottom;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `
` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// Set the cursor for non-`