diff --git a/.gitignore b/.gitignore index 9430697ca..5ef003bce 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ _pkginfo.txt /bld/ /bin/ /BundleArtifacts/ -/dist/ /archives/*.zim* /archives/*wikivoyage*.zim /archives/*medicine*.zim diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md new file mode 100644 index 000000000..569be8ee8 --- /dev/null +++ b/dist/CHANGELOG.md @@ -0,0 +1,933 @@ +# Changelog + +## In-progress release 2.7.42 + +* ENHANCEMENT: Add indicative colourization to archive list when using OPFS +* ENHANCEMENT: Add a spinner for adding and direct download of files to OPFS +* ENHANCEMENT: After failure to import or download to OPFS, delete file stub(s) +* INFO: Inform user that OPFS files are preserved on app reset +* INFO: More informative message about import/download error in Safari +* FIX: Tested and fixed support for new dynamic UI in ZIMs produced by Kolibri scraper +* FIX: When using locally cached CSS, the details/summary tags are restored where missing from ZIM +* FIX: Display of open-close markers for headers is now as expected in mobile css (suppressed in desktop css) +* FIX: Empty archive list when OPFS is deactivated +* FIX: Make sure spinner doesn't block the UI +* FIX: Ensure some HTML and entities do not appear in constructed article titles +* FIX: Don't show spinner on click in cases of anchor or javascript links +* FIX: Cancel OPFS delete if export selected and vice versa +* DEV: Name of repository changed to kiwix-js-pwa +* DEV: Add facility for adding ZIM metadata to the ZIMArchive object + +## Release 2.7.2 + +* FEATURE: Rework file system access and support Origin Private File System (OPFS) +* ENHANCEMENT: Autoload and display of all archives in OPFS on app launch, no permission prompts! +* ENHANCEMENT: Last selected archive (and optionally article) auto-loaded on app launch if in OPFS +* ENHANCEMENT: Import existing archives from anywhere on device into the OPFS easily with file picker +* ENHANCEMENT: New file management facility for deleting, and (in some contexts) exporting OPFS archives +* ENHANCEMENT: Option to download archives directly into the OPFS, without downloading first to user-visible FS +* ENHANCEMENT: Option to download archives direclty into any folder pickable with the File System Access API +* ENHANCEMENT: Full-text search enabled by default on Android for archives in OPFS +* ENHANCEMENT: Pick multiple archives at once and switch easily between them, even on legacy systems +* ENHANCEMENT: New Operations Panel to show download progress in PWA and Electron apps +* ENHANCEMENT: Avoid double loading of WebP Polyfill when present in ZIM +* FIX: Exception preventing display of legacy archive content in jQuery mode +* FIX: Failure to display ZIM Archive Index when typing space in some circumstances +* FIX: Avoid duplication of title in wider range of ZIMs +* FIX: Partially fixed broken "unclick" of Configure button on touchscreen devices +* REGRESSION: Fixed failure to refresh full-screen state when clicking in-app in SW mode +* REGRESSION: Fixed rogue error message when using File Handling API +* UPDATE: Sample archive updated to `wikipedia_en_100_mini_2023-10` +* UPDATE: Electron version bumped to 22.3.25 + +## Release 2.6.4 + +* FEATURE: Full-text search enabled by default on iOS 15+ +* REGRESSION: Fixed loss of ability to pick ZIM archives in latest Chromium on Android +* REGRESSION: Fixed loss of ability to access custom ZIMs from download library +* REGRESSION: Work around missing titles in all WikiMedia scrapes since 2023-07 +* FIX: Avoid hyperlinking math fallback images to high-res Wikimedia versions +* FIX: Conflict between manual image display and hyperlinking images to high-res Wikimedia versions +* FIX: More broken Linux icons +* DEV: Appx package is now uploaded to Kiwix releases +* DEV: Added clear documentation to the Create-DraftRelease.ps1 script +* DEV: Remove more unnecessary JQuery from the app +* DEV: Disable appCache by default if developing with the Vite server + +## Release 2.5.6 + +* FEATURE: Ability to pick a folder of ZIM archives in nearly all apps and frameworks supporting the Webkitdirectory API +* FEATURE: New Electron-based appx version of Kiwix JS now served from the Microsoft Store and from GitHub Releases +* FEATURE: Electron app can now handle ZIM files, including the `.zimaa` part of a split ZIM fileset +* FEATURE: Improved file and folder picking experience for Firefox and older browsers lacking the File System Access API +* ENHANCEMENT: Fast re-opening of previously picked archives or directories in these browsers (number of clicks minimized) +* ENHANCEMENT: Dragged and dropped files, including split files, can now be re-opened automatically in Electron and NWJS apps +* ENHANCEMENT: Microsoft Store app now supports full-text search for users with 64bit Windows +* ENHANCEMENT: Provide more gradual screen width transition with max page width auto setting +* ENHANCEMENT: Restored the ability not to display images in ServiceWorker Mode in non-Zimit ZIMs +* ENHANCEMENT: Restored lazy-loading of images on most landing pages (improves Android experience with image-heavy landing pages) +* ENHANCEMENT: The Kiwix PWA can now be added as a Side Panel app in Edge (NB folder picking does not work in this configuration) +* ENHANCEMENT: Top toolbar now resized correctly with Window Controls Overlay in installed PWA on macOS and Windows +* ENHANCEMENT: When using Window Controls Overlay, app now has a draggable area (left of Kiwix icon) +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2023-07` +* UPDATE: Troubleshooting instructions for installing on Debian on the Releases page +* BUILD: Allow producing signed or unsigned versions of appx, and compile to appxbundle +* BUILD: Option to build artefacts only for testing +* FIX: Broken Kiwix icon for Linux app packages +* FIX: Fidelity of layout for translation tables in cached Wiktionary mobile and desktop styles +* FIX: Broken file handling in legacy UWP app +* FIX: Miscellaneous small bugfixes and typos +* DEV: A lot of normalization of coding style using ESLint + +## Release 2.5.0 + +* FEATURE: PWA app is now smaller and loads faster due to minification with modern build process +* ENHANCEMENT: New modular system and bundler ensures smaller and more stable memory management +* ENHANCEMENT: Add a Promise queue to prevent overlapping alert dialogue boxes +* ENHANCEMENT: Major enhancement to the fidelity of rendering Zimit-based ZIM archives +* ENHANCEMENT: Ability to open new browsable windows and tabs in Zimit ZIMs +* UPDATE: Renamed breakout link feature to "Download or open current article" +* UPDATE: Reduce image fade-in transition time +* UPDATE: Add a limit to the number of dialogue boxes that can be queued up +* UPDATE: Make one-time hidden content warning less intrusive +* DEV: Removed RequireJS and migrated app to ES6 native modules +* DEV: Provide clearer colouring when appCache is disabled for development +* DEV: Use rollup.js and Babel to build compatible versions of the app for all supported browsers +* DEV: Provide minified and unminified versions of the bundled app +* DEV: Added ability to publish a distribution of the app to GitHub Pages for development +* DEV: Add a basic Vite.js server configuration +* DEV: Re-enable use of wingetcreate with v2.6.0 when publishing to winget repository +* WORKAROUND: Prevent hackish Zimit script from causing reload loop in new tabs or windows +* FIX: Make upgrade notification persistent in Electron app +* FIX: Several UI issues with toolbars and downloads +* FIX: Bug which prevented UWP / Edge Legacy app from reading articles with certain options deselected +* FIX: Missing commit ID in Windows nightly builds +* FIX: Downloading of PDFs in Nautilus-based ZIMs and elsewhere +* FIX: Add secondary URL corrector to increase fidelity of Zimit rendering +* FIX: Add a better algorithm for Kiwix asset detection +* FIX: Make all Zimit links relative +* FIX: Add workarounds for sandboxed iframe: load all https: and pdf content in a new window or tab +* FIX: More robust click and download handling for Zimit ZIMs +* FIX: Add BOM to production bundle when building UWP app (store requirement) +* FIX: Better support for handling external links in iOS +* FIX: Bug that showed irrelevant dialogue box when opening Zimit archives on iOS +* FIX: Bug that loaded a blank screen when asking user whether to open external links +* DEPENDENCY: Update jQuery to 3.7.0, while removing its use in a number of places +* REGRESSION: Fix regression with (former) breakout link feature +* REGRESSION: Restore dialogue box animations that were removed with removal of jQuery +* REGRESSION: Restore Table of Contents functionality disabled with removal of jQuery +* REGRESSION: Restore ability to close several in-page alerts after removal of jQuery +* REGRESSION: Restore automatic updating of appCache + +## Release 2.4.4 + +* ENHANCEMENT: Provide fuzzy search for case-insensitive links in Zimit archives +* ENHANCEMENT: Include broader pseudo-case-insensitive search in title search +* SECURITY: Add iframe referrer policy 'no-referrer' +* SECURITY: Strengthen Content Security Policy via response headers and meta http-equiv +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2023-04` +* UPDATE: Streamline the splashscreen display and make it dynamic +* UPDATE: Add more complete language support to the Download Library languages dropdown +* FIX: Stack Exchange ZIM detection +* FIX: Display of external icons in Stack Exchange articles +* FIX: Dark mode style tweaks for Wiktionary +* FIX: Missing full-text search cancellation which caused race condition in search + +## Release 2.4.0 + +* FEATURE: Support Full Screen (all browsers) and rotation lock (primarily intended for mobile) +* FEATURE: Significant speed-up of access to Wikimedia archives with option to ignore unneeded JS files +* SECURITY: Added sandbox attribute to iframe to block top-level navigation and attempts by scripts to "phone home" +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2023-03` +* UPDATE: Mobile styles for Wiktionary archives +* ENHANCEMENT: Provide indication of archive download progress in Electron app +* ENHANCEMENT: Avoid opening blank window when downloading archive in Electron/NWJS +* ENHANCEMENT: Provide troubleshooting option to disable drag-and-drop +* ENHANCEMENT: Use screen width more efficiently in SW mode (with Remove max page width option) +* FIX: Return to article links were missing in ServiceWorker mode +* FIX: Removed orientation key that prevented proper setting of orientation in some contexts +* FIX: Improved detection of Wikimedia ZIMs for seleciton of printing stylesheet +* FIX: Fix for rogue JS in Wiktionary archives (if default option to use locally cached styles is on) + +## Release 2.3.6 + +* ENHANCEMENT: Tidier Configuration layout with collapsible options +* ENHANCEMENT: Streamline access to legacy file picker when File System Access API unavailable +* ENHANCEMENT: The PWA now works on iOS devices (iPhone/iPad) in Safari and can be added to home screen +* ENHANCEMENT: App now intelligently sets the initial window opening mode (tab or window) +* UPDATE: Neater display of file picking instructions, hiding them when no longer needed +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2023-01` +* FIX: Several issues affecting printing (Zimit archives in Chromium, failure to detect selected options in Safari, etc.) +* FIX: Logic for checking GitHub update server +* FIX: Legacy file picker is now able to pick ZIM archives on iOS devices +* FIX: Block a wider range of analytics in Zimit archives +* FIX: Processing of data-srcset blocks in Zimit archives + +## Release 2.3.0 + +* ENHANCEMENT: Check for update to PWA and notify user shortly after startup of the app +* ENHANCEMENT: New "auto" setting for display of hidden navboxes and tables in Wikimedia ZIMs +* ENHANCEMENT: Detect historical ZIM types and add advice on using jQuery mode to read them +* ENHANCEMENT: Refresh and Reset buttons provided near the top of Configuration in case of app freeze +* DEV: Added developer option to force use of libzim W/ASM decoding of full-text index +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2022-12` +* FIX: Libzim loading error in Electron app with large ZIM archives due to race condition +* FIX: Prevent race condition between reactivation of Service Worker and loading of NODEFS +* FIX: Add BOM to new JS files to conform to Microsoft Store requirements +* FIX: Exception caused by site.js script included in Wikimedia archives +* FIX: Failure to load last-visited article in Electron app +* FIX: Electron file and folder picking methods +* FIX: In UWP app, request to launch PWA is now shown after upgrade splash screen +* FIX: Allow URL-based search to complete before launching full-text search +* FIX: Critical bug preventing display of legacy file picker +* BUILD: Build 64bit and 32bit packages separately to avoid race condition in electron-builder +* BUILD: All Electron apps other than 32bit Linux are now built with latest Electron + +## Release 2.2.8 + +* ENHANCEMENT: Experimental use of libzim WASM port to read Full-Text index (PWA and Electron only) +* ENHANCEMENT: Information added to API panel to show status of Full Text index +* ENHANCEMENT: Run full-text and title search in parallel for faster return of results +* ENHANCEMENT: Building Electron app on GitHub actions now downloads the latest packaged archive before cloud-building +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2022-11` +* CLEANUP: Removal of several JQuery functions, replaced with native DOM methods +* CLEANUP: Remove some unused functions +* FIX: Critical startup bug which prevented opening of some packaged archives +* FIX: Bug which prevented reload of last visited page on re-launch of app +* FIX: When dark mode is set to auto, do not use darkReader for Wikimedia ZIMs + +## Release 2.2.5 + +* UPDATE: Sample archive changed to `wikipedia_en_100_mini_2022-10` +* ENHANCEMENT: Experimental option to use DarkReader plugin (SW mode only) +* ENHANCEMENT: Added support for Open Document download types (.odt) +* ENHANCEMENT: UWP app size reduced from 13MB to 5.4MB! +* FIX: A number of glitches with standard and inverted dark themes +* FIX: Crash in UWP app when switching between modes if there are too many archives in a loaded directory +* FIX: Deal with Zimit links correctly when link handling is disabled +* FIX: Test both the encoded and decoded path for Zimit hyperlinks, due to inconsistencies in format +* FIX: Infinite loop when hyperlinks are not being captured by window opener +* FIX: Recognize more file types as assets, to avoid accidentally loading them as articles +* FIX: Failure to display active content warning in some instances + +## Release 2.2.0 + +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-10.zim` +* ENHANCEMENT: Enable ServiceWorker mode as the default (and deprecate JQuery mode) +* ENHANCEMENT: Display media download alert only when the medium is fetched from the ZIM +* FIX: Regression preventing UWP app from remaining in ServiceWorker mode +* FIX: Failure to confirm with user before launching SW mode in UWP app + +## Release 2.1.9 + +* ENHANCEMENT: Better suggestions for mirrors when Library server does not provide mirror info +* ENHANCEMENT: A self-contained portable Windows executable is now available for Electron +* UPDATE: Streamline polling of spinner and messaging +* FIX: Selection of languages in Library +* FIX: Display of some irregularly formatted filenames in Library +* FIX: Ensure spinner never shows for more than 3 seconds +* FIX: Display of landing pages of YouTube-based archives (e.g. TED Talks) +* FIX: Ensure dynamic element is scrolled into view when clicked in collection archives +* FIX: Regression preventing load of some relative assets in Zimit archives + +## Release 2.1.8 + +* FEATURE: Enable playback of most offline **embedded** YouTube video in Zimit ZIMs (SW mode) +* ENHANCEMENT: YouTube video **links** can be played offline if video available (JQuery and SW modes) +* ENHANCEMENT: Clearer signposting of Archive Index vs URL Index +* ENHANCEMENT: Show an alert to user if main page is not an article +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-09` +* WORKAROUND: Assets with erroneous MIME types were misrecognized as articles (blocking reload of some articles) +* FIX: Downloading of non-mirrored content in the Library +* FIX: Recognize XHTML documents and applications in Zimit ZIMs and treat as HTML +* FIX: Wikivoyage package and install icons +* FIX: Bug preventing loading of Nautilus-based ZIM assets +* FIX: Detect more ZIMs for active content warning +* FIX: Provide instructions for showing URL Index in active content warning +* FIX: Download of files with very long filenames +* FIX: Bug causing incomplete loading of images on image-heavy landing pages +* FIX: Display of blue placeholders for manual image extraction in SW mode + +## Release 2.1.4 + +* ENHANCEMENT: Basic Zimit file reading in IE11 +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-08` +* UPDATE: Provide more complete documentation on GitHub +* FIX: Correct location of relative links on Zimit landing pages +* FIX: Add more asset types to Type 1 C-namespace Zimit support + +## Release 2.1.0 + +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-07` +* UPDATE: Packages are now signed with new Kiwix coding certificate +* UPDATE: BitTorrent files are now displayed before magnet links in the download library +* FIX: Support reading of Zimit archives using new Type 1 C-namespace ZIM format +* FIX: Searching for namespaces with Type 1 Zimit ZIMs +* FIX: Hyperlink transformations for Type 1 Zimit ZIMs +* FIX: Package and install icons for WikiMed and Wikivoyage +* FIX: Bug which caused app to hang when encountering URLs larger than 2KB in length + +## Release 2.0.9 + +* ENHANCEMENT: System back button in UWP app no longer exits the app +* ENHANCEMENT: Hyperlink the currently loaded archive so that user can re-open it easily with a click +* ENHANCEMENT: Make archive links combo box scrollable +* ENHANCEMENT: Make buttons more visible in dark mode +* FIX: Do not redirect to landing page if requested article is not found +* FIX: Prevent app entering an anomalous state if launch of Service Worker mode fails +* FIX: File handling API (works with latest Chrome, and with Edge Beta) +* FIX: Distinguish between Electron and NWJS when reporting app type to UI +* FIX: Dark style for new Stackexchange ZIMs + +## Release 2.0.8 + +* FEATURE: Optionally check for app updates and inform user of availability +* ENHANCEMENT: Radical improvement in CSS rendering in Zimit ZIMs +* ENHANCEMENT: Option to warn before opening external links +* ENHANCEMENT: Provide magnet torrent links in Archive Library +* ENHANCEMENT: Provide link to preview of live ZIM archive on library.kiwix.org +* ENHANCEMENT: Reduce delay between image loads when lazy-loading images (Wikimedia ZIMs) +* ENHANCEMENT: Speed up regex processing of Zimit transforms +* ENHANCEMENT: Intelligently auto-switch image manipulation setting if supported by ZIM type +* ENHANCEMENT: Intelligently turn off dark theme if ZIM does not support it +* ENHANCEMENT: Improve MathML detection +* UPDATE: KaTeX library updated to 0.16 +* FIX: Skipping forwards and backwards in videos inside Chromium frameworks +* FIX: Derive redirect information from Zimit Headers if the response is mising from the archive +* FIX: Searching for assets in url index now properly shows the url instead of title +* FIX: System alert dialogue box now handles keyboard events +* FIX: Add some failsafe code to hide spinner if it runs too long (does not handle app crashes) +* FIX: More robust insertion of Contet Security Policy into article +* FIX: Failure to interpret MathML in some circumstances +* FIX: Process correctly the `srcset` property in image sets for Zimit ZIMs +* FIX: Disable lazy image loading in Zimit ZIMs +* FIX: Add some failsafe code to hide spinner if it runs too long (does not handle app crashes) +* FIX: Dark theme for new Stackexchange ZIMs +* FIX: Interoperability between JQuery and Service Worker modes with Zimit archives +* FIX: Max page width manipulation in IE11 + +## Release 2.0.0 + +* FEATURE: Search for any asset in any ZIM by prefixing namespace +* ENHANCEMENT: Filter out undesired files more effectively (Zimit ZIMs) +* ENHANCEMENT: Process URLs in JavaScript files (Zimit ZIMs) +* ENHANCEMENT: Ensure user clears the cache when switching to SW mode while a Zimit ZIM is loaded +* ENHANCEMENT: Prevent expensive RegExp processing for irrelevant ZIM types +* ENHANCEMENT: Driect download certain recognized content types for Zimit archives +* ENHANCEMENT: Made PWA manifest compatible with Chromium installability criteria +* UPDATE: Refresh Kiwix icons +* UPDATE: Remove landing page override for mdwiki at request of maintainer +* UPDATE: Hyperlinking of images to high-res versions is now off by default +* FIX: Bug that caused repeating images when hyperlinking images to online high-res versions +* FIX: Erroneous link handling for Zimit files +* FIX: Add any missing file extension to downloadable files and construct MIME types if missing +* FIX: Exception when reloading the last selected archive on certain platforms +* FIX: Remove lazy image loading system if detected +* FIX: Errors with parsing and display of archive links in download library +* FIX: Adjustment to max page width restrictions is now applied on resize +* FIX: Remove more analytics spy scripts from Zimit ZIMs +* FIX: Incorrect meta tag encoding for some Zimit archives + +## Release 1.9.9 + +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-04` +* FEATURE: Experimental support for reading Zimit ZIM archives +* FIX: Support for reading background and bullet images in Zimit CSS in Service Worker mode +* FIX: Style of thumbinner Wikipedia images adjusted so that images are back in their original position +* FIX: MDwiki thumbinner images now have an MDwiki-specific override to prevent text bleeding to left of image +* FIX: Links to PDF data are now recognized by MIME type and downloaded as if they were files +* FIX: Support image links that have querystrings in Zimit archives +* FIX: Support percent-encoded ZIM URLs in Zimit archives +* FIX: Transition away from testing file extensions for caching strategy +* REGRESSION: Fix display of book thumbnails in Gutenberg ZIMs +* BUILD: Nightly builds of main app are now uploaded to a new server (with sftp instead of ssh) +* BUILD: Deploy PWA image on a k8s cluster +* BUILD: PWA images are now uploaded to ghcr.io instead of Docker Hub + +## Release 1.9.6 + +* UPDATE: Sample archive updated to `wikipedia_en_climate_change_mini_2022-03` +* FEATURE: Option to hyperlink images in Wikimedia ZIMs to the online File for the image +* ENHANCEMENT: Electron app now uses File System Access API except for initial loading of packaged archive +* DEV: Provided instructions on how to split a ZIM archive using WSL +* DEV: The NWJS app is now built via CI (including nightly) +* FIX: App now (optionally) remembers the last viewed article for split ZIM archives +* FIX: Electron and UWP apps now auto-load split ZIM archives +* FIX: Failure to recognize landing page when retrieved from history or cache + +## Release 1.9.3 + +* UPDATE: New sample archive: `wikipedia_en_climate_change_mini_2022-02` +* FEATURE: Electron apps now auto-update (Windows exe and Linux AppImage versions only) +* ENHANCEMENT: App now recognizes `mdwiki` ZIMs as WikiMed variants, and shows custom landing page +* REGRESSION: The NWJS has reverted to using JQuery mode by default while investigating an app crash with some articles in SW mode +* DEV: Automatic building of Electron app now enabled via GitHub Actions +* FIX: Improvement to independent browsing of windows in UWP app in SW mode +* FIX: Patch some CSS errors in `mdwiki` ZIMs +* FIX: Stabilize page loading when assets are missing (in SW mode) +* FIX: Styling of image-based landing pages + +## Release 1.9.0 + +* ENHANCEMENT: Service Worker mode is now the default in contexts or frameworks that natively support it with good performance +* ENHANCEMENT: Option to reset app to defaults in Expert settings +* ENHANCEMENT: Better feedback to user during slow ZIM archive loading +* ENHANCEMENT: Included favicons at various resolutions +* ENHANCEMENT: App now uses Bootstrap asynchronous dialogue boxes for modal alert and confirm +* DEV: Developer option to bypass appCache +* DEV: Window location information now shown in API panel +* FIX: Bug that would sometimes cause a blank screen in Service Worker mode on slow devices +* FIX: Set headers properly when caching Fetch responses in JQuery mode +* FIX: Loading of articles that have question marks or hashes in the title +* FIX: Incorrect attempt to register Service Worker in XP version of NWJS app causing fatal crash on startup +* FIX: Random button now warns user if archive is not loaded +* FIX: Race condition loading deocmpressors which caused failure in some rare contexts with the file:// protocol +* FIX: Bug preventing proper loading of landing page in Khan Academy and TED Talks ZIMs + +## Release 1.8.6 + +* UPDATE: Sample archive updated to `wikipedia_en_100_nopic_2021-12` +* ENHANCEMENT: Assets cache and app cache are now separated, so assets persist after update +* ENHANCEMENT: New persistent caching of ZIM assets that are not provided in file system singinficantly improves performance +* ENHANCEMENT: Automatically choose best available caching technology: Cache API, IndexedDB, Local Storage or memory +* ENHANCEMENT: New Cache API info panel in Configuration, and option to stop using and empty the cache +* FIX: Regression whereby blue image placeholders were not shown in jQuery mode when user turns off image display +* FIX: Bug whereby upgrade alert was triggered by caches from other apps on the same domain + +## Release 1.8.5 + +* FIX: Stylesheet errors with sistersite boxes +* FIX: Regression with Electron file handling causing previously picked archive to be forgotten +* FIX: Fatal Electron error on startup if packaged archive cannot be found +* FIX: NWJS file handling with legacy file picker (for XP and Vista builds) + +## Release 1.8.2 + +* UPDATE: Sample archive updated to `wikipedia_en_100_nopic_2021-11` +* UPDATE: App can now use the latest Electron release and APIs +* ENHANCEMENT: Electron version can now read contents of a picked archive directory +* ENHANCEMENT: Scrollbars are now styled (with darker colours) in dark mode (in Chromium frameworks) +* ENHANCEMENT: More app files are precached in the PWA for better offline experience +* ENHANCEMENT: Hardware back and forward buttons on mouse now work with UWP app (natively supported in other contexts) +* FIX: Prevent most app crashes when switching to SW mode in UWP app +* FIX: More intelligent relocation of hatnote and noexcerpt blocks +* FIX: UI bug when using the UWP app with a secondary display (via Config option) +* META: Release of UWP/PWA and Electron/NWJS versions of the app are now unified + +## Release 1.7.8 + +* UPDATE: Sample archive updated to `wikipedia_en_100_nopic_2021-10` +* EXPERIMENTAL: Added option to display hidden block elements, prinicipally for Wikimedia ZIMs +* ENHANCEMENT: With display hidden elements opetion, force display of zero-width images also +* ENHANCEMENT: Allow more time between clicks to register a double-right-click +* FIX REGRESSION: Prevent incorrect parsing of map markers when image manipulation is on in SW mode +* FIX REGRESSION: Closing all sections (by deselecting "Open all sections") now works again in jQuery mode +* BACKEND: Use a safer way of determining the ZIM name and type + +## Release 1.7.6 + +* UPDATE: Sample archive updated to `wikipedia_en_100_nopic_2021-09` +* ENHANCEMENT: The app should now show dynamic content on landing pages in YouTube-based ZIMs (SW mode) +* ENHANCEMENT: Option for map pins to open OpenStreetMap instead of Windows Maps App (mostly for Wikivoyage) +* ENHANCEMENT: Select map type automatically: Maps App for Windows, OSM for Linux or other +* ENHANCEMENT: Use smaller pins for Wikipedia pages vs Wikivoyage pages +* DEPRECATED: Disabled *indpenedent* resizing of content in iframe with touch: too slow, and worked only in Chromium +* FIX: Video playback controls are now shown in Khan Acadeny ZIMs (and others based on YouTube) +* FIX: Bug relocating hatnotes which moved extraneous text blocks +* FIX: Image rendering bug with substitute landing pages +* FIX: Fatal error loading the PWA in some circumstances +* FIX: Data URIs with WebP images can now be rendered in old browsers +* FIX: Style issues and rendering of map pins in German Wikimedia ZIMs +* FIX: Error with offline Cache that prevented PWA from working fully offline +* FIX: Prevented the NWJS app for Windows XP from attempting to switch to SW mode (which doesn't work) + +## Release 1.7.3 + +* ENNHNCEMENT: Added more diagnostic APIs to the API panel in Configuration +* ENHANCEMENT: Added refresh button for picked folder in Configuration (UWP or File System Access API) +* ENHANCEMENT: Added some extra directories of useful ZIM archives to Donwload library +* ENHANCEMENT: Provide option to allow image manipulation (saving to disk or opening in new tab) +* ENHANCEMENT: Provide contextual warnings for features that do not work well with dynamic content +* ENHANCEMENT: Added help section in About concerning link handling, dynamic content, new windows, etc. +* ENHANCEMENT: Verbose tooltips provided for several options in Configuration +* ENHANCEMENT: Usage instructions more clearly highlighted on first run +* UPDATE: Sample ZIM changed to `wikipedia_en_100_nopic_2021-08.zim` in order to reduce app size +* UPDATE: New option to change right click to double right click for opening new window or tab +* FIX: Issue preventing correct parsing of ZIM archive path in some contexts in SW mode +* FIX: Some app crashes when switching the UWP app to SW mode +* FIX: Printing in SW mode (load all images correctly before printing) +* FIX: Restoring DOM after printing in SW mode +* FIX: Issues with toolbars getting stuck on after searching for text in article +* FIX: Better replication of infobox mobile and desktop styles +* FIX: Typo in code causing some pages to load assets incorrectly in jQuery mode +* FIX: Updated style locations for custom WikiMed landing page (fixes display issue) + +## Release 1.6.0 + +* FEATURE: New dropdown in Download Library allows filtering the list of archives by subject (for some ZIM types) +* ENHANCEMENT: Sorting the Download Library list by clicking on the Size / Last modified / Name headers +* ENHANCEMENT: The app can now take advantage of native Promises (faster than Q) +* ENHANCEMENT: Decompressors now loaded as fast binary WASM modules if the brower supports WebAssembly +* UPDATE: Sample ZIM updated to `wikipedia_en_100_maxi_2021-07.zim` +* EXPERIMENTAL: Intalled PWA can now be opened offline when double-clicking ZIM archive (depends on File Handling API) +* FIX: More displaced hatnotes corrected +* FIX: Style injection code that would (rarely) cause an exception on some ZIM types + +## Release 1.5.0 + +* FEATURE: Search with wildcards `.*`, `.+` or regex syntax `(?:my_regular_expression)` +* FEATURE: (Experimental) PWA is paritcipating in File Handling API origin trial +* ENHANCEMENT: Significant speed-up by using native Promise API, or modern polyfill where needed +* ENHANCEMENT: Added full usage/syntax notes for title search and Alphabetical Title Index +* ENHANCEMENT: Include `h4` headings in Table of Contents +* ENHANCEMENT: Report number of titles scanned for long title searches +* UPDATE: Sample ZIM updated to `wikipedia_en_100_maxi_2021-06.zim` +* FIX: Display of ZIM Archive Index +* FIX: Bug which failed to detect images correctly in a new tab +* FIX: Touch-zoom of contents of iframe no longer blanks part of the display +* FIX: Broken zoom of contents of iframe (with UI buttons) in Internet Explorer +* FIX: Bug setting up backlinks which caused some pages not to load +* FIX: Unhandled exception when cite ref was not found + +## Release 1.4.2 + +* ENHANCEMENT: Improve zooming and re-flowing the article contents in browsers that support the `zoom` style property +* ENHANCEMENT: Add a Content Security Policy preventing contents of a page from connecting to online resources +* FIX: Crash in UWP app after updating a ZIM archive +* FIX: Improve handover from local code to PWA code to prevent rogue error message +* FIX: Improve page composition timing for non-MS browsers + +## Release 1.4.1 + +* FIX: Critical bug where article is not unhidden in time on slow systems in jQuery mode +* FIX: Issues with dark mode in Gutenberg ZIMs using SW mode +* FIX: Missing images from book lists in Gutenberg ZIMs + +## Release 1.4.0 + +* ENHANCEMENT: Pre-calculate position and size of article namespace in legacy ZIMs (speeds up binary search) +* ENHANCEMENT: New option to move navigation buttons to the top toolbar +* UPDATE: Sample ZIM updated to `wikipedia_en_100_maxi_2021-05.zim` +* UPDATE: System dark/light mode now used for "auto" setting in modern browsers (as well as UWP) +* UPDATE: KaTeX to v0.13.11 +* FIX: Double-clicking on archive failed to launch it in UWP app running in SW mode +* FIX: Hover and active colours on buttons +* FIX: Hide jump in page position during article load in Service Worker mode +* FIX: Adjusted timing of hiding and showing the article during page composition +* FIX: Intermittent failure to compose page in UWP app on mobile +* FIX: Reposition multiple displaced hatnotes +* FIX: Click on document reloads article when open new window feature is off +* FIX: Bug which prevented auto launch of packaged file on first install +* FIX: Issue preventing the article window from receiving focus for keyboard input + +## Release 1.3.2 + +* FEATURE: Open a new browsable tab or window with right-click, long-press, ctrl-click, middle-click +* UPDATE: Sample archive updated to `wikipedia_en_100_maxi_2021-04` +* UPDATE: Release Linux AppImage packages for Electron-based build +* ENHANCEMENT: Alt-left or Ctrl-left (and same for right key) can now be used for navigation +* FIX: Prevent flash between page loads by adapting empty screen to the selected theme color +* FIX: Crash on upgrade of ZIM archive in some contexts +* FIX: Subtitle dislplay on videos +* FIX: Download of media and subtitles +* FIX: Display of list-based home pages +* FIX: Failure to apply dark theme to articles with no CSS +* FIX: Bug affecting middle-click when opening a new window or tab +* FIX: Bug which hid the file selectors when the app could not get a handle on a file or directory +* FIX: Bug preventing touch navigation + +## Release 1.2.5 + +* ENHANCEMENT: PWA now adapts if it was launched from a basic packaged app +* UPDATE: Location of cached styles tweaked to reflect latest location in ZIM archives +* UPDATE: Cached main pages for WikiMed and Wikivoyage updated and used by vanilla app +* FIX: Properly define width of infoboxes in Wikimedia Destop style + +## Release 1.2.4 + +* UPDATE: Packaged archive updated to `wikipedia_en_100_maxi_2021-03` +* ENHANCEMENT: Support v1 article index in no-namespace ZIM archives +* ENHANECMENT: Detect and correct erroneous hard-coded sytling of navboxes in recent ZIMs +* FIX: Correct width of infoboxes in Wikipedia Desktop style +* FIX: Failure to recognize mouse click on title index entry +* FIX: Issue preventing proper relocation of infobox when transforming to desktop style + +## Release 1.2.3 + +* UPDATE: Better messaging around 'failure' to load SW mode (not a real failure) +* FIX: Calculation of appRoot directory + +## Release 1.2.2 + +* ENHANCEMENT: Use a list of customized start pages even if the app is generic +* FIX: Map markers not showing in Service Worker mode +* FIX: Implement internal app:// links for app-based assets +* FIX: Race condition in handover to PWA code +* FIX: Faulty permalinks + +## Release 1.2.1 + +* UPDATE: Minor update to improve handover between local and PWA code +* ENHANCEMENT: If app is running as a PWA, its identity is changed to Kiwix JS PWA +* FIX: Display of masonry tiles in JQuery mode with latest ZIMs + +## Release 1.2.0 + +* ENHANCEMENT: Enable Service Worker mode in UWP app +* ENHANCEMENT: New domain pwa.kiwix.org for the PWA/UWP app +* UPDATE: Preliminary support for ZIM archives with no namespace +* UPDATE: Revised Privacy Policy to reflect PWA usage + +## Release 1.1.4 + +* UPDATE: Included ZIM updated to `wikipedia_en_100_maxi_2021-01.zim` +* UPDATE: More consistent install prompt display in Configuration (for PWA) +* ENHANCEMENT: Provide more robust upgrade process for PWAs, including notification banner +* FIX: Disable HTTP cache when pre-caching upgraded app files +* FIX: Switching to jQuery mode in the PWA app no longer prevents the app working offline +* FIX: Display of masonry-style landing pages in SW mode +* FIX: Inconsistent use of Settings Store during app initialization +* FIX: Delete accidentally created Indexed Databases with wrong filename on startup (where possible) +* FIX: Provide explicit Content Security Policy headers to reduce or eliminate CORS errors in SW mode +* FIX: Broken manual display of images in SW mode +* FIX: Broken "Open all headings" option in SW mode +* FIX: Printing in SW mode +* FIX: Bugs with reload of last visited article +* META: Create-DraftRelease PowerShell script supports automatic creation of GitHub releases for more versions of the app + +## Release 1.1.3 + +* UPDATE: Included ZIM updated to `wikipedia_en_100_maxi_2020-12.zim` +* UPDATE: Support new location of mobile and desktop styles in Wikimedia ZIMs +* UPDATE: Upgrade Settings store to use localStorage over cookies where available +* ENHANCEMENT: Enable use of Native File System with NWJS +* FIX: Styling of index-based landing pages +* FIX: Bugs with file picking in Native FS + +## Release 1.1.2 + +* UPDATE: Included ZIM updated to `wikipedia_en_100_maxi_2020-11.zim` +* UPDATE: WebP support (via polyfill) for older browsers including Windows Mobile +* ENHANCEMENT: Improved block cache and faster conversion of file slice to blob +* REGRESSION: Manual extraction of images reverted to one-by-one to prevent errors with WebP batch decoding +* FIX: Critical error on some new Wikipedia articles containing equations +* FIX: Prevent erroneous display of Active Content Warning with ZSTD archives +* FIX: Reduce some cross-origin errors + +## Release 1.0.0 + +* UPDATE: Included ZIM updated to `wikipedia_en_100_maxi_2020-09.zim` +* UPDATE: App now supports newest archives encoded with ZSTD compression +* ENHANCEMENT: Decompression speed gains with ZSTD +* ENHANCEMENT: Allow use of keyboard to select archive from archive list +* ENHANCEMENT: Option to display articles with all sections open or closed +* FIX: Prevent archive list from jumping to wrong archive on click +* FIX: Critical error on load if packaged archive name has changed +* FIX: Download links are no longer erroneously cached by the Service Worker +* DEPRECATED: Scrolling information for new users + +## Release 0.9.9.992 (beta) + +* UPDATE: Included ZIM updated to `wikipedia_en_100_maxi_2020-08.zim` +* UPDATE: Some new Kiwix icons +* FIX: Prevent extraneous titles appearing in search +* FIX: Broken drag-and-drop +* FIX: Bug with construction of backlinks preventing load of some Wikipedia articles +* FIX: Calculate path of breakout icon correctly in SW mode +* ENHANCEMENT: Use Native File System API in PWA version +* ENHANCEMENT: Fix printing in the Electron app +* ENHANCEMENT: Support launching Electron app from shortcut +* ENHANCEMENT: Better error reporting in console log + +## Release 0.9.9.991 (beta) + +* FIX: Bug preventing all Kiwix apps accessing latest ZIMs (incorrect method of reading MIME type list) +* ENHANCEMENT: Included ZIM changed to wikipedia_en_100_maxi_2020-06.zim +* FIX: Several bugfixes to allow better running of Electron app in SW mode + +## Release 0.9.9.99 (beta) + +* ENHANCEMENT: Major upgrade to the title-search algorithm: search is now near-case-insensitive +* UPDATE: Included sample ZIM updated to wikipedia_en_ray_charles_maxi_2020-05.zim + +## Release 0.9.9.98 (beta) + +* ENHANCEMENT: Make app compatible with Electron / NWJS as a packaged app +* ENHANCEMENT: Better user experience for PWA version +* ENHANCEMENT: Attempt to make app a little more usable on Android browsers +* FIX: Incorrect layout when transforming WikiMed articles to desktop style +* FIX: Failure to load landing page when backing into it from history.back +* FIX: Incorrect hiding of toolbars after using in-page search +* UPDATE: Update Q Promise support to v1.5.1 + +## Release 0.9.9.97 (beta) + +* ENHANCEMENT: Intuitive toolbar hiding/showing on scroll down/up +* ENHANCEMENT: Added block cache to speed up search considerably +* ENHANCEMENT: Provide option to set number of results to find when searching +* ENHANCEMENT: Provide app install experience for PWA +* FIX: Search results can now be scrolled by touch on Windows 10 tablets +* FIX: Corrected height of search results window so content is not hidden under footer +* FIX: Prevent ugly jumping of iframe on new article load +* FIX: Allow use of special characters in article search +* FIX: Remove broken links to deprecated portable versions of archives +* UPDATE: Added missing stylesheets for cache +* UPDATE: Added some more initial files to load for PWA + +## Release 0.9.9.96 (beta) + +* FIX: Broken display of Kiwix download library +* FIX: Broken display of MathML when there are no images in the document +* FIX: Search bar always remains on-screen if selected (in non-mobile contexts) +* FIX: All images above the fold are now loaded (async timing of image scanning was premature) +* FIX: Math typeset by KaTeX is rendered better when there are mbox statements (fbox is used instead) +* FIX: Display-style maths SVGs are now correctly inverted in dark mode +* FIX: Standard dark-mode SVGs in infoboxes and elsewhere are now displayed correctly without inversion +* FIX: Truncated display of search box +* UPDATE: Updated KaTeX library to v0.11.1 +* ENHANCEMENT: Include more files in PWA payload to allow better offline functionality in PWA scenarios +* ENHANCEMENT: Appxbundle is now signed with Kiwix certificate for a better sideloading experience +* KNOWN ISSUE: In mobile contexts, top bar always gets hidden by Bootstrap on scroll + +## Release 0.9.9.95 (beta) + +* UPDATE: Improved support for stylesheets in latest Wikipedia ZIMs +* UPDATE: Updated the Privacy Policy +* ENHANCEMENT: The base app (not UWP) can now be installed as a PWA (visit to try) +* ENHANCEMENT: Assets are now cached in Service Worker mode +* ENHANCEMENT: Support MathML in latest Wikimedia ZIMs +* FIX: Fixed broken drag-and-drop +* FIX: Enable page extraction in Service Worker mode +* FIX: Rare condition where a missing ZIM causes the app to crash on load +* FIX: Fixed broken display of active content warning + +## Release 0.9.9.94 (beta) + +* ENHANCEMENT: Provide an alert if a packaged or picked file cannot be found +* ENHANCEMENT: App can now be compiled with Electron or NWJS to support Win XP/7/8.1 (see [releases](https://github.com/kiwix/kiwix-js-windows/releases)) +* ENHANCEMENT: CORS errors are now detected and a message provided to the user to help resolve +* ENHANCEMENT: Fallback to localStorage if cookies are not supported (e.g. running Chromium from file:///) +* FIX: Bug with equations containing apostrophes +* FIX: ZIMs running in quirks mode are now patched to run in standards mode +* FIX: Better algorithm for adding missing notes backlinks +* FIX: Better process for hiding navbar (though Bootstrap still ignores on mobile) +* FIX: All blocks are now opened for details-summary tags +* FIX: Bugs with the timing of display blanking between page loads +* FIX: Missing target attribute for hyperlinks to some external files +* FIX: Race condition preventing jQuery `alert.hide()` statements from running +* FIX: Enable dark theme and style transformations in Service Worker mode +* FIX: Enable printing in Service Worker mode +* FIX: Critical page reload loop when switching styles in print dialogue +* FIX: Update printing filters to support deatils-summary ZIMs +* FIX: Rare condition where a missing ZIM causes the app to crash on load +* FIX: Article is now re-loaded on change of content injection mode +* FIX: Scripts no longer run in Quirks mode (for clients supporting Service Worker) +* UPDATE: August 2019 update of Ray Charles ZIM + +## Release 0.9.9.91 (beta) + +* FIX: Remembered last page is now properly blanked on new archive load +* FIX: The article content div is now hidden until the HTML for the requested article is injected +* FIX: Number of stylesheets retrieved from ZIM was not being counted properly, causing some pages to load twice +* FIX: New MediaWiki ZIMs with details-summary tags are now supported +* FIX: Low-level ZIM reader now conforms to libzim logic in deriving title from url +* FIX: Low-level ZIM reader now reads the MIME type list from the ZIM +* FIX: A system alert utility is now provided, to avoid using synchronous alert() +* FIX: Bug causing localStorage to fill up has been fixed +* FIX: A workaround has been added for improperly coded hyperlinks in subdirectories in WikiMedia ZIM files +* FIX: Various tweaks to cached and trasnformed styles +* FIX: Many more equations now rendered correctly due to change of engine +* FIX: Service Worker mode now works in browser context (not app context) +* FIX: MathTex now rendered in Service Worker mode +* UPDATE: Removed dependency on base tag, simplifying handling of hyperlinks +* ENHANCEMENT: Links in clickable image maps (e.g. in Wikivoyage) are now supported +* ENHANCEMENT: App code supports developer setting a custom start page for a packaged ZIM +* ENHANCEMENT: A ZIM archive can be loaded through drag-and-drop of the file into the app +* ENHANCEMENT: A ZIM archive can be loaded by double-clicking the file in Explorer +* ENHANCEMENT: Article search results can now be selected with physical keyboard (down, up, enter keys) +* ENHANCEMENT: Better lazy image loading, and enable lazy loading for Service Worker mode +* ENHANCEMENT: Subtle fade-in effect for lazy-loaded images +* ENHANCEMENT: Allow breakout link to work in Service Worker mode +* ENHANCEMENT: Change MathTex rendering engine from MathJax to KaTeX (much faster) + +## Release 0.9.9.90 (beta) + +* FIX: Remembered last page is now properly blanked on new archive load +* FIX: Number of stylesheets retrieved from ZIM was not being counted properly, causing some pages to load twice +* FIX: The article content div is now hidden until the HTML for the requested article is injected + +## Release 0.9.9.89 (beta) + +* FIX: Fixed regression preventing use of download library +* FIX: Fixed problems searching for dirEntries with empty titles in new ZIMs +* FIX: Correctly handle anchor links with a single # +* ENHANCEMENT: Improved styling of checkboxes in light and dark modes + +## Release 0.9.9.88 (beta) + +* ENHANCEMENT: Article can now be sent to device's browser for reading, side-by-side viewing, printing +* ENHANCEMENT: A breakout icon can optionally be shown on each page to enable sending page to browser (see Settings) +* ENHANCEMENT: A new "auto" setting for dark mode and dark theme follows the system default for UWP apps +* ENHANCEMENT: Checkbox and radio buttons are now styled and coloured for better visibility (also larger) +* ENHANCEMENT: Packaged apps now default to showing the most appropriate ZIM archive types from Library +* ENHANCEMENT: Streamlined the process for adding other languages of packaged app ZIM files +* ENHANCEMENT: Language and date selectors in Library are now responsive to each other +* ENHANCEMENT: Download link more clearly signalled +* UPDATE: Deal with re-organized stylesheets in mwoffliner ZIMs +* FIX: Fixed regression caused by removal of timeout for find in article function +* FIX: App detects a language that is predominantly ASCII and uses left-side word searching in that case (Chinese open-type search should be unaffected) +* FIX: Prevent crash if changing language selector on "wrong" screen +* FIX: Prevent timeout-related crashes on slower +* FIX: Prevent unusable app state after clicking non-Roman alphabet button in Archive Index + +## Release 0.9.9.87 (beta) + +* FIX: Removed timeout preventing fast typing for find in article function (Ctrl-F / Alt-F) +* FIX: Allow searching in article for languages that do not use spaces (such as Chinese) + +## Release 0.9.9.85 (beta) + +* ENHANCEMENT: Support for playing media (video/audio) in the ZIM if the device has the required codec +* ENHANCEMENT: Support for "downloading" media (e.g. videos+subtitles) from the ZIM +* ENHANCEMENT: Media are launched via appropriate app selection menu after download (mobile) +* ENHANCEMENT: Preliminary support for TED and dirtybiology ZIMs +* ENHANCEMENT: Preliminary support for Project Gutenberg ZIMs +* ENHANCEMENT: Support for "downloading" epub ebooks from Gutenberg ZIMs +* ENHANCEMENT: Epubs are launched in Edge's built-in epub reader, or via app selection menu +* ENHANCEMENT: Typing a space in search box now displays an Archive Index +* ENHANCEMENT: Option to support non-Roman alphabets for Archive Index +* ENHANCEMENT: If active content is detected in the ZIM, information is given about accessing the Index instead +* FIX: Add startup bootloop crash prevention +* FIX: Exceptions produced by unsupported JS in ZIM articles are now caught +* FIX: Prevent app crash with malformed anchor references +* FIX: Rogue ampersands in MathJax output are now correctly escaped +* FIX: Correct logic in binary search so it doesn't stall if assets in A namespace have no title +* FIX: Missing footnote reference numbers in desktop ZIMs transformed to mobile style +* FIX: Assets with unescaped characters in URL should now be retrieved correctly +* FIX: Individual extraction of images when images are disabled in Configuration + +## Release 0.9.9.8 (beta) + +* UPDATE: Ray Charles ZIM to October 2018 version +* ENHANCEMENT: Add a modern CSS spinner and rework status messages +* ENHANCEMENT: Neater presentation of article search results +* FIX: Crash when previously picked archive has been moved or deleted +* FIX: Support changed format of anchor references in latest English Wikipedia +* FIX: Correctly apply mobile styles when one of the defaults is missing +* FIX: Incorrect utf8 characters in mobile styles + +## Release 0.9.9.7 (beta) + +* ENHANCEMENT: Optimization of decompression process +* WORKAROUND: Prevent periodic hang in Service Worker mode +* FIX: Crash in RegExp engine caused by malformed backreferences in some articles + +## Release 0.9.9.6 (beta) + +* UPDATE: Mobile styles +* ENHANCEMENT: New compile of decoding engine provides significant performance improvement +* ENHANCEMENT: Better memory management to prevent app crashes +* ENHANCEMENT: Reduced dependency on jQuery for further performance gains +* ENHANCEMENT: Tweaks to dark theme +* ENHANCEMENT: Improvements to show-hide sections toggle function with footnote/endnote references +* FIX: Headers that open or close sections are no longer accidentally selected on tap or click +* FIX: Descriptive text for UI controls is now non-selectable for cleaner app experience +* FIX: Whitespace at the end of the page is now preserved when hiding reference section +* FIX: Tapping headers now only opens and closes sections on narrow screens as intended by WikiMedia + +## Release 0.9.9.5 (beta) + +* ENHANCEMENT: Headings in article can be toggled open or closed with tap or click +* ENHANCEMENT: Current page is cached in localStorage for very fast restart and reloading +* ENHANCEMENT: Automatically switch to desktop style for better printing result +* FIX: Bug which prevented switching the printing device (caused app crash) +* FIX: Bug in download links preventing display of language codes that are substrings of other language codes + +## Release 0.9.9.4 (beta) + +* ENHANCEMENT: Experimental support for printing articles +* ENHANCEMENT: Print zoom capability +* ENHANCEMENT: Prevent printing of location pins +* ENHANCEMENT: Set maximum page width to 100% before printing +* ENHANCEMENT: Better presentation of About and Changelog information +* WORKAROUND: MW-Offliner bug which places extraneous tags in some HTML id attributes + +## Release 0.9.9.3 (beta) + +* FIX: Article now reloads correctly when switching styles +* FIX: Unhandled exception after using in-article word search +* FIX: Browser history now remembered for first page load +* ENHANCEMENT: Filter ZIM archives by date in download links +* ENHANCEMENT: Option to remove maximum page width restriction for Wikipedia articles +* ENHANCEMENT: Setting or clearing dark themes no longer require page reload +* ENHANCEMENT: Wider range of infoboxes, and "homonymie" hatnotes supported +* ENHANCEMENT: Better algorithm for moving first paragraph when there are stacked infoboxes + +## Release 0.9.9.2 (beta) + +* FIX: Added more padding for content hidden under the bottom bar +* FIX: New mode of injecting HTML into iframe fixes baseUrl issues +* ENHANCEMENT: Some code redundancy removed +* ENHANCEMENT: Faster typesetting of TeX equations +* ENHANCEMENT: Experimental support for equations in mathoverflow and related stackechange ZIMs +* ENHANCEMENT: Dark theme support for stackexchange ZIMs +* ENHANCEMENT: Uncluttered the UI for file selection + +## Release 0.9.9 (beta) + +* FIX: Reduced memory usage for decompressing multiple SVG images/equations to prevent crash on devices with 1GB RAM +* FIX: Display bug causing Settings tab to remain selected after article load +* FIX: Corrected dark-style backgrounds in some infoboxes on WikiMed +* FIX: Loads landing page when an article is not found (instead of throwing a silent error) +* WORKAROUND for misplaced hatnotes in mobile-style ZIMs +* WORKAROUND for hidden IPA pronunciation information on some articles +* ENHANCEMENT: 'Unclicking' a tab (Settings or About) now returns the user to the article +* ENHANCEMENT: Activating dark theme for UI now activates article dark theme by default +* ENHANCEMENT: Improved handling and display of file selectors +* ENHANCEMENT: Clearer navigation signposting from About tab +* ENHANCEMENT: Dedicated icon for WikiMed archives + +## Release 0.9.7 (beta) + +* UPDATE: January 2018 update of Wikivoyage ZIM archive to wikivoyage_en_all_novid_2018-01.zim +* ENHANCEMENT: The Wikivoyage app now hides the file selectors by default in the Config menu to avoid confusion and to encourage use of Kiwix JS for anything not related to Wikivoyage +* FIX: Added icon indicating that a link is to an external web site +* ENHANCEMENT: Inject footnote backlinks if the ZIM doesn't have any +* ENHANCEMENT: Support ZIMs that have subdirectories (Stackexchange family ZIMs) +* FIX: Bugs in mobile to desktop style transformation +* FIX: Issue with infoboxes and images not stacking correctly on mobile displays +* FIX: Support new-style infoboxes in German Wikivoyage +* FIX: Last-visited page was not being remembered when user picked the file as a single archive +* FIX: Bug which prevented the dark mode by simple inversion from functioning +* FIX: Issue with toolbar icons being misaligned on small screens + +## Release 0.9.6 (beta) + +* FIX: Prevent bottom toolbar from wrapping across two lines on small screens +* ENHANCEMENT: Enabled autoloading of last-read page on app start (and privacy option to turn this off) +* ENHANCEMENT: Geo-location co-ordinates in English and German Wikivoyage are represented with a location marker that links to the Maps app (opens map to show the precise location) +* ENHANCEMENT: Telephone numbers marked with tel: links will attempt to open a relevant app for dialling (e.g., Skype or the People app) when selected +* FIX: Links in Stackexchange ZIMs are now recognized and can be used to open the content +* WORKAROUND: Some Wikivoyage entries have HTML showing in the header, and this is now (temporarily) suppressed (the HTML is interpreted) until the ZIMs are fixed +* ENHANCEMENT: The toolbar icon now switches to a Wikivoyage logo if a Wikivoyage ZIM is loaded + +## Release 0.9.3 (beta) + +* WORKAROUND: Mis-aligned toolbar icons on smaller screens +* FIX: Rogue HTML showing in some pages from recent ZIM archives +* ENHANCEMENT: Better experience when scanning local storage for archives + +## Release 0.9.0 (beta) + +* ENHANCEMENT: Auto-loading of ZIM archives on device storage +* ENHANCEMENT: In-page search / highlighting with Ctrl-F / Alt-F or tap on search button +* ENHANCEMENT: Uses UWP APIs for sotrage: Future Access List so that users do not need to pick their ZIM file every time +* ENHANCEMENT: Dark-themed User Interface +* ENHANCEMENT: Experimental Wikipedia Dark Theme +* ENHANCEMENT: Font scaling for articles and for the UI +* ENHANCEMENT: Cleaner, minimalistic UI (eliminated hamburger menu due to poor navigability) +* FIX: Display of SVG files is handled by careful queuing of images to send to the decompressor (fixes hang in articles with many equations) +* ENHANCEMENT: If the TeX string of an equation is available, it will be typeset using MathJax (huge speed improvement) +* ENHANCEMENT: Transform the layout of Wikipedia articles from desktop to mobile style and vice versa (experimental) +* ENHANCEMENT: Disable the display of images, and extract them one-by-one as needed (for slow devices) +* ENHANCEMENT: Only send images in current viewport to the decompressor, and prefetch configurable (by developer) number of images from above and below the viewport diff --git a/dist/KiwixWebApp-github.jsproj b/dist/KiwixWebApp-github.jsproj new file mode 100644 index 000000000..8aed12910 --- /dev/null +++ b/dist/KiwixWebApp-github.jsproj @@ -0,0 +1,338 @@ + + + + + + + Debug + AnyCPU + + + Debug + ARM + + + Debug + x64 + + + Debug + x86 + + + Release + AnyCPU + + + Release + ARM + true + + + Release + x64 + true + + + Release + x86 + true + + + + a1a5e0b9-13d4-41fb-810d-518949f03df4 + + + Latest + true + + + true + + + + 14.0 + + + + + UAP + 10.0.18362.0 + 10.0.10240.0 + $(VersionNumberMajor).$(VersionNumberMinor) + en-GB + False + False + Always + neutral + AC88CB5C77BD1D6D2ECC0849F5C200C427E0ECCA + False + 1 + OnApplicationRun + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + + + + + diff --git a/dist/KiwixWebApp.jsproj b/dist/KiwixWebApp.jsproj new file mode 100644 index 000000000..0c8327c83 --- /dev/null +++ b/dist/KiwixWebApp.jsproj @@ -0,0 +1,339 @@ + + + + + + + Debug + AnyCPU + + + Debug + ARM + + + Debug + x64 + + + Debug + x86 + + + Release + AnyCPU + + + Release + ARM + true + + + Release + x64 + true + + + Release + x86 + true + + + + a1a5e0b9-13d4-41fb-810d-518949f03df4 + + + Latest + true + + + true + + + + 14.0 + + + + + UAP + 10.0.18362.0 + 10.0.10240.0 + $(VersionNumberMajor).$(VersionNumberMinor) + en-GB + False + False + Always + neutral + 30911494F6E4F0983DB567937C8D9A7B869FA8D7 + False + 1 + OnApplicationRun + KiwixWebApp_StoreKey.pfx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + + + + + diff --git a/dist/LICENSE b/dist/LICENSE new file mode 100644 index 000000000..9cecc1d46 --- /dev/null +++ b/dist/LICENSE @@ -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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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: + + {project} Copyright (C) {year} {fullname} + 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/Package.StoreAssociation.xml b/dist/Package.StoreAssociation.xml new file mode 100644 index 000000000..9d1b5e21e --- /dev/null +++ b/dist/Package.StoreAssociation.xml @@ -0,0 +1,404 @@ + + + CN=0A5438F5-EEA6-4300-9B77-E45BBD148885 + Kiwix + AAD + http://www.w3.org/2001/04/xmlenc#sha256 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kiwix.KiwixJS + + Kiwix JS + Kiwix JS Beta + + + + Kiwix.KiwixDesktop + Kiwix.WikiMed + Kiwix.WikivoyagebyKiwix + + + + + 0.0.0.0 + Neutral + 2.1.0.0 + + + 0.0.0.0 + Neutral + 2.1.0.0 + + + 0.0.0.0 + Neutral + 2.1.0.0 + + + 0.0.0.0 + Neutral + 2.1.0.0 + + + 0.0.0.0 + Neutral + 2.1.0.0 + + + + \ No newline at end of file diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 000000000..b742b31ec --- /dev/null +++ b/dist/README.md @@ -0,0 +1,224 @@ +# Kiwix JS for PWA, Windows and Linux (Electron, NWJS, UWP) + +Demos: [ [Instal the PWA on Desktop](screenshots/Install-PWA.md) ] [ [Install PWA and use OPFS on Android](screenshots/Demo-OPFS_Chrome_Android.md) ] [ [Picking a folder of archives](screenshots/Folder-Picking.md) ] [ [Install PWA on Firefox Android](screenshots/Install-PWA_Firefox_Android.md) ] [ [Demo of all OPFS features](screenshots/Demo-OPFS_all_features.md) ] [ [Adding app to Edge sidebar](screenshots/Add-KiwixPWA-to-Edge-sidebar.md) ] + +![Kiwix JS Seven Wonders Montage trans](https://user-images.githubusercontent.com/4304337/218268736-2820050c-289f-4d4b-aef9-7e9f4f33c658.png) + +**Kiwix is an offline browser for Wikipedia, Project Gutenberg, TED Talks, Wikivoyage, Stackexchange, and many other sites and resources. +It makes knowledge available, in many different languages, to people with limited or no Internet access. The software and the content are +free for anyone to use. Get the app and download your choice of offline content (ZIM archives, which can be downloaded free in-app). +There are hundreds of multilingual archives to choose from, on many different topics and subjects. Build a whole digital library of +offline knowledge!** + +The app is available either as an offline-capable, [installable Web App](#universal-progressive-web-app) (PWA), for almost all modern +browsers and devices, or else as app packages for various Windows and Linux operating systems: see +**[Kiwix JS for Windows and Linux](https://kiwix.github.io/kiwix-js-pwa/app)**. For **Mac and iOS**, use the offline +web app ([more info below](#universal-progressive-web-app)). + +We also have packaged apps of **[WikiMed by Kiwix](https://kiwix.github.io/kiwix-js-pwa/wikimed)** (a complete medical +encyclopaedia), and **[Wikivoyage by Kiwix](https://kiwix.github.io/kiwix-js-pwa/wikivoyage)** (a complete travel guide) in +English -- no extra download needed! (You can, however, download other languages in these apps.) + +If you are using **Windows 10 or 11**, then all three apps are conveniently available in the Microsoft Store: +**[Kiwix JS UWP](https://www.microsoft.com/store/apps/9P8SLZ4J979J)**, +**[WikiMed by Kiwix](https://www.microsoft.com/store/apps/9PHJSNP1CZ8J)**, +and **[Wikivoyage by Kiwix](https://www.microsoft.com/store/apps/9N5SB90Q4JBJ)**. They will automatically update when a new package is +available. If you are using **Linux**, then the +[Electron AppImage package](http://kiwix.github.io/kiwix-js-pwa/app) of Kiwix JS also (optionally) self-updates, +as does the installable [Windows Electron package](http://kiwix.github.io/kiwix-js-pwa/app). All other apps can +(optionally) notify you when a new version is available, and give you a download link. + +## Universal Progressive Web App + +*Don't like stores or packages?* We've got you covered! Launch this app instantly by opening the installable, offline-capable PWA +(Progressive Web App) in your browser right now at **[pwa.kiwix.org](https://pwa.kiwix.org/)**. This works in any browser that +supports Service Workers: modern Chrome, Edge, Firefox and Safari (note that on iOS devices, you must use Safari because Apple +bans the use of Service Workers in any other browser on i-devices). + +Get a free ZIM archive to use with the PWA from the [Configuration page](https://pwa.kiwix.org/www/index.html#downloads) of the app, +or you can preview a ZIM at [library.kiwix.org](https://library.kiwix.org) before you download one. +Once installed, bookmarked or added to your home screen, the PWA works even when your device is fully offline! +**[Take a look at our demo](screenshots/Install-PWA.md) that shows how quick and easy it is to install the PWA.** + +And when we say "Universal", we mean Universal: Android, iOS, macOS, Linux, Windows... + + + +## How do I get all of Wikipedia offline? + +If you want it with images, then please be aware that it's a big download: the English version is around 90 Gigabytes! We recommend you +try it out first with one of the themed, much smaller, archives, like Astronomy, Chemistry, Maths, Physics, etc. In-app, you'll find a +handy dropdown that allows you to choose your language and your theme, and then download it. The archive will download in your browser. + +If you really want full English Wikipedia with images, then we strongly recommend you use the open-source app +[qBittorrent](https://www.qbittorrent.org/) to download it on a PC with plenty of disk space. First install qBittorrent. Then, when you +select a large archive for download in the app, it will provide you with a torrent link. Click the link and allow your browser to +download and open the torrent file. This small file will open in qBittorrent and you'll be asked where you want to save the archive you +want to download. It's much easier than it sounds! + +## What about Zimit (Web Archive) format? + +Zimit is the new service that allows you to archive any web site as a ZIM. Try it out at https://youzim.it/. The Kiwix JS PWA and Electron apps have +_experimental_ support for Zimit archives: text, images, dynamic content will be displayed, but some content such as embedded video or audio may break. +Try it and see! You don't have to make your own Zimit ZIMs: Kiwix download library (available in-app) publishes a number of fantastically useful refernce +sites in the Zimit file format, such as the Ready.Gov disaster preparedness site, the fascinating Low-Tech magazine, the CIA World Factbook -- +amongst many others. Just open the Zimit directory in the in-app library. + +![Kiwix_better_zimit_montage](https://github.com/kiwix/kiwix-js-pwa/assets/4304337/9462d1ee-d7e4-45db-866d-a1839c0f6b19) + +## Browser support + +We pride ourselves in maintaining support for old browsers and platforms, given that an important target audience for this app consists of +users in the developing world who may only have access to old devices with outdated software. We test the app frequently on older browsers +and operating systems. The app will usually detect which features don't work on a given browser, and disable them or work around them. However, +in some cases (e.g. Firefox <= 59), the app will set itself to Service Worker mode, but this mode will silently fail. If affected, please +try switching the app to JQuery mode (see Content injection mode in Configuration). + +### Officially supported + +* As a [Progressive Web App](https://pwa.kiwix.org) (PWA) on Linux, Windows, Android, iOS, macOS: + + + Google Chrome / Chromium >= 59 (and many browsers based on Chromium, e.g. Opera, Samsung Internet) + + Microsoft Edge (Chromium) >= 79 + + Mozilla Firefox >= 60 (but see note about Android`*`) + + Apple Safari >= 11.3 for iOS and macOS (full-text search only works on iOS 15+) + + Microsoft Edge Legacy 18 (Windows only) + +* As an application implemented with the following frameworks: + + + Electron >= 1.8.0 (Ubuntu, Debian, Fedora, OpenSUSE, AppImage, Windows): [GitHub release](https://kiwix.github.io/kiwix-js-pwa/app) + + Universal Windows Platform (UWP) >=10.0.10240: [Microsoft Store app](https://www.microsoft.com/store/apps/9P8SLZ4J979J) or [GitHub release](https://kiwix.github.io/kiwix-js-pwa/app) - Windows 10/11 (Electron), Windows on ARM, Xbox, Windows 10 Mobile + + NWJS >= 0.23.0 (Windows 7/8/10/11): [GitHub release](https://kiwix.github.io/kiwix-js-pwa/app/nwjs.html) + + NWJS 0.14.7 (Windows XP/Vista only): [GitHub release](https://kiwix.github.io/kiwix-js-pwa/app/nwjs.html) + +`*` With **Firefox on Android**, the app is only useable with files stored in the Origin Private File System. There is a Firefox bug whereby the browser +attempts to read the entire ZIM archive into memory if opening it from the user-visible file system. + +### Deprecated + +Although deprecated, we will keep support for as long as is practical: + +* Internet Explorer 11 (JQuery mode only, no offline use of PWA) +* Edge Legacy <= 17 (JQuery mode only, no offline use of PWA) +* Firefox 45-59 (some versions require the user to switch manually to JQuery mode) +* Chromium 49-58 (some versions only run in JQuery mode) + +## Technical information + +This repository is for development of the Kiwix JS app for PWA, Electron, NWJS and Windows 10/11 Universal Windows Platform (UWP). +The latest code is usually on the main branch, but this is used for active development and may be several commits ahead of releases. +Installable and portable versions for Windows (XP/Vista/7/8/10/11) and Linux (32bit and 64bit) are available from +[releases](https://github.com/kiwix/kiwix-js-pwa/releases/). Unstable [nightly builds](https://download.kiwix.org/nightly/) of the +Electron and NWJS apps are available together with a [development deployment](https://kiwix.github.io/kiwix-js-pwa/), but code may be +buggy and change rapidly. + +The code is based on [Kiwix JS](https://github.com/kiwix/kiwix-js), a lightweight HTML/JavaScript port of the Kiwix Offline reader. +Significant development has gone into packaging this app for various frameworks, and to add some features which are often backported +upstream. The PWA can be installed as a fully integrated system app if opened in a modern Chromium browser, and it uses the File +System Access API and the File Handling API for a native-like experience in browsers supporting those APIs. For more info about these +APIs, see the bottom of this page: +[File System Access API and File Handling](screenshots/Install-PWA.md#file-system-access-api-and-file-handling). + +All three apps are available in the WinGet Package Manager. You can sideload the UWP version (in Windows 10/11) by opening a Command +Prompt or PowerShell terminal and typing `winget install kiwix.kiwixjs` (this version will not auto-update, but it will let you know when +a new update is ready to install). Alternative sideloading instructions are available in the +[release notes](https://kiwix.github.io/kiwix-js-pwa/app). The Electron version can be installed with +`winget install kiwix.kiwixjs.electron`, or else by downloading a package from +[Releases](https://github.com/kiwix/kiwix-js-pwa/releases/). For testing, the Store, Electron and NWJS versions come packaged with a +mini archive of the top 100 Wikipedia articles (without images and with only the lede paragraph). + +This app is regularly tested fully on Wikimedia ZIM files, though many other ZIM file types work. There is experimental support for most +Zimit ZIMs from version 1.9.8 onwards, and Type 1 Zimit ZIMs are supported from 2.1.0 onwards. Some archives are very large indeed: for +most storage types (including microSD cards) that are formatted as exFAT or NTFS, you can store even these very large files in the storage +with no problem. However, if you plan to store your ZIM file on an SD card formatted as **FAT32**, and you wish to use an archive larger +than 4GB, then you will need to split the ZIM: see +[file splitting instructions](https://github.com/kiwix/kiwix-js-pwa/tree/main/AppPackages#download-a-zim-archive-all-platforms). + +A lot of development for this app happens upstream in the [Kiwix JS repository](https://kiwix.github.io/kiwix-js/) to which I ontribute +actively. Without Kiwix JS, this app would be impossible, and huge thanks goes to the original developers of first the Evopedia app and +then Kiwix HTML5, which eventually became Kiwix JS. The original source code runs almost "as is" on the UWP platform, which is testament +to how well written that app is. The port and further development of Kiwix JS Windows for Windows 10/11 (including Mobile) is by Geoffrey +Kantaris. I can be contacted by email: egk10 at cam ac uk. + +## Reporting bugs + +Please use this repository's [issue tracker](https://github.com/kiwix/kiwix-js-pwa/issues) to report any bugs you have found with the software. Open a new +issue (after checking that the issue you identified doesn't have an issue already). In all cases, please state clearly the version number you are using (see +the About page in the app), and which browser or platform you are using. Please read the +[Kiwix JS bug reporting guidelines](https://github.com/kiwix/kiwix-js/blob/main/REPORT_BUG.md) before opening your issue. + +## Contributing code + +If you have coding experience and are interested in contributing to this project, we suggest you start by contributing to the upstream +[Kiwix JS repository](https://kiwix.github.io/kiwix-js/), as much of the code contributed there is subsequently ported to this repository. +Please see [CONTRIBUTING.md](https://github.com/kiwix/kiwix-js/blob/main/CONTRIBUTING.md) for details. +If you wish to contribute to a specific Kiwix JS Windows/Linux feature, then please open an issue on this repository explaining the feature or other code you +aim to contribute and how you propose this should be done. You should be comfortable creating PRs and have good knowledge of JavaScript. Follow the same +[contributing guidelines](https://github.com/kiwix/kiwix-js/blob/main/CONTRIBUTING.md) as for Kiwix JS. We have now transitioned this app to ES6 code, which is +transpiled by [rollup.js](https://rollupjs.org/) and [Babel](https://babeljs.io/) to code that is compatible with older browsers. Brief instructions: + +* Clone this repo and run `npm install` to get the Node dependencies; +* To serve the app with [Vite.js](https://vitejs.dev/), which includes Hot Module Replacement, run `npm run serve`; +* You MUST turn on the option to Bypass the app cache in Configuration under Troubleshooting and development. If the app loads in a disordered way, +you should still be able to access this setting so long as the app is in ServiceWorker mode (if it isn't turn it on under Content injection mode). Refresh the app with Ctrl-R; +* Vite will watch for changes and will refresh the app when you make any and save them; +* To preview the bundled version of the app, run `npm run preview`, and Vite will build the app and open a browser window to view the bundled version; +* To fully build the app, run `npm run build`. The built app will be saved to a directory called `dist` in your cloned repo; +* To run the app in the Electron framework, you can use `npm start`. This will run the unbundled app in the Electron version specified in `package.json`. See various +scripts to build the bundled version of the app for Electron in `package.json` (you can only build it for the OS you are currently on, though the Linux app can be built +on Windows with WSL). + +## Other contributions / donations + +If you like this project and would like to contribute financially towards keeping it running, you can make one-off or regular donations on the Kiwix +[Support page](https://www.kiwix.org/en/support/). Donations help pay for servers, coding certificates, maintenance, etc. If you would like to contribute +time and expertise rather than money, and you have good knowledge of a foreign language, you can help with [translations of Kiwix projects](https://translatewiki.net/wiki/Special:SearchTranslations?query=kiwix&language=en). +Alternatively, you can help improve Wikimedia projects by [making edits or corrections](https://en.wikipedia.org/wiki/Wikipedia:Contributing_to_Wikipedia) +to Wikipedia or Wikivoyage articles. + +![ContactSheet-Kiwix-5x6_sphere@0 5x_masked](https://user-images.githubusercontent.com/4304337/204076458-d95cf440-294a-4655-bc59-2529b123708c.png) + +## Privacy Policy + +When installed, Kiwix JS Windows and Linux is capable of working entirely offline. This application does not collect or +record any of your personal data, though if you installed it from a Store, the Store operator may collect anonymous +usage data (see below). The app 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 with the optional exception of the +last-visited page. + +If you access this application from a secure web server (e.g. the PWA server), it will only work offline if your browser +is capable of installing a Service Worker. If you install or bookmark the PWA version in Service Worker mode, then it +will work offline, but note that **by design** any PWA will periodically check the PWA server (in this case, +https://pwa.kiwix.org/), if it is available, to check for an updated Service Worker. + +Versions of the app that are not installed via a Store or that are not PWAs, will offer to check the GitHub Releases API +for updates on startup, but this functionality is optional and can be kept off. Some Electron apps will also optionally +self-update (via the same API), if you allow them to check for updates. This applies to the installer (setup) version for +Windows, and to the AppImage version for Linux. The Store version and the PWA also self-update, but this is not +controllable within the app. + +By default, this application will remember your last-visited page between sessions using local stoarage or a cookie +that is accessible only on this device. If you are accessing sensitive information that you do not wish to be displayed +next time you open this app, we recommend that you turn this option off in the Configuration options. + +This application only reads the archive files that you explicitly select on your device and files included in its own +package: it is not capable of reading any other files. It will only access the Kiwix archive download server if +you specifically request it to access the download library for ZIM archives on the Configuration page. If you run the +app as a PWA, it will cache its own code from the secure PWA server and then can be used offline. Some ZIM archives +contain active content (scripts) which may, in rare circumstances, attempt to contact external servers for incidental files +such as fonts. We block these with a Content Security Policy injected into articles, but in some cases, if the article already +has a CSP, ours may be overwritten. Note that scripts only run if you enable Service Worker mode in Configuration. + +**If you believe your Internet access is insecure, or is being observed or censored, we recommend that you completely shut +down your Internet access (Data or WiFi) before using the application.** + +Additionally, if you obtained this app from a Vendor Store (including extensions), then the Store operator may track your +usage of the app (e.g. download, install, uninstall, date and number/duration of sessions) for the purpose of providing +anonymous, aggregate usage statistics to developers. If this concerns you, you should check the relevant Store Privacy Policy +for further information. + +**Builds of this app are available that do not use a Store or an online Service Worker.** Please see: + +* [Releases](https://github.com/kiwix/kiwix-js-pwa/releases/) +* [NWJS version](https://kiwix.github.io/kiwix-js-pwa/app/nwjs.html) - this version is completely standalone + and will never access servers unless you allow it to. diff --git a/dist/archives/README.md b/dist/archives/README.md new file mode 100644 index 000000000..92bb151de --- /dev/null +++ b/dist/archives/README.md @@ -0,0 +1,24 @@ +## If you are viewing this folder on GitHub or a cloned repository… + +Due to GitHub filesize restrictions, it is not possible to upload ZIMs that are larger than 100Mb to this directory. If you wish to build the source code yourself, +you will need to add the appropriate packaged ZIM file to your local repository before building, or else commit a +[split ZIM archive](https://github.com/kiwix/kiwix-js-pwa/tree/main/AppPackages#download-a-zim-archive-all-platforms) in chunks ideally below 50MB each chunk. + +## How to change the packaged archive + +If you have a distribution of this app and want to delete the packaged archive to save space, or change the default archive, simply delete the ZIM file here or add your own file and change some values in the `www/js/init.js`. The values to change are these: + +``` +params['packagedFile'] = "name_of_your_file.zim"; +params['fileVersion'] = "descriptive_name_of_your_file (Jan-2020)"; // These values will show in the app +params['cachedStartPages'] = false; +params['kiwixDownloadLink'] = "https://download.kiwix.org/zim/"; //Include final slash +``` + +You can have more than one ZIM archive in `archives`, but only one will launch on app startup as the packaged file. If you do have more than one, then be sure to set `params['showFileSelectors'] = true;` to aid in discoverability of the other archive, otherwise your users will not easily realize it is there. Keeping that parameter as `false` dedicates the app to the packaged archive, but users can still override and pick a different ZIM by changing the value in Expert Settings (Config). + +## Building the app + +If you are building a custom packaged version of the app, then remember that ZIMs will not appear in your online GitHub repo, so add a text file to `archives` to show the intended filename, like the `*.zim.txt` file in this directory, e.g. `wikivoyage_en_all_novid_2019-07.zim.txt`. The text file can be empty (0 bytes). You should also set the fields listed above in `www/js/init.js` to match, and additionally decide whether to set `params['showFileSelectors'] = false;` (if you want to simplify the interface in Config). + +Advanced: If you wish to restrict the files that users can search for on the server, e.g. to ensure your app remains dedicated to WikiMed archives, and to aid discoverability of only those archives, then look in `kiwixServe.js` and search for `DEV:` (first comment labelled `DEV:`) for more info. Also, ensure `params['kiwixDownloadLink'] = "https://download.kiwix.org/zim/";` is set appropriately so that the download library opens in the directory where multilingual or updated versions of your packaged ZIM can be found. diff --git a/dist/archives/wikipedia_en_100_mini_2023-10.txt b/dist/archives/wikipedia_en_100_mini_2023-10.txt new file mode 100644 index 000000000..e69de29bb diff --git a/dist/images/2000px-Kiwix_logo_v3.svg.png b/dist/images/2000px-Kiwix_logo_v3.svg.png new file mode 100644 index 000000000..e572fd6bb Binary files /dev/null and b/dist/images/2000px-Kiwix_logo_v3.svg.png differ diff --git a/dist/images/2000px-Kiwix_logo_v3_with_border.png b/dist/images/2000px-Kiwix_logo_v3_with_border.png new file mode 100644 index 000000000..09ee6f588 Binary files /dev/null and b/dist/images/2000px-Kiwix_logo_v3_with_border.png differ diff --git a/dist/images/2000px-Kiwix_logo_v3_with_border_trans.png b/dist/images/2000px-Kiwix_logo_v3_with_border_trans.png new file mode 100644 index 000000000..ff4ea725d Binary files /dev/null and b/dist/images/2000px-Kiwix_logo_v3_with_border_trans.png differ diff --git a/dist/images/BadgeLogo.scale-100.png b/dist/images/BadgeLogo.scale-100.png new file mode 100644 index 000000000..9d7725560 Binary files /dev/null and b/dist/images/BadgeLogo.scale-100.png differ diff --git a/dist/images/BadgeLogo.scale-125.png b/dist/images/BadgeLogo.scale-125.png new file mode 100644 index 000000000..4c4fef3d8 Binary files /dev/null and b/dist/images/BadgeLogo.scale-125.png differ diff --git a/dist/images/BadgeLogo.scale-150.png b/dist/images/BadgeLogo.scale-150.png new file mode 100644 index 000000000..dc8146b88 Binary files /dev/null and b/dist/images/BadgeLogo.scale-150.png differ diff --git a/dist/images/BadgeLogo.scale-200.png b/dist/images/BadgeLogo.scale-200.png new file mode 100644 index 000000000..a8b817376 Binary files /dev/null and b/dist/images/BadgeLogo.scale-200.png differ diff --git a/dist/images/BadgeLogo.scale-400.png b/dist/images/BadgeLogo.scale-400.png new file mode 100644 index 000000000..6b268bef2 Binary files /dev/null and b/dist/images/BadgeLogo.scale-400.png differ diff --git a/dist/images/EdgeChromium.png b/dist/images/EdgeChromium.png new file mode 100644 index 000000000..a82fe8465 Binary files /dev/null and b/dist/images/EdgeChromium.png differ diff --git a/dist/images/KiwixLogoVerticalHero_v3.png b/dist/images/KiwixLogoVerticalHero_v3.png new file mode 100644 index 000000000..f9051f7c7 Binary files /dev/null and b/dist/images/KiwixLogoVerticalHero_v3.png differ diff --git a/dist/images/KiwixLogoVertical_v2.svg b/dist/images/KiwixLogoVertical_v2.svg new file mode 100644 index 000000000..6fd421607 --- /dev/null +++ b/dist/images/KiwixLogoVertical_v2.svg @@ -0,0 +1,591 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + eJzcfediArmu8PcCvAMECB1m6C10hhISCBBKGnUoobct98d99s/29GEaZe+ee3fPyQLjkWxZkiVZ +ss2GWsOVHm+GpMvnxvQ6szm7JwfHzT6qR7/qS8vl6XDcw5+sdZseD7kx0ChdCvfohi1yf5hv1lG9 +FwBw+8FDAr5tbYxmy8GUPJJ7p75xJCeDtf7LOtqsAazRkRx/2Wx6qw20bs6PSxK0fy61Sx1XpVqo +9jDcvR1PbExnAPTc4Aja4LgH/BvRe6PekL72Ap8P1n8MDof5f8GnQV/YB37LbE7r8Xw9zWz+iuox +vR8L6fFIOAD++LzgcXFeJw/CNm5/KOT1+cLhYAgPhwLwFbc3GMH9AW8g5AvD1/3ukA/zev1BLIJ+ +8OHucNjnDfkCEV8gCMDmNqPTilwfa/vNiDwcspvlZn+I6rN/g3G/ADqsjwN9l1wuN3/qM8vBaKED +NAz0iPmSBORaDY563Acpmy7h3l7mNF+OX0+rIQkIGQhH4M++HgL5fgCwAFj4Gf4c6pVW4JcGeTyC +4QCEcHbqhQy/G5AK8F/rZ52cztFkApJ+22iw+812NdgvDvchBATZJFfbJZgxRN1IBHcH9KEg5o7g +4Yg/4MO9Ackf6XcBRdB7YNzuIOYLeSNefxgL6MMRzI2Fgl4s4vcG/GBOwSNBA9zvj/BbUPC4eSH/ +mJN/RvWvmzVJET+9PzYozvH7MYz6Sz2pn5bk/n09PwKioDFFKOq/bMbkErRn3ycAix8Y+uLcX6pB +c7AHAgDYbbM8HZGMhBkMYHYrg79JyCI4haC6JdfNTQv10QVmQe+NhHxuP0czzO0NBPxhPxYIgCnC +vbgeDwT9ehwDffcGEd5wWO/3sb3Bub8UUogCImAwAxKZa4B7qvv5dL6O+rx6rxfjoaQYrLCfjzn+ +Cnn1YeoPGqgbjAj+g+MRQHdvROsvEfRPKIgHwrjfq+UXikqA4McjuaapBmQl+8Ljfcz90gBjyq/H +2c0KzvoB6gPA9GsgD8vNlHrGfkZPwOunLUUf9L0HGKS2n68hTN0rehLu1ZYn8Kiw35y2pfVko7NS +yrEyX5N66pkePQQ6Df022B//3OwX4GtpTA44KXcP5lubIsjGgjyOZmKg9K/Xg22RI6CrAbeP9dXh +L/gCYUDNoW8CfQyGCr6zbdTBgWnYMyMHb6KvzH/V386RE9Bt7nXq1/z6D3K52fLAUu3U4dWWg/Vg +zxKLmZs/wJMBmEgOIGxIHjsaIAL52AJyIBjCqVBtwHukYbr/Xg03y/lhxULm/1IDEz4fLcnG34cj +qYEQjRGUjr0+sz8dZvrmZrPkwAoesRShf0a/wvb/GThq6IV1dQ0+zKQw0Q3EmIBGpt75D8XFviOF +Bzz834IjO1gu59P9YDubj6TQSDxn8fGfXTZNYERLcj0+sGiorxxoKPLUb5qnXZ8fz4HSkxFyxTaN +PwdAJ1fmQ0VssN+T+XoMxKJxmh9Jjkab1RZaofrGbLAlkbAzLRsswEAPrFf8FcnlUluqqOUOdYPS +9MyIqXl4AapyCjpT3QNENuVnesXZ9oC/J7AonT/22PRuqjNwteV35c5DkuNDnVWua+ARtFu8yG5C +/4f/eimb6a7djlBPoJF5/HtJHnSe5/XmzzX6oo/qrJ9gdRuclsdvm97zOliReqfO05gDw5lkmmD6 +qg7jWXO4vjMAP9R1mDvkj4S8uD8I/uuPBKFtGAxFcGD3hqBNCIxE9AsGngWBLRyOBILQ6opgwJIP +4REsgPuCOE6D7qR1jO0KvvwNvpTBh1/w05+AQPoX/ec3ph+Dnzt1HerEWOeh1tWYTu8BowD/ReMF +BOJGq0qy2mAJDDcSjbA2vPOYxK4OomDnv3RnLlBtpKtl2M4yfbpkYisAHH82z2iBGlzDQThGPaIs +Agjm/9E/A0CiH2WA031lnCDgRg905p6H+Q6YDH6bjyA1Bvu/qe+dl8orcHQkH8b01r9WyzV47ALK +cT8fno4kUMhO2DS93w80gLgDfF6r0Qz4yntyTbXx6j0lMCz2Kfxz/BuqV/jUuiKPgzGgAR4EQgf8 +uxF43ABY1lPhK38MlifmnflYue0ayC7VFPQKNnbeh0z/uymtnb778SQ6GG5OxwvIzHvnP4faNxLU +p0zQOXTWPIc/pg7QQDt1jUfyL0hZNZI6lbqGK3ZNGji/E+NRdIL8VO1T7PwP5u3Z8biNejzb037p +3uynnvEI/G81hy0AKebLJXKsL5OAPXnYnPYjlbfOhIB7Tbsc/JPTTDW/2yT/BwwIRqcvG9E/1p3R +KNpG0Z//iN5A9qvniP8bIv24PvT+GOwPMRlVyR84/P2gQaUyDe+0Qv2L1BnO0WYJroE4gIgN8viK +yKBOIX7rf1oZqIxxvVnLdZk/vuVmtCDHWsbGtPwfNVD+MWkHMzUfDJekFsb/PyXo0T80izps+i9z +MRze6HQ4blb/rib75/gwehjAGAn0ZIHq0MqO/7hcgL78B3Xl/4KUHiZ//gevxv+yGByW89H/dl2M +B7x+dxD3496wzxfEw3pPnRws5cc8I+fTmRYpY1v+u8oYJUt4A95IBAt5vcGg2vj+nI+PMy3Doxv+ +u6MTp4aoDO5vLQP7+98e1FkCjMqo/tKkeP7tUQFlk9lsFIYx3ByBxVAhJ0cqE0TLqM7f+Q+wDpBa +bKCICMrw+tfNA7CI/dtdYGLedwobRG7sjnFM7z1oYTJeYySeNO50Ccf17B4GSuDRVwbr6Qnms9Q2 +W7g9i5B9vpDj+Wml51Kwvs/JIAWNTjMi9/ranjyQRz3no+IBjFEL6VJE/0IeZvr64HAk9/P/QrtK +PGzUGz5M8Eb1dNyejirvMEOF2XnpPTlIo3yScxtFpEdCXoyvw7z6EObF3AFfAOizEMzrojpS28zX +RzhdVpTpxpdgBnFuftguB3+/DGDACREzvT8ON4P9WB84pyGPPMxQa+m6jFIVJw3y+lQnl81NneoP +6l9tc5jDAaKnOG9h5WchSq5FGuB5RfqxdGDG2CCXJMxSlW1Ab/e9nosN0wJNklCE4ewPGCqOYEIh +S3MKPmJFhuf1i/VmtNgAVplSGQeiphH9drAFHHqYr07LAcc6wQCYb1mMely/Z8YFDDBvWL6lVz9k +5Va16XRPkmvF4cwBhw+OJABKonCScOmCQI/7wfqwHQBdM/obAJyP9TCzV+OoLugrSwBVoLxR4YJR +IbWw/4PUN8m/jihBZDCcL+dHZsZhLjILmFEuVLZygx2TWHpZwg2Wc3rV9NNAQIfEzLIaHBairh22 +G1pVhhi6jrdzN62GWAt0Oxhzgal0SZ8+HTesPmLsO9b44eWzwVTQHlzzicGITK+nS7oxEOVgiEYo +bl6HtniBoyOnPiVbVreDEUtGTAlmhp1w/jRKNq0zE26lktR5a88iXSJOyyUzRXQ2O3h6zsuYfsIu +C0AslzDRk9pe09LycNxvFowxxG8c5DUerI9zPZj9wUGaQ4RGFNBSxcERdL2yGQ2WUBcdeFpHpi2g +Erkv5fgt+Y+bMIQAsTJrl9xsZcnlkmNlr/y0FmFO6WZd5DllXpnJavKcQyW8WWDcHdXYCdmmIm6S +bkksN5t9dTI5kKpAqaZ8qJD5ZIYDe8Cynjfoxf0KDfkiEo6EcYWmHOeH8YjXjXsDkVAwEPQG9GG/ +H3eHsIg/5KV+EC33YmiN44BdDdVFGQ2eHZA/EA7JDQi15I1IFSo3JJhipNZrwO2Mrg9jbiq7HPPi +AUWdlf/reGZJitvBnH9JwLii0uKD9odlmQfm3gOlA0yr42A9UlW0CLRI08KMNdYI5quZPVLfrj9Q +Drd+OFhyGHAZzTRazrdgpYPh1L/AmjgFjCCjdoCCYFOIwBNP/q/tZn+EmiJ9AEJzeCZZEXMFGGtX +fv6AVTaAX9DMtwbr+WEGyMJjQkW9j5K4W/PDnFpwIQvLSEMocpk0cOCbmy2vO7dKGQc3g7xmPmhg +pDOgYWmHHuC6HLYUDUORAAs5gMOKDR8evAQylBnUaahxtQgPz5corcfkXw1ytFnTyiLs97G9CfmA +eXZpbzgaXtsdYr4/qLyCGFKev+ReYyn1j3AlC/2+TMmCPePJUAhnIfuxyOU8CUFLsaScItoyxvTm +D3K/hQmMtB6y0jFUPBLw8Wy2RquAytYym7/aXCzUige8OF29JN2Yb4JYGfWuZz6I3oHKGrzT6TI2 +Ehj0aLMfk+NzFan3vG6OgseCKAHu1QMru7AfjOfQERqsx3TYQClQQL2Eqolg1j58Cfka4peEmHB9 +vta4GBX1ljouxsiugMWG8XNLOZprAvzoDIRHeRQeqqxIn+EvSWrUo0F5uCCi53czdCPeGCyXjJ92 +sGlqLpRecas9CbjuQG5Q0jvFG+cBDvFLTA+AxzolleED1215pkLEjQ6L+XYICLQQx9HOxgQz9Dmk +MdYfhQnZ5c0QVh3oOftdhdBy3RnOj6sBFEshq0m03k5XCzcwBMjxZjJxnw4kMBQy8Cs9N6zTefYS +KjqFL1GhZJGNLo+D31yqR6OVm1Eoo9XfC3m68xpujjNm8mVArgAz0EIQCUh2crt383ZmpGcQMMzB +TW3Q06z27m649W1yqM9uAJOM9V/WRrta+7Lp//AqcyHq/WYyZyxDQUGB0nuAHUnEE4Kg3dmYD8el +e0xBRHKkUTjga9vtGJJrudaMYDuWnyZIWAHJ1DtANWehhv1euRnjbxVKsjdoQ3eSbhSWA4UydN1L +sPZpJxRFWI5OYQxXBs9n/kAopNx4z1vuAHMA9T7WD//W5/Zgod4r9w4C4U2fyqCPm62C+I4QoTc8 +/1q+GU+CFBqJYCko/wOlyTQ05YuSuv7naONVAjqkd6FkVdAS8PZmDabjCGN3Ki05HSTXgjWghvCM +AeVRj8nDfLoenK/uAqD7sXtLx8wVUINWE+BNzjb7/1KaPNBss5+6Z0yMUg7WZg+tl4E60sNouxyJ +wztSKP/guc/SrQ4wqMC0k8QHWQ+FqNXwgUlYDrbumXLfj8BRYKLgqrD+kFdRVOdHa7Fzc7aCHmA1 +kkobcg29ekYbu73SSx1sCbQijGvyBFaVuDNN4oWgUxpcs0iidwBT0+naikMc7TcK+oCzNVTaQENs +DowtVcXHW2E0WDf7i1qzileDmcWtTBoAc401QOb1WUNrts9SzDxZH93jpbKio2YR7tAMB3sFlbk9 +uNfkdMBtnEo1gggPp+FByQY4AHsYWtDKUMbL7X6yWSspcQAJxtuA0XngPDHpdkvglSg4LggSWLTW +anTa8+od2SFKTNHBDf3xNeiZIlKw7ArbhaRWjb+2bkEE0ietGSC82QC4Xcy2CPJlpaBNxa6ID5Np +uRe3lGlHr7qC/RvJecDhjA0UGgFgcNsG7dqwCl2KjyBWsEgqQtpsRxtlCLS1gHaTVECNT/ImCmhw +OG0RK/45mx9JJZ2IgB0UsCG3ZnJaj1SaCFYXST6kINGRIYbHVJQ/emewXjN7n1LDBQ== + + + 3hI0tdlQlLbUEBERBLkpPLc7zbTiOd7CTXAYDqnSG4FNluW4vACmiSj+JdwmhDu1cH8wLeA0mZHw +sltQIEkpo4WHBbXNwo2BLL0xUOdvDOBno7qkLUOBhvxWKGwmMcizLkqC4tGTaiQOJ6qSiuqnAq34 +US6EQyHIhcl1WsABXDrHesMFQPXzNdqagaa3GNzZdths82dxPhbP5lmz9eA8iQSY4GzqU23+F7kE +b03Ikbh78N32DFhjuf3gz/NZYR+/bP4AT3tAX87EXCBucyCn6ISmM0I0Bn+QL8DfngOWSgsDfSrR +LOsn77Q6/X3DIXAOazkC7piux6BHCpYU5CPYFIXBKqwhJQPVD5syQTN5/cngb+4H261KQ4QdHViW +YQ0kGeyoKSsn6k2pMc3XCr4l05QAktEmhzCOTotfcwakSQ9PjjrOSD0dVtEf6PO79H/OyLX+MIDc +oR+s+ScP6qEjoB8c4M/00Sw5gs0scuvfDwgk+CsE9vfmpN8CidRv1nog+fAJQk2Bmw6AkM0FiJx6 +gIx9dQ3Gqj9uIIgRqZ8joRzol4O/YVIWmIblfERl7x3gYSOge6V1DjnVHBgK2xqwyAn0bjPh0M8P ++tN6AY8EcStzKDPzAPRoP98KLBsV5qsrB7c4VqFsUiBt6tMKdDxMClRyggV9yKhFdwWtm0p2CNMS +nllX4rtesi2b+/mK11slwabSMmF2DDrEEc4R1Ai1DZjlv9VpyCSE8ZgpT3FcdrClcsPmzDolbbwy +kF42681ott+syBxgDqrcSbwRI2l1X5QRIEsHeuyl9QgMBOWGqBJANd1J0itktQ8K5hFgwGnqeLuM +SoCfebGwH/yd5dypt9OAS8CT8Tg0598q4ZWaoOc5s9Mt7cMItLL8vMq8qpx55oUptMoY4amaXLKW +lMvJ1wWAJIJkRpU5kKSCIos3gMMNphw4sHVIfi3DgIiEo1BaJcGCgEzzpjDGJr9WUeRt8hJQNYwd +zsfgSDZnp9VwPZgvOW7XyrMcwWR6p5QcqKgiqZ0FqPuaSqeyyGvC7GY95od9ZWKBYk3b5u+xa8NH +H8n0N2eAaXwRrIhAwQ60G2+8F7TqdZHA8jhcAQ96KYs8dbEKvUwVctajX1GtQJXEdRKdP5Iebpi4 +Fy9FQKwMNZQvXO4qi6QKJoEgP4qbJFWFJSkjyqpVqIo0KnRt+XDXCU5pDEyJ+WTO7JxeNvWabTch +tQSroNcrYydIEEzMNH5NK6D0PGmwk9Kj/WY4OFJHEV9DH9ZSVB6kSH7Fo7xoZs+MQzYYBNpQLJ5l +3UnaY83MGW813ciWSuFAjoTI4EN/svr46Yi3nyyxQcdZ9j1WXZnUvrCaRadrQ5kwOK2W7HzgPpiC +78V80BhNvRcSL/5ktPJleUntT6MQkfe+hM2432/EsEPuNzd1YqZU7MdtT8Wd20Pq8Oz16MypWMWw +ZxqVj5lp8a2SivvJRnb+lBjl3G7L9AxVZdwF+EI5whwNfRSOud/vjP/D5UyvNpUDcNCPM0ciaDwR +Ob+pnfldWto6c26ClYeSwEyhyCTUevv8Sjez7pY8Un676HcqviC+U9GDe+XIOc0nwloYT3RmRCyi +D6YjN/luhzLL1LITnWRmx+ws9IELyNF/zI3wyi4VT1raFBzQ5UP2Z/qzAZ8ed7nSuGTIuMK/pnTD +ZVxTfegMxiedOfJrdYzyo8CbNTvz92LxtNn36Mi8OvuOVNbyTmTJkz3RKhtnsdFosICf5o78pDKj +MOOYZxDaz0396PynPM4szUmLa+/4OqUrjccd7L8tFSvPfDpzMNb6TqXXI8vK8fQS84RWX0/zUMhz +mPjS+1EJdyyiOAtxlCsfWoBsIQsZavuwcXSe9QzA/OIvT1aXk8wsQ7UVNYJuxZzKluLGdt4ZCRzA +vJQ+g8ZEKLv5ccRb48+od2j8RmATazMYUCJoN8Ip+Qy2g29rSKdEZmELumjWbI0rGP5tfMl5BvFH +wuD42EMsQfjgB0FBTXRmbPhQ8qPPjgQRpz/F2/lnqnnWme9TwLxdbwmwbgdzJBJ5pzeXnD7RcNpP +8dj49/UHzSTbYQCvmgnQWECjTJntwDfXAdz6VIeNSD/6LWDI5HqI1GC9T/qDH8HfUbqZ+3XkJp7n +XX4wsJgyweH7W6Rm7rynq9lMLTdpzHep3Xd0qjNn/N1mjyLmR3D8ke/hjlbG30lXidxvu5ed/wY9 +scnKPCWyEzsOCJjoh0L18YbDF27sVs/pasX+TORs42eKNgyhKd4Hs3/cut8cydZgRw0oEQwPUrHm +8SHdLB9P50MTUZZHB2YiOnsDA6oBJKeaPerM+Y+xeertx5M5jPhK+RALxPtxIge4w+50ZDaRH/Fc +CSnLn1hmIijOSc4OJ0QlMBY+ncqVQrpXxhHHxB3bWJ+wTp7daSze/PDaTD9xqiNCcgRP9QhJWB+3 +tuwsWF/kHRU3wXEqEIDuBmqYRn4MOTQFhGr1CIZmtGWns/whFBu919OhD29bPAe14rIlgP1QyLuc +w4jUlEQW5HNWZ043X8YOoGESkVym0l1I9Ra15LUrdEMTIDR5L+Yt+F/OOedYI2y1ZYzIBT68jkSh +79KZuXGBUY0mRD4XCGWCrmoLKRw3Xmw5EdKcp7+1Z36P41VmuW5t0s1ZxwRAPDtYANu8c/PqJR5d +oc90fTKzgNe+HzNBR2VGaUtbbmIpBkFvNzNKC+ZbnSKjwgGC5++mj0hNnzpQwfdzQ/+snX43jw7C +do/pevNzGf5duuJIo3ELAcDCPd+UsXhmYd3OiXgBt/J0+0fdPuDTBKwlPGWNY8NT3vq0a3Mrjegp +4GTrMTQF3SMbZ8/DfUesdJgAjT0yBjL4afmZbvTLWfppJN1PxYtZN2jSbwEtUHnM4B+nXrpxavq5 +p6gx0GPgh1VqP4o+UrPFl09PN56sZteh+mRqxYc/72nfo8GUhzydxQvZSgp+SmDlAv6EkcNoEnda +s0n2twT3hs7MtUS/wq8ZqAqz6EX0NdioeN/g0yfqbQZBFv6WoYCl4y4iFHDl6t7exzYPm8RRY/g1 +pzOz3cvARq8cHAoLxCcEkWI7n2DfiKEmsDc11CV2uGnUEZ0ZDZMaMOxUqFZ8acLfYggYhwWBEJOI +6bIYKfrKwmvQWNi30Tsx+BwNI8mREjVH3aOouJ7G3lgSNBA9WSxx0dSB2RdOlMTUXjERommgsVDv +QGJxsNEwEJ2E5HhCo+K+ImAs5oJEH1KSY0moTwnVZfSJhUghFX6l2AJofjnGkGUL2LjCjopjFUli +oQeAk8+J9USNFUkOQ44nbsywcVWKqCJJZQn4RFFMNExEk6gQRFLYmyyLmeJpEVLUmJM6wMncbAlm +NcFxLWoOKZGWEJUY28MaqzwoJkUPaNlHYC8ntTK/IJIjKiLINI9JKUA0NFY0L2NDakpYGaK0Jepj +PRjGbVX0iSI/HAbqPPzzITT97Olm63lNpCxkE1j6Ey9/wYik12CtnFaI/ks3ShjsbrCKwXGFmdXe +ZQKWS26Rahvfp9n5Ty+VHy12j9RSxjMnAseavDvDNzscbeTOAF9M6NCgjuamLluSMv1qJdsXt8YJ +vC3MmGpZrJHs7FT/yD0/7zL8AWV6ZLq+zlVTjZ/9EFiwy9QKF2JxIN8h+oote3FXn9iIn3oebJ/A +CW1t8yNn05MJOr0unt+IZ4bTHGnPFznbClpK5VOEIwxthX2FqzzXjW9EANcU+raRJbGZUObZGYCO +H7zm2nhe6l9p2C9gKQFrPfBxi3OiwTWBltKNzokG14S2+lgOdcGhUS6zwPf9WXAeSnjp3hfpOXg3 +L2j7qFPOIDOWoxMH6v+WZ4EcacafKn7lnjNBC0BgG2beUp/2zJv5+4jMYagqQhJ04vsiiO0TwWd3 +rvQbGnBkA54FJBxN/vS6GGotK8109f0ZsDuQToo5uY7IORUUPRPBoJ0VgEJmGZx+IutfZ+bs//OO +ktVcYWEmgXi9xWFQYwQ+OY+F7cMwEnHE/K9CsBUZJyVuoTRMId1Yphzg7ekOH9WTVW/q3RChPdWm +nQTEWvhVnH7vx8KYnX0ZoqDDvR4z+99uMFw3kP3M4sUBHJHaxM8KSBQ6Bj+ZhffJwD1gmR2LjldL +DE5TWeAjBzNEPP/lZqGEiJ9vu5HIr09AKr3myCpMcZbT5PkMh0aVcuatlgKrRXf1Snf01DWn314b +LehrMw/avz6axptHLLQ4DWtYZeteFg5Vci/CTEulCPe9MevMLEsSqf1+9u6PvrSTCEEMS8b60LvL +YpNItsSDXd1mihn/KYPhzveDQTAHnz/pSOzZxT5o+nfueRr5Ynlnav9QLhJ2m9MP1FUb+DfO8Rqs +TnWC6NkMMzhSXyo+/Fmn2m+Ox+jM0ZiDxS/yi/icp53PAhhFV668t/cpHjvnGEM+QbVk5VcATJv0 +eoPpR7QCwjiMmvz6uKCjsvTyOgKlF7iCm0l2fpgHYVTB9VnHyvldVgRRg5fPA/tmACs3I70+YL48 +L1GTKB42AJufsHVrx/RzFx9T0/j0/DrOjVcRJ8N81gfgpyexXLZopBYj18aQcFOBACp61n4KRMn+ +I0nTqVjzZJbuOg6ANtbI7NCZKYyv7+HvfO/H/Ak6PzWkdpkfK7tizVi+A1o3aDIDSkRKcM2Z5oee +j7nQhkEa+xP57vR6XZkCSynUftk2hGs31TIU9+XJ/E912AO2SQwqnIktP3JgX2m/NfIG1F87TNkC +NHqfMRVPvj/mSqv5ZybQ6rjTb/baNF1vOoBnUTAXvkOZBT7e800VakF58uRKnxU7NDbqqAnQzvGG +VOfDzUdTg+gZH7u5CaBXZhk2OXNlq82KjBtW9pElMTUvAE9EHmITU2MmgdQPFtH6Ie+wByf85Q3O +1baX+Um1TMcji7kCpnhqCB4rRB1wcqDpdgkeWQxY6bMQp0Gw6yuK0L78TibRueXtBZh0zjSR6xbt +UkMTtAs4dObY9+bzS6lRyx56HcWqoiYx8se2QHG06Os0Ns87Nx840IwBPN0IEN+F1dFuge1+GQ1z +xkXGA1hLXmaUIZMMdgrZ12wrKeINevdib/gEZvOuDiY5teNZhzQozA3I297qzGgDRGIO3EA+n4PB +J2JXjOeWlQBnBNOT+GM05CaN/iY7fzAFAGP7q+l1orSR4iE4L5DpqpvRNvIy8eDpajT/nIpltnzL +m+5Z3JrauyInqJNT6dD3+DU3ifQ9+Q/y+CiiZ+R3b2mCdf+nm97MqnZAMSGzsOYS+vrFdR50Klni +cUniKeiTYpDIIp1vpkOROjIbe7nJ2wGsyJSqoHtbNBLZ9PeUyKam9aLpCS+lI55FWrpJ2v6bajVL +AyKeO/J6AzSx8SEVbZPTVHi776G45DkW4NDZ0VwBLqrNtI6UMvOEUOKF5cvKkQgVimB92X3EuuxE ++YCizB9gmP4NcMfvY6o1aZ54sBPB8innro9dqejr74JnnIM/zeADsc7SWy+suO7S0A== + + + e82swOonIL9l6ZmRP32G1KSfT45i9ZQr/hwOOeeQyMdtJvM74MXuLrOqJgLn/PL2AJavxQe0lGK4 +Feg5vxmYak1PbtLcA2cPm6x4Elg6fPcLZsLwnNobf465yWbvlmDYCFg1pza4t9MhspOkjxMf2n+B +xkEIBmIpE4swdX7nmDewmOUKCTMJTIxIkIrBjlofBxZsjLCWxm3oXH5BHdHJkfEf6CqcHJwDyOzy ++OxWWziwj7WBVVT4TVfxjA+42clFKp7YGvmyyJhB4NPYw6MidnB+BBPv/nw64Hp+g4oCP8eCGqGO +/hDepuSa9EBU1vlRYA0wu9w2CWJZ0qHGCwHmoFtLb9ITqzQWQPnnsBwIK7CesGn0xeEDK2nz0aBJ +UgVsT82LHOOzwXfsCIS4uU5j3iTxBpiqj+VH3X0glypud0xj5wYadEGKkQrd1BJtHNLWheOp/FHm +UQesOt+ZZShlQq4EvZEZhJsLIfsJ6ot61DWJ79mR8kMQL0Ubllkut32RA8/xGG/ZHuaHWNzCt+Bp +iEHqQXo5IOGuhBFu1mDp+qZyzDmruzFjKS1ObK/56wvC8pgfPQS/gSdj2BP5cL0oNjZ2xXoFOcqx +yerxEbjtv0HOFpKwAF6Axs670WQDLAo2Raydd1QtDkDAH5dSu8QLEMNnE8BMuKUw68ws7nYqviRs +fBtcDKwhL3dQhHfZ13ykjxYUR+LwEeGUI9CWcEhP1jdbF3oor565MRqnDVqmEdFbeoJARwaXqVBn +mk+HC4cj3Pp2Edayq5XF31eHGBl9XIEx1218zIndClmRUCcnR6RQW57S4eF2ylsSkML9eBsUga23 +wWKTE7kXq96NPefhvcFuDCOm0ZmDOzzSAPZ2gyBSU8DkjVNzrM6/QeT0IjpAP+AFsE/bC+yR+Eu6 +4UyBeZna13wsiDnzo9NDLx12uR+gQRgUsRdYjtZkxr8Yj4Ot9+9WOJTMFrOzz/ED9LAeUvE330/u ++Tn+wG4Wi18D9hgxeMynYt/vwOwMvTkwr3M3Alr+YwHW3Mk2XV8G2gIlPOikDrbOQ+657ANsb8xs +pRQqs2tf+wg1e6e1zgxaZp9y00DwIe48fc2DiZ09D7wg+46IEyOaG1n9xKomRifReuxAOxW1R8dT +KvSQQ7kDoCPf2VBjvIkDa3xr+nFxwc3oeDxqRr0Dey2zdOHNQuejswbzcsxw0TyqyevP8ET0v08z +mG1hQb6Ra+1s+tFE8Ccbg/cSUrMx8bjaYOLfren1cHpgdZsA4o93hdZAXo6FAGwLGK8/J0DArhmo +tbcT95TisXa6+R5qcrSLLFK/FTDyVVsQsoRU7rfBErXFDmks/rrlxUQRsTKWeDNnn3tGcWf3OZMO +O0sQ3uMcjAXJKmsQyVGemRzawssDYyozSlefi3C7dNqFdPAKuvT2ABYH8jM2aG9+gffqyf+aiXxk +M8//dGbvQOG4uhLN+8H36ucvrWEqxJcsbMJ2jG3yo6AtkHmx2eahdenNAT1xcTT6Daz7L4QFsLPp +I+/qhqcZf9vn4s3+/Mc5TTdzB3tw9zxIPgHf2AqcqzguxMdCsT8BeRlGF0+573nXyGM0Fg5y68Ga +s5ID4XvLzlJjV660zLZFSz7mffsyEtbnTBjMS+3DueGNXxAHD7KaYQ79z0B+2MwHOM0owPwBDYfi +GAWsmQjJRwTFVKCP7MPGwphLND/o/zrT66ShRvSt314oDF+5smGCcd1jYPd+YqVqsR6Mdt6HYCwk +QZuIgNVobVHGpmD2gZlnAwi++LH6YNT4rSm1KBDpOfIvjgiQOocTyFDzkB8ligDU++PWFHnPf5oi +0zbwkUHPijAu7/5JN2ejI+zjfyfYEkgvPHNIX0VVKQd9Dp0zjgoUQsJKOX4rLoXbyhXzUOlzsIZ/ +QzUT1zDyIUjULrLlZfBwyLMy3EarALPNqbzzIz8lnH67VUBdQWeobgcj0dke4HF+PdqMJSrfWoXa +dHLeejUkx1Ra7TmmJrnacidC8UHBg3ifyf1asvPwkNfzfFb6IZfkzcfUGWzPkcDqQ+rGb2EaOXiU +a+bOoIOJGc3Py9XBE3S7bfP8mgGZEr70cik8Vjt2XsHH3SQsvLIWZnNSV9nC3jPPdCjLk/+LZJ6l +IxHohxzJ1tCDeRwvLkdydvTBT15//C3qYx+8sZ/Qg5gv2TxmgNVYWBSN9acBdPcS7FOv46kenBls +vuKTweWx1HVmgyOxiBtsrx8Rg3M2B4/6E7fBcYo2DM6XTs7gwl68mOepa0XoA4as7c1/8B6AsRLI +LfzJaj/hy4R9YaCaVh8o1ol0CPcUK/bIrM683yeehmnn9rWceo4cEuFivO0mNh/+Vn7/9YHlPohu +k3hKP41wYFWuaSw+02VDgx4FGtx+7zc4Wz8lgyvsChscI3cDjioMf8sbnL1xwGCbL5YG2zEzh0Oz +8Yfmd9Yxj79RZzFTA6fH0jcvdWbYckvPxlPXT5E1szm8Up/oFysH0I0cQNBZhMRNYDf3X4NPv9tX +CZ8ciYLhkSOq23MIF3Rm76nbH4IfCkts/NjN8cHGDp39ty33Ajsq6B4gNXjX8eF/8Ebt4DUckbLK +Q/r9DgxqFqnOLEIbePMt9nJI+/vv3fFdBml2GKwPXF4ppGD2D+E2LjfWoj9iTi+kkcYfHg8W02Yr +hXR/6rtN1qGp/oWQUvPCQ4sRWDIugzRoNIVjk4g0Un/3CyOamTcppDrz4YHYRs3V+UtdaqxYwbip +yCK1lCv+Fznyvu+/Rt4yRAo9vTMCP7R95sDRAl70b85mNWpK0EhrFotoTv3NUGGJkALhGuY5pFAq +Y4fv/XdriHjedo402gu8j6ceSaQ/ruarLNKQZ9KwIKQ6swgtmFUgooeo4yCNtBb68XdmFacU0oMl +0cWlkOrMAG1gZrNkyILUWOGsdjEigr1KIn0gpiFTfeWtSiHFiO9vAiGFOlk81qDRvFi/ZOWQDrCC +s9+SRlrA0hbSGuqKkNJ6bH80OpP0WLsuq0hokq/+py8Kaf5rQQiQfsSxSsiFQ6T2M6RFcoMkVWcG +aENb8Vgrnx8DGaRBY2gxJn7kkOawF/t3RIQUYKHQlnbR1O/+tS6JtBGz+GSRPpMNHyaD9NOFNXq2 +B4BFcqzPRfL188NmlUTasqynskgbszda+3JIIRYabQFrPW/j0kgrPvM7kYo/SSPdlh9kkbZ6hYcj +Wvclx1rF2snnnDTSl0S+9/P2/S2J9Lu6KImQIiw02t9uYEzIIP0KY9+HpUsa6evvdlWNhH2SSHsl +F9DJsmPdmxsOgwzS7juWn6/KkkjDr64HQ+rblQdIozuEFKxinFY69UI9GunQZxMJje2jMrAjpF5L +wloUjrSC9e3RNETqPFtper87nfkRL/eaAO3TXqwKD5vHJxrpMekQjdQAFnobhTTTxUtCRejcH94T +BojUjZCi6hpOK5VczFizRxFSR6z4EKSQJvFnlwBpYObc+l/7CKnPFM0+C5GaoOYfDNcQLSYe6z5N +bhj+LRvE+jfwG83QSKNvbhF5HzZkv0ktb+SgFxRZF4Hi++PPJso9Fz3tvuGrltzTGbS9TlJPac0P +VG/uUeZtMAePjqyZfvpLhkRPg2G8x/T7sAiLn65nDx2dWfZ5qFaKfsk+DXvt9b7809ngx8I9FVEs +aEx7Hz9Gsm9XHOukV/7psDqJST1FFAsaqw+jYVHm7XDxsRh/P1BPJ5ZdRAT73TGP/dJP8Yeo+Omw +3FgzFJN43so5GCtT4mnbPPQY5J9+5aJP3NMzivXNPyGT7Nu/x9q2KPt00fJm3qSe0hRbLYjEj9zb +YLhvsYDs07LXn+jIPh2th42KPMUeDY+lL7vs03z6ZUjKPi17kw+4PMXSBq/JFpV5O1DE8k92ZsxR +a0z01NF8OyTpp1l3XCyVxWa/YE9LPUcyazclGXNY6mnyI1XlPwWuGc8zzLrsWWjDWD6znHPGd82I +XkDBNfMeTdDzzRpc5UgXeL6/TfjHDX8jDM5cPQv/tIGqi5igNU47g5SGofEN6hlGb+4fvJanmote +DXAzf4VIGH1QxMsrytkBrhlPmjwv4bUFuJGdE9TJwN0BGCdxFp/RM38a2oBue8hDd8clUNZ8pI64 +d/omgzRoNL5vl5/8dZ9DC5fbD1mkYAn6xWWRYsTktSGFlJYXuGCOpMYKkY75SP0NEw9p+DXT4CEd +Pz4aOaQH44ys89Z9n4jAiZ1p9ckgLSwFSG1dWaSAvE9eKaS0NY58B3asPhGBoe/wI4O0+y0/0gfi +4Bes+8KxIt9BFin0HWbSSOMGtxRS5IshtBWLLIGRRSKLFNojTcGckhEGPfpEzz4wtrIf45VyS6rd +z2m1Vm0XNO5+8p0qX8PItAzMaL6j9UUGjPkr7eBFpDjB7VtXwmgPUP/EaY+UCyBLI0XrZO5FuE/p +5P4kttZxk3b1UbwKEDWxtcW3vPgRBJCIFE2/qA+JSOEzB9TWIA8x+xiPj9eBRN5M/3G+bGgEyIBm +EHC9AUN72lJNBJEypPQynhmZM7N/6kLPgg55VdnmOYilwB9uv5xkuvxeA18foTN3sjPUoWx+UaDu +DfnIjzwSiiiPlQNmM/oDWbKt1qVFpCTVJZ2Z7lTvZAGs++L0WpJYiYvYiAKViOje71PmmSO6NMnh +H7rr/g0VUxKPEMYADBrGh/6ozl8DeK/qM2hkx2eXHR80fN9l5w964tpmEM7fRsShqsSiQUHr4hwY +bs/8EmrAtDB7zMWu+zdzVuFrp0x3nXbKA9Po40rJEco+IJY38xEpX0ksoeqxcaqHXvdBf37ywqn1 +XTsb+a/Snk9AAI/xxAWs+4iUjwztfvIseWV648w7qT807ZhI7znXdl1CqeSrbWmpRLE8yaF1RVLJ +zsYlQ/MlW80XZULDeSk8P8J+12W6knNoGRVZcz/Ss3/G7HmEpbW5eUDQFezw+sAKoVDD9G2PoHud +nMw0Obf4wGQpqnGgDFkgFpowmCxhPLON44nhHZaTUUBImsa4CBQbh9EGTCh39vMlf0BISR2KKF4q +d4OHzklxJo248x13wj+f9Fjo3YYzxgCa0Zp/lp1QZjrhHzCdXBD7nDcGBMAi0oJ8YNU3tlO8noGx +HAuS/UoUhgepQaK85EMKI4/vnjMrTGFKHOdTMi7IrnE6s6zykebpRfggaxDIWozsWimYX2DNfB4V +Fybx/MrNbgFSpCi0YEULk2braVwQ6mnxsqSjWJdbeBU6dUyWZbpUrdO9kekSP3ZBdUrepGOnTtP8 +RUwim//MsFC2+QXzt1Y26Kj5g6cDaJjBQm11CzPwVmQIrLG+F2cJlhNKj90ArKvsxFxGMRW77jKK +9fZ3oxhfo11Bsa0gESG0P3NcjwmxEuKvYpdYx8VLXMG6jB7LdGYGrY6NtFQekw93k8pMZ2fS4ChT +Nn/dwdvNlaBOEn+uaKWOVG90Zm+m+/B4I3USB3ZZltXJnE0hbRoW1ZWCSkcgFtAV7Q== + + + Lp58RxS0gM6slSZC2/KyjlDWRVFd7EWeoUNm1ZwWYej6U8QqnC8m5RtSm5pckLvOQfR+H4ZuXjgb +fCpBjs8rRkjECKhUgzPaAUtQS1CDpzygeNCZKsK5LCHD4wJ/WL5LRjV/X7MC+D6aVeIsPB5TVgCl +SxSAeHwCfx+M0HI50aVJLrAUJNcXEdfK2fK/Jbgh2NYwPp1ZdQZzRzz/fShoj2ec++S0xwe4f+a7 +G7HOBFwydqGJWBIiLssMiJMFxBKKuM8UWXiEIl4Wi7ikkyaILslESADXPtwaSyhzIVluz0LYH81O +xaostN9lIySCoKzc0Cy3DI3S/GWY1fCi6g8rhTeSePkkXJZ9wrVSNcCBugz4YOe9ckA8Ti6frapX +xH1WZbgx3BWRRWIVUyWMWqxPpAqAPy9tW0LqBDVQh6cKBJEGoSmdOlH5Y3xjGvCBlmCiuin9zJnS +cvKigXbRN7Nyb7hlkIlbyi2EvuR7yKLOESrLICUvz+KF8Kqh2WSHpjNr1ErPZ47yBXzOcfL2Wbzy +XTUgg3DJk431KSqA5Ls5cLkCEGRB04TpicP0V9mygDbsQqfIydpsWbhZZeFnb8BRgd9sIo/vWrnL +gt64tUS8GY9PetSdhngL8rrVDlnjANi94q0Q1LnoXaqTodBo2KQQcaowO52ZN9lFTyvHIyicG8lk +d1wJR0ICpaBQFqwCnBt2KjgowN+/eOWTBSbcH5S1LjTtVMByAqdVaG9mUYqrrOTQu6Ia415ZlLp6 ++XIj6VdCYF73hXt8sqT8Je0wDiNDTJltbkWNdljYzjTaYeHQqazdWjUaIExqpzIv6tZc5/0WjSaK +wANgd9No75xGu95SgnFprRpNUfbBvN1Bo6HZF4bGroWjrNF02uHcvveK4CjsBzkzVnYfxyMpOcIJ +E3nQaB+ZtynE2zqUtlLoRC8mCxF4PGexcfibcAP26pwruAmuSQlBywxa49ImaxbIeVVZM2pWsoDH +8l8tw81WPdOv7oP83qtGp7HTutKXFs4LnDdRWtM1SgFCERj2/IjiZXAUUyBEUOQyVRCcc5f6mt5E +rR+KO7yKJrkYmFIgSyp/TGk1BONziFdD8JtLWXJ02lfDwUNdMkXgIo+v076PfU+BEq6FsjymZTVs +a3WtdWYlFvnaXW7fn+k7MGs68+2rIYSjvBZqW8UQHI32vdIqhuDcbN9DKFJrIevvX7Yafu2UxPBs +LaQiV4qrYe98pxj+dkkSIJwX2dUwatWYh8WlYUiPHmWp9fYKU8InpYwtwJehjpRsC31k7dLducjS +peZFVro7mqRbVW3TFNMk4urOJZhJt5SUy2Wpydg1gJ4tjzaOUI/0ok5p5Ahp4RIuSzBLLet2nS1M +Wbd8ly9y0ryZDryLS25h0pK5JuyX/C4A9PguEC+UgXK/bFsITH33RsveDQSlM/tMsefKHZg46w5p +iifL7Q0I57KnxdKnQMn6yF3F5FsBR2jqkle0J35h4isluNx6lgi8rCU9C1b2Ub3cYWpwrd961CEq +rrTvB1bO5bXW0LHTKVlBh04JuEMNnXIFnc58nxq6M6SCCjpKW95eQ6dcQQerBe9RQ0fJmlwFHe1Z +3FxDp1xBR1cL3lxDJ4mUraCTqha8poZOuYKOObvj1ho65Qo6rvbttho65Qo6qMfuUUMnVlHCfGjp +/crLa+jOlzJ+OjKKkMhVAtUshJoHzffZ5OuAIBblZBdBpxS6pJQ/paNNQ00VU8RBMelJPsQk3knM +ie1fVTrJWb+fOW6tZ3IVrqSTKMR0nt5OUUmnXoYXswsYViLP7GloVS4FQ3t8sAzvl2zdh5+k8rDE +/otGPoi5Lhofb//lvNhNGLmSI7p6lzyinZFriE53SS1ypdQp2aI5BoR6yRziMXWGzYvzqi+O+iFP +3HnUmgyinAoiGzQWR3o1hI3zl6eCSNSKdl3Gm4vdJDIhryt2uyQVRLYm0bm9JVTF1qd5FGz+Cwgj +nwrCc0N0GnyjvGyFlkafZivMIujj53s2Q+9Ojc+16eQBcbnbKz2dQ59kAiUTUbyoyHTw8CKuOlQO +nKHZl/PtAbEU9rI1BM6YsCGzIicW4a0oTALefr9TOQx1kp6c2aVWByaqApM1uq6o4zuprUgX1PEN +letfjIKglXxp2oNCDryG4ygEXZoZ5bqU4tVYaSpoUsmBvyCLYFwQRjAlzEHN87fnIpiytuUFwNR8 +jDw6p1cbMLUSGaV+CXdFITA1R0P7ILnw6h0oplwmeiHF1I5CUKGYqHom0+m6hKlORdnqGa22LFOb +AKO+GoVdco1XrpZjT6JQAbF4UOlD3/uDwz99Kdnm5Y0X7+bsTYvCwK7UWTessycLQk09nAEQaZhp +UflwFP5MX1AoJ64ZUZ+hHqbV45GTfVjipjXIIEdPKRdOzq+UJ4daaazUnoyEzQ8GpCrngmiAQip/ +FJ0pXBfVWOWOl7iZ8pU+IrorcbJK+ZFyeZxA67BnDkvVtB2Osuv5RfZYCY7lThL/WxJJvJQ9po1O +GsM7IkP7LD8ZVo557sMCnFPI1lZr65REl7wausTLHFaqQLsoIqNYYee/E51U616VOiWMyLjPIzKr +smxERobHZCIy5SsjMkINgz+b7hOR8Zmi7kctsQsNEZnyPTKIAAjrHUoGC7XVzecpgTlXj8jotJSh +3RyRgbvVkZ3/HoRRKM45q3lXSnaBRXpCkdOYUsKsyKI61GTziAmN5We1OlQlY5l/EoUv+e4w3sgM +22epkI4wU0Wj1wIWGU2lo2xIR2FFBkOLWm8eGjJ3ebJ/BYfC8jH56BI3IJ16Xd3N54Ztn2HWzQVp +s3LTZFDO1tOUPQgJc0vpKN9LelYMgqoW14kT9Wq8fVSWk+Gv6psPV9bDXX5e3zX1cLJ7SXeth4NY +bi1GVa+H01hncWM9HFtnIaiIu7p6RKYe7sKK1Cvr4aSrBe9dD6euLe9RD8dafdeXamioh9N8DslN +9XAS8/JL2u9dDyc8oZ2pHbp5W4euY7u9sh4ub1o3h7jdarmQJQR2a04kp/lbG005kWoVXz4pap/v +WCmZAdnzBImrqtERHOetZnNWlM6gUCeuDuculVwwl0HWb77oLFJoj8HiOvmA2KUZz9DysouEkLLH +VCZCoxi2ZD1o4QlUqrVMV+7RSkQUIbB7pSZ3t0gIb7PGIbW1eIsq1nj2LqcBU9WCOZVCLC3iA6DI +i4/mszuyXH7D5b3hWbBZ5SOBL8r8Fh0JLH324AVHzNic5zEsWHomcKgl6sW05VLB+J9mAirpsYuP +FlaqSB089CTLSK+oSB08DCUDBpdVpLbvU5H6tbtHRSqEco+KVFgvdo+KVAjn9opUCEVckSp3DLR6 +/Vb7zL8WJCxAbamaZiQUQ5eEGHaU41ras21vKYWTWsXuXwonOy93LYXjzoHX4rhfWwonTbF7l8Jp +9CtvLIXTae7ULaVwZxkRV5bCKRuGvNrqrtLmymUnwmdFCRLinZHL6+ok3SLRjo3OrGHPBgLTdFKX +XE6g4JRmAOym8CSfYoIjhuX3ktQ3F1AJm5bz1Yz0fqXM8jA8KG3haF8cqNO0umdnfV+ag8qPAM2o +O+Oc0jkk9BygCzIT1Vlh2Rr0csbxKU9ETKkfopmo5VOeoyVLNJOhLrrOPPeR36fSxWCznM24R9ls +xvMMLyFobJnFyLwUx2DpmJOwGkuh7ixu+JS/uS38Fq0JI4rCYrfYqPrCDz/zkAZmdnPcsJErduso +VNgdHoixhy8gomK3Zka+wg5eqj2QQ9pXrLAruCI8pOL7zKKOA4tUXOwGr5pmbzXkF4BR9/FZlYrd +cLcsUkc8tpKrsAsajbvg6Uu2wq77qVR3tlKqsNs0m1JImfv4KuRsLFdhRyrVEr515JHmXz8LPF9M +TGDT2hfrySF9O2MlIK40evSJ5vOoxOxLt4xpguj/qii3g1joesca1ZJeOitBCVOUEVzitBQvp0pn +qaV42bYaj/13rM/S5GuPG+WcDZ3mOhpNh7jzoiZK91jtlDuluUvC49xVc64uvklOyvql1sp73iQn +tSBS+8gqh65rpZNsiuRl+TA5DTeOCAxMxXvfrrxETgoUYk2BDXMtH6heNgJtmPMRSnZK5a4BpS7x +1v3cpcmUCl0SRY5vkJcCqXINEZfsyq+AuE81nVQPxbsJt1fTSdXSnd2ZcnM1nVTAi7mL837VdFK1 +dJpOnryomk5+v/Ke1XRy2vK+1XQ3Ra01V9NJOR8SnHxjNZ3ASKBr6YSyf49qOqlaOikNc1s1nZTf +rLt7NZ1ULR2793q3ajraMBTU0jHZtverppOqpePiMPeqppOaXRS1vms1nfSu6L2r6aS6pOP15z7V +dFLzJ3my8U3VdFK1dMqW0jXVdFKgdBcCU6+m07jDe2M1nRgU5Ph7UUzZJryQYhqq6bRT7JZqOqla +Omr37Z7VdFK1dNI35d1STScF4Lxm5NZqOh5Z2N0SuZqR66vppGxnnfhAspur6aRq6VTuFb2imk5q +hhTO6L6ymo4/XKaWTptfKUsOjeU38jvv11bTSQ1IfKb9RdV0wi4pOIAKFalCB1Bix/W3pPXoJhUv +qaR2TaW2WixAse/DTk3Y+eRXu69O2rq49311mu9NUL2vTmvN2tFhEebBXkun3FHZsDg/UUfhKjdh +gcKlXWJsfi1X1Wkt7zy/gla+UliFTqoWgOiUM4VOyadSXNYlKC/K8U8plSn0iJJ4+SAKlftMka1o +3T/PP9ISBrvkmjt5nVy+28Hgq7KYYlfnIypec6c5dnHTNXesvChddKe5TEnumrvL8pOvveZOdEqA +9EV3l4XdJK65U79pQiZN4aJr7pi1UvGiO/Hmkfo1d1rPhds+3xyZ8yXfcbNwfbk6AfFZQ2WRTqPR +vX2+JQ+f5mQwuCfbzYV0spmHF+Rao0K664qKRFWc5psrYJ+lUjgur0qDd9NFrR9qgitIIpO7IxVQ +R1MRjLZ6IsRjRou4oggemqqcaKtpv6dQW4n9lysLxFSywS/IhgLANOUia8qGAsC0ZHQr55cjzXeX +ysdL75hkeUwM5+aaWgSFXvLktaVGOPJJVBfdk3iPiyaZexLvWljbECdNoHsTGut7nQoIQUnYdxL1 +lVoqTkBvtSgz4U0Tspl7TY2k5DuSEiYEF7my2c89eliLd/3ZAOLqpztUpojPPZY4V0FzKQMAVlGu +irjgBkPwqKZhk1jtBj/Wfr+t8lFrIYPyHUMQzq235kIo9zglgLpOTsmI57LT1eEIxfCSS+nO70lU +LGW4uJDBQc++UAxb9xFD0Q1319dXXnLDHY1FXgzvcsMdtWchf8fdJWIof8PdhZWPV9YTSdyUd7sY +nt1wd8NNeRf40oo35cmL4YU33FG3/8ifFK4CTFw9IXPDnVrWjcbC2rZyepNWPfa1u8XMOat9u1th +7ddOfAvAlbevab4lXbny8eUOdekAivv2nCsER8WH0mmFc5P7xGjLs+Saq+vbqevylA== + + + chQvr2+PWp1nYhi1iiuTJfL6NIlh56IiJskonLAi7EfWmNRcxMTeYBi1yl8PdtF2EwQljuacUUzr +0eYQmBaplI9bCim21nB0nCa/sqO1jEmpiKm3l11nEZbLalw7lxcxodpqedNQ4rhEVCp1oWEodx9f +1n17nh1DSnjv2/1qXLuyOzasPaa9xrV7+dFU8udcde9z3SNzU96dalyzbo/sBo7OfAZMrsb1LA1D +liPOunR+BhHs1B2ue6QjQHAaKiE4FikiMKYfrHgrPjVzCzyb8ZTbOSNZbuSSjkbzadN3BMGnQo2q +7et8EWOvJfGQoxYeFNjlU4z5LCjDe03W+UgF9XAHY6tb44eqhPewRbOfXVE9HK8uSb4Mb3/qR3FZ +pBiB2eUq/4JGU6hu++Z7r8KCrS/5gsMHYuuTR1owfryLkCLNz9zDVhq6p3L3sNkUStNqAfl6uIMl +9Ljn5Vr7RFWONmvycylTmmZTvHFuIK78QxmqLIGf4zUZpEGj2f+a68vVw/UUkBZMQYG8iC+6ezN+ +yCANFwWllWKkdRFSKu+C5d/nljzSfP6dEM6qCT51sp/oEsyT/ckjakdR7LylL4tpgIj17dG0hnaA +YtHNMc8tk2DUXb84a4HdrpFYOrMK7hPvZDCNiZOAqAGbcDcopzVtUsMtZk/KpU1nERKJ6h/K5s9d +mFol36WsZF4b7+QWraVNh8tzyaVtmLOArrbUKskqKbiua8yEVKFTQyUBTXtVmobUKq1VaSo5mlr4 +iQHF3/JSyelVq7rTmKXFeBYKnTrL07q8S6iK83FzUZ6WUpeko8RXyMtGIUuL7o3ETRMidZX/StiF +6ip/c4yZ9l4B7JKGDUOVujJZ7Xzx3U9dl0oqjJT7K6Nh7hBe/slzdv7V8bGLDoyTj4/l77Fl/ZNH +kWXFM4g0VWxuNRxCq9NAmGu9FilOzml0irUkjYg3WOk77O5yDDRxRx95QFweDJaL88OCOwU766JA +wIA4j/NfevKQMKbi352durAI79VvL9VcSNZROuVM/YwIQSmgmt0mObtSmSrjgmp9u9ZKpoiBqxbU +cs6BfHWb0smoGqxxQafkk/U1FALyo6OAogvTnUo5hXuKaJfn6lJA9UuvKFC8W2aUgCnfa6zaL64i +FQI7v9n42kGe7VfeBEytlucSiqnsXF5GMZWdy4sGWfF/yVLsrFxY1pm96EY93vpyRRWg1hpAgVRe +XAV43gfpGkCBNX5xFaDCzrO2eLKmKkCtNYCqN7DLgbjoRj3JbCjNVYBaawClz+nVWgWolZ5Sa6X2 +KkCtNYAafGSFKkCtNYAqu2/KVYApqjfnoxJfykflKAoKD/6BS/lUOVmlakvbpXxqJ1Hc51I+SsOU +/uFL+UT3Jf1Dl/LJ3I9850v5LonCXX8pn/gstX/mUj7BKvaPXconaSlppVNQwXZGvVE/G+qye/0u +Oxvq2nv9+Crq/Fa/q8+GEt3rp5y8qFL1rPleP8WhWW/PUyrf52woTff6qZ4NdZd7/ZRv9bugvvKG +WgiJmsSr7vWTMti5W/1Et5jdIWlY6la/ayq5Ls9WlK/kuuxeP+Vb/W6+v5K+1++2uKXWe/2Uq+4Q +ljvc66ecr68tQ1X9Xj+t9ZW33esnkIezihlJTr7iXj+ucE9qoVOyxy651095JuWq0u5U7k7f6qch +zq/pXj/l1U5rFrTavX7a7+O7ueZd9la/q+7ju3jJk76P7xYJ5KBwultxx+qCe/3UteU97vVTLk+h +IvC33+unnFTAv8kIu+FevzNSCm71U5wX3k6N2r1+yrf6SVcMXX6vn7I5qFaVdp/yTnqtvFvdg/St +fhfLvsy9fspmgOR9fFfc6ycBxak2+5ff66cMReU+Ps33+inf6qewx3dZ3QOpdKsf0mN3uNdP+VY/ +nfkSMZS/1+/CqrS7VVnzb/XTqsfU7vW7zRrXeq+flvv4br/XT/lWv8vu47tWfMT38V17r58QiviY +P+nKlMvv9ZMKpl10oo6me/2UHWp0rvUd7vVTvtVPxXvVXgyveKsf7+bim+71u+jUpqvv9ROVI4r2 +s66/j++SaJbifXy3F8PTt/rdmnPF3OsnE86mE2roTJWb7/XTcnb67ff6Kce1hHdyXX+vn1T5GOdr +SaxiV93rp+y2U5nDt9/rp+y2i6Xy2nv9pCimMRPygnv9NPqVN97rpyl78OZ7/c4MQ8GtfiyWG+/1 +YydW8lY/3mnzN93rp1wQq1NzdjXe66e8Y8Oj2E33+gn7JQ5OXm3DiO71U95cUDkdSPO9fsq3+lHn +9tx+rx/TJemCWGpP/PKzUjwSi8OH7OJA1fC+aznENFGYnZ2oiH6T38NkEu/P70mUKFwU8RNFEy6G +lXja8nQubbLRqKzCVazv3nCEwTxVMshO8qvAF60c9nvvYWYAy0rZ4Ph8NWGeziJENYH1VAbTS6Lk +xqxrg2f0ufX79rMyASi2/I68vdutrpXNktllsOL0NW3cnTJBw9dg7AOf+ilTOHbKP75Ud/XAbtH9 +DAXc/lH4hei4n917Q6BS8Pcz9cV7ctx4CbZnTfI1sGtZyYmpnbb5c78PzfqzzryILuOdDZm0rne9 +0M68T62Dr4b2a9Ji8lkLQfPks1SynWbGT//mi4yiqUWVnYn3ZqNlcDt+UgbvdNdyxH2WFEZknjMY +MRmVsULwsb7f9yPW/SHcBvJyMP4Eh4fA8LPGlgI2HU8eV9vtq0QemLK3X8/+8LWBl81FjNK7voLq +0thHpRdJj962UE02tuy8wPskT33cbE+nKmUpYiFygOEeH/d7n8mgONKZdWAha8bWRzNhWu89YF4e +vf7pybgcG8awlrTMFIcaTs6t/xXmq72sUU2iIU00m2bMRI7Bb7WN0GDfisQHDK2W5SKrdDyZWit5 +91sCtSZFiUTQnD3lPgiyg67PzH4X6p3ga3b8kPIc4+WU5zCOERHjopZvp3w/gGzrRGHZ6nzpzOli +0DAEcFo7Bix1gaYVdyxCsJix+5OKVQx7NKr0alM5pJ/b7Z4j3+oU4Scw3NrSDYt2nZRTnwh098hz +wjxHK8xF6B0ZH9kTcFuYT7gVxY4BTUJr8DVkR3W/QOGUtuDrkxN9BavY5x58zbqZ1wgPkfe+hAHY +IubIOc0nwloslXCnZdbTmZmOPtv4jyLHAfvAwX9QcYzYBy7+g58QyT7w8B9ss1MeFpz3qJDZwfqC +Vzv/t3frkGn86uQ/mPrH7AM3ut8QL5pSGFwSTHjRRfjQuv+KA120WeDFZN0Hvr7xYQ+nDkjbNyfV +ZGQKRWntBVQhZK8MPnI94bCJB1YtrfBRsgTJ9kYDHb29U1jeYFFr3Ajp7YDVxWhhMnltLj+0/ps8 +wnhtyVQMYonBDe96Zume2tO10aSSey4ZGhxDspsCWV6uAt97ZUQg47UVifjlEKXgUf4LgPhWeWIh +ZgLHmoksfH+Ep+nGyTTPf4xrGBwVzvGv9/v0k8rOBx4c83R/fAx7Nf28geeSIYpVEMXaLkRCb+4t +C9fAtodh/DaAPfyGd7O1cdrqDbTRarCBn3zsJz8FIB9bBcHXDxpeb0TAef7wsDVWgQ+M/cTjNpgW +O2cY6MPHf5BbmPKjxS6CeRa/AWYsH/TlmpjNFMa8y4Y574zYfiAnYy0TP1jTt9J7qtSAuD906I+O +1iUC324Oqe/RVoVE/QZ/um0r/ISzn6B1wWv5MvXDX/0S/Xkj+q1uNucI2wgi/9IK02vqcRXAyGE0 +CPnT7TPF432iZ/v8EC3fgjtTqAWcXvIzwK5z5GkDhdG1vGVinwxZoo8brz/fzuxaQFvac45IwB9n +9OY2CR68lHOnQa0KsEQCT0kiYqqPs99lYzGxM60q4qML6Akrr2idBfpLCfbgoWxDYsY0ae0gY7sh +jSGxvg7wKZx9hjm/wA+hPdKWqMIZlSILtGXDj2BDZ2dHT3wg5UKF5jAdHdhjzhatjslaKE4Zy5P3 +6KfwJAo2tDv5SX2JZx8+gBrWI6FaHZRWZTr8TSvwRNYFe2hFd0AMF5nlw5oQ6lXALKFWMdtfpMfA +Dd1maAksRG1wcl6QoQaoE8Yp2gFdGgazO61SuhSpMKBGA0iDwrEgRWlKeXLl+AYDcKoY7IDNZ4pN +0wzsdy/8DdLOISolz/Ij/mAF5Fl1mNUd49nJEnbdMWiwvX5EDI6ROwX/ZAxOL/FKfbXFX6MGZ+un +ZHB5LHWD4+3hET5tGFxpXwL+GRucL52iwbbfOw1OQx+dRNFZtFhD4JEKHJK1JwdcjOkzBPJfxI41 +IZGqS+UH/fwitd55+qmWpd5NN2O/1lzpM1gGms/6kIonCTdrLuzoyBUyHTwz88YpdD80I83Oicc9 +wNfZpTbFfZfoOYvGdHUar6SbOb9JZ85N3g51JGgHw7clh43N69x+//RhROaENzeqJq/D/JabPG6N +UV82N9SZwdBHPeUBC4a73gOIDb/YC4Q8BLeILdQ5B/RRDy9rKHouZv8F6SzskFtnqrXUN5ELBPqX +Yv6KyGJmzrsQ4uZry1HPnop9zXo5d72/z06e1kMR0ZVJ7kvvDTnxPVb/PI8l3nv2vMgrpbVlAd3f +Xl7Rh2cQPd517r5M2BcOGqOVeiqaJ+eZhdX6li/W5nhql/akc6XVHPjIRG6JZ2hZ9OfmYAGrH6FU +Wtz+Ynp1+UxLURtw8mX0TkbfKMcmcXo0aB24znzR0FUHLs1oKAKvfehXDhzKSyzxyDn4mGewc4n7 +o1WN2i3GuMG521agGq1AN/oZPHABewyqz4bBaUsBXWvPOA2usOvHYJsvgXJdv33BtzHYPAk7ZRIY +CdpYAIq6zny9sGtnPnTLjAh3i0y1np9KRO/YNOT7wepMs7BfrWHuotsEGRHaSa19uJDRajozmNXw +iYqg2KeHs2KoSyZZdszAThaMGiizlimnVdq0yhq0xm9U6xqUOtoTv3AVv3wNZ84cvvOCIjJZrl7F +Lhou1JZXkfqi4erMEgOWYLSM5ZYxAx5THzWSLLFc3cxjPHvtKmuNJ1xb5Dnx7+SSCohlM27MC1y3 +7mvaucVS6dHbK5FLOgLltHMTteQ+iON3uhjsv6YmzW0sv/8eVgPL4Y8J+Xkpz/5oyvRfvQ1gXUSM +gQTn8cVO04Qz4/bvW15L0l4QxcyYA7486KgsNwq8MO5hH3jiQeMh75h/zNLNVnsfIyP7BRi9YaYz +h3bFeiU/GFjc+Y/xwwxRnjcH5s13FloIXuDM4iXBmLViNgFrHFgSuy84B4D82Z8vbebE4ZU+x0wb +Uri+8NC2vTm3O94GGv0bT8XKi/oFSIH1xDMhBNYTlUF0k+GowXo6r679J5YynfncftJOb63UBhbs +DTbj3S2lmxZRnfk+9oOy9UBHFe5tLIswAwv2Yg17mycOQ141nmsGY1g3TjxNd6AtNVFejP7zojFT +uQqXryro4M8yI2ZPdTHJYRgIHY9wlnchCBdOQ9Hv2ksELB7BFPgTz4CFwviKvsbjrg== + + + YxysIIUKWHgalZTnmHxOFwPvbrDctBrgK0ZEHze5aM44DmL/yPoirQCA5teqcC9xV0XqVme+SuFe +iFlnllb122w2s7Csv3LukOXALa0aFtb/2fWFv7KdVQxpD4lcMFykYbamfzgYI7G+ALXuWrvCS3FI +RG5R18RjsWdT7itXKDwtgF7x7S6aaa0mFOUjX7a+Xs7idG7PfcJgspiRj3ybYGvgNp35IvG6crgX +6LGbeOwi8bpSuOT0mNZJ1iZcF/LYlcIFNIyEeMGNuS4/p0yYkopo58zVvTCk92pwfFhTBsfSTxic +vXEZfrUYnLPfbxjBe4X7JjGAxRV2VQ22/iQMt1TysKXP4CpHuncM/Qni/HeJtksZNzCz675xinvG ++S9z1s/i/Dd6qlf6yPewot+gnXyJRXmdEwMpdofwqwr6q2KwF3M8Gx+TsKjv58TozEpbDrdjpjhe +Z76TK/EPxmDVvTcmPgaEylq8Jj623u6JZtLfQQ4JEXk4hZCvIuWpAH//al/FYs3ODZ82DYsMkBf6 +M50p6IjPg206u6MzOF7B57iFPGZnoW9SJQbLhSJ3DjqvL7BqfzYfG9cxWhr6yIulnUgvB78aNDr6 +BOA4iIMhSbau30uSGLDW4XYMG0/z2lUsfeVw96d+JXS9Hrt4uHRM6eb5VR4uzIG/x/wqDxf6YveY +X+Xhwhtz7jG/V8X6bmBnqdnVvGN17XDR7F4fT75kuMDjk51fOsa1NvL35fmZ9o+CBcO64vcVZc1z +N3/RR6fQL9oFL/p3XAYV0tNndaFnqZ2v/Gz4/E8A2TU6M/Tp3vg3qdC59C6e6fc4Cj/zOop+Mxyt +B9YprJ0B8NsLyFxC0wSxPG0EI0Arbdz1wq20Xmuk6+PGTyV4mzMm1vIePZ4ByHh4AADFiE4B5zIT +wdDdK8htVjRXnnniHSYq1jaeuTOaQK4Z81trx/zW3Xvm1bWDzYSEpx+9PnNrL6pMgaP22+ClQhED +vWDGVnVolxuYK44iRupBbPn+yp9k4kS7lKf+k9fB3uljT7XtA0ZwcZRxBzp6ft0PcxULmgNfqLqg +s/29J5y3fMdG1RdYLvEAe9MV3n1k41MMsm6eyq/fZ7qfLE/PrENT/QsfPPgLqD8C5sO3LAl++CTw +Tt9YEnxwJABjgf3hE2ER3jJESPl4RDDHDX2GCH4PRwLYm4X4AF8hCRAnC4iQjC7WDBHsZiERXCwR +aKR0iQGaEgUScJUpT0eG+08GjggG/+HzUQsfJKO1I83YGdszS4Lit/vh9x3JPiKC2yXLB7Du18JQ +MYrLsJICAGhd/JLWW0DQZ6ooAQDzogyCOg9CVSIUAOAPDsZLunIY1F2cqgAUpJKuXrxlGBW/m9GW +1w7jPeqRZSoRAGoVOwfxk8K0gpDUTk7LzMrJNndXmnbpxp3Y2naRetCZz0BEjvZbNAzuzJodIgA0 +xbTOBqx/cUr2gQ+A3wcEgL8vBksPXWqzMYi/ciB8n0s8zAfwE3JLMbbOrH0Y0yfPlcJFR0dhXQ+m +SgkF2cBdphJOGXwPhWKGARA02j/3vp2AYoXMzka3JH5xrqXg+jrYrvKgziD8UenM4k4V3q2OW7QO +XvhxixmE4TGtbFqY+lUZ5LwPQopto5IsonkYsCpAipSAx7QOo+girtU6DI8VgxX8JokvJute1RV5 +n/DgLIii/+h+j/NADH/MN2kdgGU4dThUKKHShy0urXXYPqD1RYkSI1PIdRNHjFxPbjZueZ3iGgWz +WrSOxIqMXK4AbkVGIlc7hNCHXYaRP5d09DooiyD7XY4Y6TqoQMrFVl9+eb8P4wNV5WdPf6VFuzxt +K6q94RXq5H+icboIpkqu6TqhzsLl7RXHTpSYTRX9fR9mqG7HjRxTX/L9AVV2WtCpEuhMSKMFHSUF ++uO3UTVI+a/UBnyNOqiKTctTfYd6S339PpBUKSfnsMA1fMrWAfG7CRbWPq++kl/vCNY7tpbymV9L +CZYgtpby2c1/MH2a8KqNuAdAWc84LK82upio8sCWib7yy0SBFmTLRF/5ZaJAMcGyt1cPU871ilGV +lkDUoYH1ymQQQbljYb85qEZADiCHvrlYm99EBWzBb266YjOYhXDeMHis/x4fFavoq5cu4Pz4xOkT +2zBPl3B4XhoLKE9NqjrKawtGWcI03VIFgGrlf4LyMJ2wALDpuRmiEB7GnNdHxTs8xkPc8R7bBxPv +/td06Htspcs7PxoGmn+7n15WIvoce3ltp/GCGXjbya/iLD7BNbzN1It5cx8lqrwMJjEH6E/Ldy/9 +6fT5QwVM8rZBj/7kncKSs3aArtj8SEGIH25409bG21tWqBpeb+9Ux3V0JW3f1pmxxZpefrFmbPzL +PvCzNXRD3lj6bUNWuT6WkX1Bhewj+0dcceszn0psEd63h5LzR+87VUboe4x9BuhPuQFbYvrtoynm +e2yt0uL+VLPNbyK3fBil680vS37oSrVh9V4c3URA10Aet0GqGJVSZkQvIIh/eR7pakFGlF7W9ItV +0k5R0fLUsNNV5sRpiTQVjDRgtKZq5weUcgFeJ5ySohXJEHQA4VliRTuFCp78pTN7c65PB6oyZ4vJ +XahwGpWaw3MqOmz5I3MUbIDwSJ/WEyhh8OSLN/qwJ+4EKsyT8CMtD8wXqzVK699EFA3DCnTy+BN1 +GRriUBU8U2XAyKClqxgThJtl8W+fKbJYUpWUUIVx9chAhUHZodYDoMfc9PgKKQdXS0nr6QLhghWZ +GK2nCxUPFhg+J2nthYoogxWWXV+ZiiGowpjinfR/J3QhL4bpw5GA1+3HwxF/wId7A3pP/bQk99X9 +fDpf6526mM6TLuH4+3q8IfYk2ST/OuY2o9OKXB/1Ub0n3ciWSuFAjhxtxqQe3S4W6Id4ERCKVeh8 +Af5pH4JEAqrOOzeJFBZFY/1pkJtg3YQ4zcDmKz6hAkydGWYExKlCI+dsPoPZBG6D4xRtwEKinMGF +vXipkJzEOSq8PI2P4Ooj7uoTm1Dbh435Kg9l9AIj6GmYdm5fy6nnyCERLsbbbmLz4W/l918fWO6D +6DaJp/TTCB1/oLkUlTszhH/WvKCG6hFWnPrhWFtwpDmDKRf2UOVR4LcyTKR4pVIqwIMkrwDVvjPu +oSUQFgamHbQWw+1ZPEazMNHrMQxS2zAS1AB23XQKI5StHX38w+LBTekSU2R1hHW0HqpWGYiolf70 +S8JTE4o2Jtd2YtnBnJSig/4atbpo6URfK34axOQ9emTKnUsYJyNA9I4RRtJCNu4B6r/OzDx6cvAe +DUzZJ+ZBlrOyvr2Zj/ck86Dk4UsiV1ScqOLsgx82Alt4snO/8mlXyDp5D3iYCyU31OF2oDC+kCll +A3L6ewIP6jhVyZx8N4CvtRQFWWdG53CgszjBrwSysuxAyskM4ka4gQEN1koYHzxUwdTWqh6oMJ0A +wc4Evr4jsHZqcjy1Tx9rQDi4AyFQrSAMUncrHGH6DBa0jfvhynkG8cfodG15J+J5/y93homDOuGE +Uo6s1mRUJ3sgTwTol8HDOntHiIKNZls5/BYJF3RmImUhm7nS+MlAy1O3g7PnPfBXZtuyZ2SsjIGf +HfiAz17DKjJxnfQJJsN3D2uNDTsYPqyUbOATsNGohWz4401ESl4wV8OBj/k09iMQ9NQu6giiC51D +Br52mNVz8Ykxn35w3uwPvZZkJUH3ZzH2sR0den8Mvh5tQrzszMyREKsgL9eL/LFNsrMgUc0sw8Yw +T2VSewBACenMzMkBzB/qTC7m+Dawrne4BWpEs8rxB8MLeMoKPg1w5tOYs9VG9Npz/PXT54Lx+xM4 +tgi7LRELtVwPL0T/xRyh7JbH3iGElQsOaH59B2ljqYMZBWkP5+fp0Ge4VaKC83OlUtHs38QJZpx1 +6Nyyl3YHLhNWWm+eojWoUItAlyabwiyzCJVgxp03Te+eUlMG1hJKg+a/0sgxszNGTmNLN4GFsfSx +OX4rd2wOa5xY4N1jO6gtHay2hMYNT1t2N27a/0oZvmk3K+uGh9vVnN7vU7zkmXeObsosnDujDnRq +BtBj+bLUiWtoT+ls9uGjd/pECpFyRSIAtCrT5Wf6iAbgncGxPHu40x4EWrWCASy0ASI+TyfInvdg +Z8dnQ/4uzXxAl1K/wcNTKQ2K9CYwuX4pO6noIqBv/orzTyHhnaej5SAw/tFhATHnCBUTPOOMYT/k +zzueGvmxwv5g/Jk6Z43aYMw2h37BBmOgaNwFTy8MgL5ZuMeDTrka1nb8ndAPb/lsJ/Spu2J3Qt/P +d0K7/DqYx8CGEJw4TO1ilT45EA0KBCNZlCtEswDRs3htq0wIGu5W4DpPMWi02OjfBjs7/dviwQHN +0ADvrJPxWYbmDRsmyBtiNz6hVNJnjn3zdyGX769yu5BWbl607kEKb4Douzc3bcBBh/K2qCWSfZoI +uUODJcEXnwSnzypLgg5HAkqPOTUQwZd6s1ppIgySVQEJogflvWhoJyvvQuLlwy27PehiJjp77Lrd +aAsVVONtIEsxEgCgM8uD4HGjEghZANyWOhjLlSDyXwk7n/xK8kDNyxmIwUPBccsw+AwJAMhJpSII +dmddwzAQAJ1ZDALoHfctw4B+uEd1d18ZBLow7GKu5NkwVj5fXirdFAAeVwoAMBUj6iA4vrxWw1j5 +fMkHoXU2rHyuPAfw/7s79/aojSyNf4L+Dr27wwQTkKtKdXUmmRiHhGSdgQCemNzYxm6MJ3abp91A +8s9+9v2dKkktd8vY4WF35tkQk27pqC7n8p73HMlKE/sXV7E6xNIvL7fGux7WkLdc9fzyfZzq5jW8 +snlO5dIhln75DlW+K+X10VLd/+Lx83aIp7OVR3SWzqe+fHK3W+3Tn1flrudj73oaqO9jf1Szxcc2 +LvOx64bKxtLHhhyk87F3bWMF+/6wg2xc9LH32sbSxy718yt8bOMyH7v2Gq6Vkf/toy9++q4Zwpz/ +cnGIW9dFvl5G3l8dovPL91zDxYz8Ppq41ffKKz1iMCPferdfXg1ct94/I+dGJQWp0M/7t1dfc3zn +m/SD/DrWD1IeUzI/2LhdnnikJj1c3nu7X7UvW971a48eLz6PmfAt22W9Em7yp9OfSnvjo0+fNndu +7u4/y/Xgndy7z/3k5o2KbcF9v3s5o9wekC7H9PzXWxdvD9wuGypfd6qqWWZz2eby1Yz5rYXLjqK9 +2etCXuz39wrl3o3Yzz6/3Ws19ho5F5r++e2ky1l2e73Oldcm5tq3P/NXn3/cazX2Zv7qy2Uv7xcU +uDfPNwK6t/R+9UCJf3/ctAaXr01cNr8e7nycm4lN2ffw6zttTfr6VlOdP9ytSr/xo0/3qQMePlKC +Pzq/EfJQDuyXYUGEWdW8c/ZP1UbTO376dbblx/3e6dMH1XXbV9K3/OjHnWXTqt/gWLavnj7a/EMN +sZXxRgMj7qneXYK9T7d2tvf+/Ml/7bwM//lq+8n27PvSnrz7461fmruVB/vdfbYn9Q== + + + 8rW0S+vmjuLu7V4XsvTZnj8qr12W//nORvk0+fe/l6bk8naZuftDfT//KmZuA+VPjWGfH7nSb2y7 +1r/uVQIpGrvFXPjc6ZpWd/q96l8nptdq7PVzfj2y3TtnXe+G5l/3vryfu7ESldfu73a309b6u3/p +++Lix838zAKr3s57rvLTMN98XI721r04qvOx9pWw/W6z/+H0/skXL26cP/n8L3/dt6W3+Jn72YEm +391s7oke3/hzbqVmMMuzNN32D/Pm16H3vpbf5PmQb34deu8r1v/Ab34deu9rxuQP+ubXofe+ludU +rnrz69l/fzb6ZHRD7lA+uzc77N+dHN24wZHH08XrVyLgnt2dHh3Pdie/T+cjPS5/FH/k75DG2sSx +cY4vTo7uPh/dzLJjvTHenY3UePve6Mazze354ovjg8Xx2Wwy/328JYf2v93d+/qL8da4XPCMCz4Z +32RJ6hnSnNqQ+6JZ7m9ykzRfNDDIpScZ7bfTkxmn70wWi/nx89eL6Xkz6PZ8PlmTOnh5fHI4n86K +jBlvfj1bLM/KX4vfX03L2ZsvF4tXW5ubb9++rd7W1dn8aFOnlDaV2TTmzvzwxZ3z32eLyW93Zuf/ +sTHefMz8s6OLg72ZnLxuR5Pj51tcdonsbHLaiDbrbYSv1ND/tRKMwg/P3xxde8+Xyw7sOQv/a+z5 +1ev5Sd7x4cHm9GQqoXO+qSu9ee2dHx5cf+Mi+6+x74P5dLI4fjM9ODs9PZudZxX8ER8/+AO7Pji4 +cOB9N6bfubGrF/747189e/Ly+PxeMfN11r92ST7OjyAiP/tv5cN09HrlP3tXguVRHaN75p4No+VN +Xan8z1itfehOWa0ra2KKfmxdtSGXBW1Nir2dbR+ePZ8+eP6P6cHi2wnHfmvUvbqwle83F/PJ7Pxk +spj+dLNMk24zB8PXP230hs9iL87mpxc0tt0ZV4a9cKp3oGixZCE0+TtfvuHDPzj0dqzV+Nvxjz+r +8aFo+dEoixyO/Pjmxnj/+zWlPxipKtjoha8m/gqaVFb5EL21yTntoqmtHPEpaR9V9MrpJEdiCkpp +561TJmif1Vwnw5HoTbBOX+vI/mRkk6pcHUytrTxKVI8RqKzytTPBO+v1+HRUm1QljYyvTZSnjdZk +dke6dpXlpDdGBVXrcahN5ZN2KrFO602W8VUK3jjOWaPT0DiRqaIx6MKnZj2mUsHhHyqEhIxcY7RR +tdeyHJFAi7W3tYpJySiqsoHV4qo+6BgG1rsz0qykNso57znDnqyKsgFnyzxlvakKKuqk2H3y6Voy +XqtKa2MVGjZFpramcikYk8QAyg+N43BXj4jVRqtUxyEZw1zeJRnbGO/82AfPzlONW7QyV9tzd/Ri +dLWGTq8hs/vBZF6MnE0Sp8jVKdqh/Z+OPM4BzTF5lAH9XDg/MMvaHNeRGZjnxUjsW0VlL5/tdF1m +0HuiqsDCWmU3rK8lMxR9V67nejLsjIkrgsvYUOIY7JHZreJfr2KQnaWQKmuD+OAlaBCBg4DfEwJG +omJIBqeo+DHee4GycXB1FU0X6XnvXtsqEuQ2XD6XDXV1OS6BCxW5wKDSiBT7CZVmquRkfTrPYj0r +Ccr4Wlx00ObaK1sRTyZD1yUyZUdGew6Ihh2Wcwak9dG0MtEKnpVRLnEKHA/lKcDAXwYFV5spG1Pr +CBqQOFyqmQxNV4CQrxUYI3vHlgqtq0AhlTIMeuOBLzAG/1cNbKva9pfsdajQL2hkY9agViCwTbVu +oFQElCOleVegXyttQEmjuSCvwzCgdsGEbCczPmAShe20b53Ty5zJkAaMyjBKeVOFCGTn511xGbIi +qmZMVaZAIdH6VvXMRiJxyRpftipTaMe0wYXsLIFwkMGJhwLUbCNWNaMKAMsQsa5EE9G5knlQRJJF +BTxHBCL7rLm6Ma/Oc8A3VGQxeY5IxiOTkyCMOJsM4Qhmknh5bDc6WWVok0U+j6YkZmQT0UtEkA5D +488ygfMkClJdUWXExerAOZuNkUcgy+ocUjJDQo8uefyp3QQGd50pMHLllFVNmm6mkDHJWE3MEYPk +tpAIkCzCJhm0hKMQGGRddqisIgIfj9ct1ssGe7lZhuei5mp8WJuUiq/J1VjNK3yn+Cv0AWXV4uZF +PSn5KrZuFvlSC5rBnfLWd0YJ0oG1fDO7j67CraNlxUS2ODP2rFr1ihOxhhpkcNlHEm6K4zfBAnAA +JTUMIWi5OImH+roObagQyTHEdnXiYjHpqm7znJzXqLCLNgCI+Ux0xTTeOSyJl4XGh2MIFYYMOezz ++oAqMj1Ep6xvZxShYp17AFkVpCxpqAd/Mn3CJXEqV5clhuT6UQArS2Bl6lJAhHWgUzSEb8gIOFrV +6Vc5/D/ERgFiO5kRwtGtkM1XSjio9TZbMIjHhpShNs/PjnDRVAwg543UAbYTAOqEk6Z2gczhhTEk +2yyRYMMMNZptgkyGgMLGNiXgqJVjztQiVvARt8JH2xGwA4QaRGmYqOwDNSLn+F7QIuAorArdZluL +4thGIQHZk2B1y1WYrDkj4KDKCJ6oMsJZS6RnZwAtGkdDTYBAIjiKH+IiRGW50klAs/UOLaN36ATs +bti2BdqTdcurGdqTIcCFJgPDUyp4NwaLRQWCCn3moSVeMUbdOjpR3+bdlvvqmrQWVOPJCY1g+O4X +DIAolAjEF1+TWIFNLMFSzhsKC9fS3owaxqfl5XzRts26zFDjezaV/LUUWZqJ9ILWQknKeRes0mns +3xgJYK1aLpy1wADoyNm62Ig5cPdadRzfaXxJ+WUi1eRKclmbEpzLFosNf+A85AuHb5zVi5oAG5O6 +CbTG7rZutSSZjwheEnKtCQib2oA2As0WX2ksyemI8buIZq8XiweZIdQXkivYSxok95nUjIEAcd2t +QVYUe2pgEuhaD1UkvjC+M13y1aKGssdAPlhGdFaBJ0M0gAJegbmhzYly+gqKsZPpMrCFq3WalOKE +cSJ2JK9HK0REkw10a+s1gZxzLFDd1jWIEtZQriYtDUiAKbnuwsXE6Up6XpGhxhYnIyVnnjFeWQaV +J3hmpa4tp9d2sirBJDWeLTpqoGF9EGKNAy3+xIFVrEkM7GVNpmgEB0/EQ43OVhdSlBooMokVEbjS +LgdYb2+Umv7F0KemmUHIwBGXkMLqJBNBUwpLxMIkcgIctRNBufzXGZeIqFD4zdjV4CS+FVvYRUJS +HBm34AYSRJARlGl4L6kTiiU82LED9rQzctAXK44RSsMCPVAU64gOYLKk0hzntQI1TdOI0ExG5Bun +CpEZAxkkTu1w5JxnkGBUsZCvM0Yyj4cuxiXT0mTuPqGUgrRItJ2TelAG2GMjDgqVYWhIBi4ND+w1 +K9ZkyC5ooYckhK0WNGxT/5AEKUyx5XbPaO5KGdYr9LGP2wMywjLqYKCvpYtTYpPk7SA/gnzCVJQw +gSWZBorJoDVlZeMMUAChH8v6UIMxuAt2BKTEOYMYzVjsmG2EekE4+IYVlWsAiS3BVoQjGYC+jbW1 +5UYWh+uGpnxIH1BmxQhRKgxqXB8bkrlmSICUkGW7XZCsSrAnaCpGMsRJLjSGXKaREUyoJcQGXU/Y +oUpdzbQm4qMWeIASa9FeaoBKconPhC53oExXlZGKrCQDYXJQI5uDBDiFX6jYDlFLhZAsxNlmiGEd +wAAo3hbOgmQBLZDngaOMZEKlE7SzlrJTujIMKWvXQp2ThLTUv5RAoe6wTgFtQbWJDCTzOAdEsaPw +gi4wdNIgXxwGggY6Sd9qif81NYbHvq0Bg5S2EbcsxaxgLBpJUgQEyrC8ZSGwICp4Vag+MEsdg7mg +DTHjz24rw9pqV9QyIAP3oL4wycXSihqSIftivx7WrcpIIYyFKLqULrGIdauaUpuJswEGJKDHGk02 +fFH2ROhZuaYlAmsyUlpRrUFjG+adQ60W3tnlG2RAeAoKpWPpZpUQgWYnW+gvRaEnyDlVklJO0dTh +sBkKlWxJoaYhyAIywRWv9BqX6kiH1EmB4OT6SKZo1rK+3iC2xX54V4O815FZ0R77hXunGnYfTc5I +qxZIFjKuY4mh7FWrEjsZOggr1RS/dsjWRaYGN0p9NShDuAUiVkUh22rA96LYhHUucz78uSKuUl2K +wAJBVOUtriJRKigCO7Y+ThBLm7mpgCSXU3JEJ05khZ2Lb4ImZD8jNbTO8Ex8QmWDbeEZ/eqEDH4X +Qq5Zx1pyM7AFRctVJwqneIr9nGRr6WOSErTLoc8MUkkwbS69k4whJDbZpjAWskSmx0yx6WrURSZK +b7KJ7CwBlEsZVGcLkJIh4ywDp8evigTLWMK7SFC94vhFYkearFFu4HSlmSA58/i2ahEmJ2bEULkF +g2c6amArIV7aEEAKmaXmapW7KLFZCQESS6cgc8zs8r5rNgBjUmPWtdw5KhSSskA5aT7VDbUjJKwS +1/ai/HJF7UKXX8kmOCrmapCZ7YiWtDXNfoR157LPaumrZgpJsUDOWHZ8xHQECPArsIpS3jAKlRn5 +3TYVCnaCEBtYmy4xz1rZoGt8Ni8WrI51V9Q3oxIasKCS8gDFCuO1NW3WiRGDpSUd8LmklKAq3FBi +uzJNsUd+0XIfDT7a0GUjNAvBEErTmtpNMoakP0Kl2JePQNqyDUzGkxZK1+LDX6Xp22sjohWDv0KQ +G+6Te3xKusJZ76xTmgmYw7YYuDNKEgUYEr7f7JeVVjAbuTWW9wuysRCnux6GFmxl0hr5gvyUAySY +5a0MLSV3FCOE4vMHIycZUDhX2zHS+LdQFgZi4WiFcKjkvlWThlCTtKWMlyKhrJYEWpFVg7K62Y9U +6sbhiSHXqMIsRQaYjssELjLEURs7u1lGbN4qpshoaYSnkPFCJJLr0WApMkgLbe9kfGUVIvWMHm+/ +GqnmBm55pGh/Qv2ZoqQmsiE6j1S2aLXyykjVEAiLXKOuyUizFUyOwjwyWsGA5CwI7fBi8aGsYciB +CV42Dn4BGuQK76n2wrqE1OPSL4evGFGhdwOjKBZHzR9wJvBqaCXrEiv7kXJ4VUb4BHAaiDOFpsfr +K4GE4Xfgj4dIxaH9rErkHsaKVtZHWdXs+kquso/Ydvj5hdXHBCbHW1v3Tk6OX51PN8abe7NjeQ9G ++3CAnNw9fjN9/HLyarq1dX8yOzyZzv/WPV+xOpoeb949OzsZ90fd2to5OTv49e3xeXORGm8+mk5W +hR6dLSYy1Pbs6KQRJN1J977t3A1ddX96fPRycfHhkgsCX8+OF8eTk+9eTw7nk/bxjyB5JwokkhjB +uMGhd6azxXT+9F1rfng8vTc77K34UrHHi8l80ROEEV/0lMtXsH9tZXx/fLh42T2rsWK7h5P55PR8 ++OzFh2Ly8xj/7GcxcHHwmdqDjMVRL0ENeXCC3tIFLW2yNRnopZGimTDxmVGXXoZJWm7L5EQHwVBQ +A7ZCZhBG7SlD4WoxB8+6hIRs7aUDrgXpSzJcG8XI7ZM6CEUiUw+tZE1iZT8yz5pMvg== + + + uSx3BKTRqMcDK0nSpJJGMQRObjqt72dFIkPQqlbWRlnT7NpKrrLP/wsIChJ0Hf+39QcFoSQ36BJE +QZru/p8BQiu+ciUIXVCHMKL/LRjaW31cbKjdunu3PBfN9vODy3fujG7ceDg5mj6ZT45xktHR+eTN +dDyZzcSw01ecGR/Np+eLs/l0fP7y7K0c4ZJW/MaNew++HP0Phl8izg== + + + diff --git a/dist/images/KiwixLogoVertical_v2.svg.png b/dist/images/KiwixLogoVertical_v2.svg.png new file mode 100644 index 000000000..20e2da196 Binary files /dev/null and b/dist/images/KiwixLogoVertical_v2.svg.png differ diff --git a/dist/images/KiwixLogoVertical_v3.png b/dist/images/KiwixLogoVertical_v3.png new file mode 100644 index 000000000..87f9d431d Binary files /dev/null and b/dist/images/KiwixLogoVertical_v3.png differ diff --git a/dist/images/KiwixLogoVertical_v3.svg b/dist/images/KiwixLogoVertical_v3.svg new file mode 100644 index 000000000..44d23fd87 --- /dev/null +++ b/dist/images/KiwixLogoVertical_v3.svg @@ -0,0 +1,614 @@ + + + +image/svg+xml + eJzcfediArmu8PcCvAMECB1m6C10hhISCBBKGnUoobct98d99s/29GEaZe+ee3fPyQLjkWxZkiVZ +ss2GWsOVHm+GpMvnxvQ6szm7JwfHzT6qR7/qS8vl6XDcw5+sdZseD7kx0ChdCvfohi1yf5hv1lG9 +FwBw+8FDAr5tbYxmy8GUPJJ7p75xJCeDtf7LOtqsAazRkRx/2Wx6qw20bs6PSxK0fy61Sx1XpVqo +9jDcvR1PbExnAPTc4Aja4LgH/BvRe6PekL72Ap8P1n8MDof5f8GnQV/YB37LbE7r8Xw9zWz+iuox +vR8L6fFIOAD++LzgcXFeJw/CNm5/KOT1+cLhYAgPhwLwFbc3GMH9AW8g5AvD1/3ukA/zev1BLIJ+ +8OHucNjnDfkCEV8gCMDmNqPTilwfa/vNiDwcspvlZn+I6rN/g3G/ADqsjwN9l1wuN3/qM8vBaKED +NAz0iPmSBORaDY563Acpmy7h3l7mNF+OX0+rIQkIGQhH4M++HgL5fgCwAFj4Gf4c6pVW4JcGeTyC +4QCEcHbqhQy/G5AK8F/rZ52cztFkApJ+22iw+812NdgvDvchBATZJFfbJZgxRN1IBHcH9KEg5o7g +4Yg/4MO9Ackf6XcBRdB7YNzuIOYLeSNefxgL6MMRzI2Fgl4s4vcG/GBOwSNBA9zvj/BbUPC4eSH/ +mJN/RvWvmzVJET+9PzYozvH7MYz6Sz2pn5bk/n09PwKioDFFKOq/bMbkErRn3ycAix8Y+uLcX6pB +c7AHAgDYbbM8HZGMhBkMYHYrg79JyCI4haC6JdfNTQv10QVmQe+NhHxuP0czzO0NBPxhPxYIgCnC +vbgeDwT9ehwDffcGEd5wWO/3sb3Bub8UUogCImAwAxKZa4B7qvv5dL6O+rx6rxfjoaQYrLCfjzn+ +Cnn1YeoPGqgbjAj+g+MRQHdvROsvEfRPKIgHwrjfq+UXikqA4McjuaapBmQl+8Ljfcz90gBjyq/H +2c0KzvoB6gPA9GsgD8vNlHrGfkZPwOunLUUf9L0HGKS2n68hTN0rehLu1ZYn8Kiw35y2pfVko7NS +yrEyX5N66pkePQQ6Df022B//3OwX4GtpTA44KXcP5lubIsjGgjyOZmKg9K/Xg22RI6CrAbeP9dXh +L/gCYUDNoW8CfQyGCr6zbdTBgWnYMyMHb6KvzH/V386RE9Bt7nXq1/z6D3K52fLAUu3U4dWWg/Vg +zxKLmZs/wJMBmEgOIGxIHjsaIAL52AJyIBjCqVBtwHukYbr/Xg03y/lhxULm/1IDEz4fLcnG34cj +qYEQjRGUjr0+sz8dZvrmZrPkwAoesRShf0a/wvb/GThq6IV1dQ0+zKQw0Q3EmIBGpt75D8XFviOF +Bzz834IjO1gu59P9YDubj6TQSDxn8fGfXTZNYERLcj0+sGiorxxoKPLUb5qnXZ8fz4HSkxFyxTaN +PwdAJ1fmQ0VssN+T+XoMxKJxmh9Jjkab1RZaofrGbLAlkbAzLRsswEAPrFf8FcnlUluqqOUOdYPS +9MyIqXl4AapyCjpT3QNENuVnesXZ9oC/J7AonT/22PRuqjNwteV35c5DkuNDnVWua+ARtFu8yG5C +/4f/eimb6a7djlBPoJF5/HtJHnSe5/XmzzX6oo/qrJ9gdRuclsdvm97zOliReqfO05gDw5lkmmD6 +qg7jWXO4vjMAP9R1mDvkj4S8uD8I/uuPBKFtGAxFcGD3hqBNCIxE9AsGngWBLRyOBILQ6opgwJIP +4REsgPuCOE6D7qR1jO0KvvwNvpTBh1/w05+AQPoX/ec3ph+Dnzt1HerEWOeh1tWYTu8BowD/ReMF +BOJGq0qy2mAJDDcSjbA2vPOYxK4OomDnv3RnLlBtpKtl2M4yfbpkYisAHH82z2iBGlzDQThGPaIs +Agjm/9E/A0CiH2WA031lnCDgRg905p6H+Q6YDH6bjyA1Bvu/qe+dl8orcHQkH8b01r9WyzV47ALK +cT8fno4kUMhO2DS93w80gLgDfF6r0Qz4yntyTbXx6j0lMCz2Kfxz/BuqV/jUuiKPgzGgAR4EQgf8 +uxF43ABY1lPhK38MlifmnflYue0ayC7VFPQKNnbeh0z/uymtnb778SQ6GG5OxwvIzHvnP4faNxLU +p0zQOXTWPIc/pg7QQDt1jUfyL0hZNZI6lbqGK3ZNGji/E+NRdIL8VO1T7PwP5u3Z8biNejzb037p +3uynnvEI/G81hy0AKebLJXKsL5OAPXnYnPYjlbfOhIB7Tbsc/JPTTDW/2yT/BwwIRqcvG9E/1p3R +KNpG0Z//iN5A9qvniP8bIv24PvT+GOwPMRlVyR84/P2gQaUyDe+0Qv2L1BnO0WYJroE4gIgN8viK +yKBOIX7rf1oZqIxxvVnLdZk/vuVmtCDHWsbGtPwfNVD+MWkHMzUfDJekFsb/PyXo0T80izps+i9z +MRze6HQ4blb/rib75/gwehjAGAn0ZIHq0MqO/7hcgL78B3Xl/4KUHiZ//gevxv+yGByW89H/dl2M +B7x+dxD3496wzxfEw3pPnRws5cc8I+fTmRYpY1v+u8oYJUt4A95IBAt5vcGg2vj+nI+PMy3Doxv+ +u6MTp4aoDO5vLQP7+98e1FkCjMqo/tKkeP7tUQFlk9lsFIYx3ByBxVAhJ0cqE0TLqM7f+Q+wDpBa +bKCICMrw+tfNA7CI/dtdYGLedwobRG7sjnFM7z1oYTJeYySeNO50Ccf17B4GSuDRVwbr6Qnms9Q2 +W7g9i5B9vpDj+Wml51Kwvs/JIAWNTjMi9/ranjyQRz3no+IBjFEL6VJE/0IeZvr64HAk9/P/QrtK +PGzUGz5M8Eb1dNyejirvMEOF2XnpPTlIo3yScxtFpEdCXoyvw7z6EObF3AFfAOizEMzrojpS28zX +RzhdVpTpxpdgBnFuftguB3+/DGDACREzvT8ON4P9WB84pyGPPMxQa+m6jFIVJw3y+lQnl81NneoP +6l9tc5jDAaKnOG9h5WchSq5FGuB5RfqxdGDG2CCXJMxSlW1Ab/e9nosN0wJNklCE4ewPGCqOYEIh +S3MKPmJFhuf1i/VmtNgAVplSGQeiphH9drAFHHqYr07LAcc6wQCYb1mMely/Z8YFDDBvWL6lVz9k +5Va16XRPkmvF4cwBhw+OJABKonCScOmCQI/7wfqwHQBdM/obAJyP9TCzV+OoLugrSwBVoLxR4YJR +IbWw/4PUN8m/jihBZDCcL+dHZsZhLjILmFEuVLZygx2TWHpZwg2Wc3rV9NNAQIfEzLIaHBairh22 +G1pVhhi6jrdzN62GWAt0Oxhzgal0SZ8+HTesPmLsO9b44eWzwVTQHlzzicGITK+nS7oxEOVgiEYo +bl6HtniBoyOnPiVbVreDEUtGTAlmhp1w/jRKNq0zE26lktR5a88iXSJOyyUzRXQ2O3h6zsuYfsIu +C0AslzDRk9pe09LycNxvFowxxG8c5DUerI9zPZj9wUGaQ4RGFNBSxcERdL2yGQ2WUBcdeFpHpi2g +Erkv5fgt+Y+bMIQAsTJrl9xsZcnlkmNlr/y0FmFO6WZd5DllXpnJavKcQyW8WWDcHdXYCdmmIm6S +bkksN5t9dTI5kKpAqaZ8qJD5ZIYDe8Cynjfoxf0KDfkiEo6EcYWmHOeH8YjXjXsDkVAwEPQG9GG/ +H3eHsIg/5KV+EC33YmiN44BdDdVFGQ2eHZA/EA7JDQi15I1IFSo3JJhipNZrwO2Mrg9jbiq7HPPi +AUWdlf/reGZJitvBnH9JwLii0uKD9odlmQfm3gOlA0yr42A9UlW0CLRI08KMNdYI5quZPVLfrj9Q +Drd+OFhyGHAZzTRazrdgpYPh1L/AmjgFjCCjdoCCYFOIwBNP/q/tZn+EmiJ9AEJzeCZZEXMFGGtX +fv6AVTaAX9DMtwbr+WEGyMJjQkW9j5K4W/PDnFpwIQvLSEMocpk0cOCbmy2vO7dKGQc3g7xmPmhg +pDOgYWmHHuC6HLYUDUORAAs5gMOKDR8evAQylBnUaahxtQgPz5corcfkXw1ytFnTyiLs97G9CfmA +eXZpbzgaXtsdYr4/qLyCGFKev+ReYyn1j3AlC/2+TMmCPePJUAhnIfuxyOU8CUFLsaScItoyxvTm +D3K/hQmMtB6y0jFUPBLw8Wy2RquAytYym7/aXCzUige8OF29JN2Yb4JYGfWuZz6I3oHKGrzT6TI2 +Ehj0aLMfk+NzFan3vG6OgseCKAHu1QMru7AfjOfQERqsx3TYQClQQL2Eqolg1j58Cfka4peEmHB9 +vta4GBX1ljouxsiugMWG8XNLOZprAvzoDIRHeRQeqqxIn+EvSWrUo0F5uCCi53czdCPeGCyXjJ92 +sGlqLpRecas9CbjuQG5Q0jvFG+cBDvFLTA+AxzolleED1215pkLEjQ6L+XYICLQQx9HOxgQz9Dmk +MdYfhQnZ5c0QVh3oOftdhdBy3RnOj6sBFEshq0m03k5XCzcwBMjxZjJxnw4kMBQy8Cs9N6zTefYS +KjqFL1GhZJGNLo+D31yqR6OVm1Eoo9XfC3m68xpujjNm8mVArgAz0EIQCUh2crt383ZmpGcQMMzB +TW3Q06z27m649W1yqM9uAJOM9V/WRrta+7Lp//AqcyHq/WYyZyxDQUGB0nuAHUnEE4Kg3dmYD8el +e0xBRHKkUTjga9vtGJJrudaMYDuWnyZIWAHJ1DtANWehhv1euRnjbxVKsjdoQ3eSbhSWA4UydN1L +sPZpJxRFWI5OYQxXBs9n/kAopNx4z1vuAHMA9T7WD//W5/Zgod4r9w4C4U2fyqCPm62C+I4QoTc8 +/1q+GU+CFBqJYCko/wOlyTQ05YuSuv7naONVAjqkd6FkVdAS8PZmDabjCGN3Ki05HSTXgjWghvCM +AeVRj8nDfLoenK/uAqD7sXtLx8wVUINWE+BNzjb7/1KaPNBss5+6Z0yMUg7WZg+tl4E60sNouxyJ +wztSKP/guc/SrQ4wqMC0k8QHWQ+FqNXwgUlYDrbumXLfj8BRYKLgqrD+kFdRVOdHa7Fzc7aCHmA1 +kkobcg29ekYbu73SSx1sCbQijGvyBFaVuDNN4oWgUxpcs0iidwBT0+naikMc7TcK+oCzNVTaQENs +DowtVcXHW2E0WDf7i1qzileDmcWtTBoAc401QOb1WUNrts9SzDxZH93jpbKio2YR7tAMB3sFlbk9 +uNfkdMBtnEo1gggPp+FByQY4AHsYWtDKUMbL7X6yWSspcQAJxtuA0XngPDHpdkvglSg4LggSWLTW +anTa8+od2SFKTNHBDf3xNeiZIlKw7ArbhaRWjb+2bkEE0ietGSC82QC4Xcy2CPJlpaBNxa6ID5Np +uRe3lGlHr7qC/RvJecDhjA0UGgFgcNsG7dqwCl2KjyBWsEgqQtpsRxtlCLS1gHaTVECNT/ImCmhw +OG0RK/45mx9JJZ2IgB0UsCG3ZnJaj1SaCFYXST6kINGRIYbHVJQ/emewXjN7n1LDBQ== + + 3hI0tdlQlLbUEBERBLkpPLc7zbTiOd7CTXAYDqnSG4FNluW4vACmiSj+JdwmhDu1cH8wLeA0mZHw +sltQIEkpo4WHBbXNwo2BLL0xUOdvDOBno7qkLUOBhvxWKGwmMcizLkqC4tGTaiQOJ6qSiuqnAq34 +US6EQyHIhcl1WsABXDrHesMFQPXzNdqagaa3GNzZdths82dxPhbP5lmz9eA8iQSY4GzqU23+F7kE +b03Ikbh78N32DFhjuf3gz/NZYR+/bP4AT3tAX87EXCBucyCn6ISmM0I0Bn+QL8DfngOWSgsDfSrR +LOsn77Q6/X3DIXAOazkC7piux6BHCpYU5CPYFIXBKqwhJQPVD5syQTN5/cngb+4H261KQ4QdHViW +YQ0kGeyoKSsn6k2pMc3XCr4l05QAktEmhzCOTotfcwakSQ9PjjrOSD0dVtEf6PO79H/OyLX+MIDc +oR+s+ScP6qEjoB8c4M/00Sw5gs0scuvfDwgk+CsE9vfmpN8CidRv1nog+fAJQk2Bmw6AkM0FiJx6 +gIx9dQ3Gqj9uIIgRqZ8joRzol4O/YVIWmIblfERl7x3gYSOge6V1DjnVHBgK2xqwyAn0bjPh0M8P ++tN6AY8EcStzKDPzAPRoP98KLBsV5qsrB7c4VqFsUiBt6tMKdDxMClRyggV9yKhFdwWtm0p2CNMS +nllX4rtesi2b+/mK11slwabSMmF2DDrEEc4R1Ai1DZjlv9VpyCSE8ZgpT3FcdrClcsPmzDolbbwy +kF42681ott+syBxgDqrcSbwRI2l1X5QRIEsHeuyl9QgMBOWGqBJANd1J0itktQ8K5hFgwGnqeLuM +SoCfebGwH/yd5dypt9OAS8CT8Tg0598q4ZWaoOc5s9Mt7cMItLL8vMq8qpx55oUptMoY4amaXLKW +lMvJ1wWAJIJkRpU5kKSCIos3gMMNphw4sHVIfi3DgIiEo1BaJcGCgEzzpjDGJr9WUeRt8hJQNYwd +zsfgSDZnp9VwPZgvOW7XyrMcwWR6p5QcqKgiqZ0FqPuaSqeyyGvC7GY95od9ZWKBYk3b5u+xa8NH +H8n0N2eAaXwRrIhAwQ60G2+8F7TqdZHA8jhcAQ96KYs8dbEKvUwVctajX1GtQJXEdRKdP5Iebpi4 +Fy9FQKwMNZQvXO4qi6QKJoEgP4qbJFWFJSkjyqpVqIo0KnRt+XDXCU5pDEyJ+WTO7JxeNvWabTch +tQSroNcrYydIEEzMNH5NK6D0PGmwk9Kj/WY4OFJHEV9DH9ZSVB6kSH7Fo7xoZs+MQzYYBNpQLJ5l +3UnaY83MGW813ciWSuFAjoTI4EN/svr46Yi3nyyxQcdZ9j1WXZnUvrCaRadrQ5kwOK2W7HzgPpiC +78V80BhNvRcSL/5ktPJleUntT6MQkfe+hM2432/EsEPuNzd1YqZU7MdtT8Wd20Pq8Oz16MypWMWw +ZxqVj5lp8a2SivvJRnb+lBjl3G7L9AxVZdwF+EI5whwNfRSOud/vjP/D5UyvNpUDcNCPM0ciaDwR +Ob+pnfldWto6c26ClYeSwEyhyCTUevv8Sjez7pY8Un676HcqviC+U9GDe+XIOc0nwloYT3RmRCyi +D6YjN/luhzLL1LITnWRmx+ws9IELyNF/zI3wyi4VT1raFBzQ5UP2Z/qzAZ8ed7nSuGTIuMK/pnTD +ZVxTfegMxiedOfJrdYzyo8CbNTvz92LxtNn36Mi8OvuOVNbyTmTJkz3RKhtnsdFosICf5o78pDKj +MOOYZxDaz0396PynPM4szUmLa+/4OqUrjccd7L8tFSvPfDpzMNb6TqXXI8vK8fQS84RWX0/zUMhz +mPjS+1EJdyyiOAtxlCsfWoBsIQsZavuwcXSe9QzA/OIvT1aXk8wsQ7UVNYJuxZzKluLGdt4ZCRzA +vJQ+g8ZEKLv5ccRb48+od2j8RmATazMYUCJoN8Ip+Qy2g29rSKdEZmELumjWbI0rGP5tfMl5BvFH +wuD42EMsQfjgB0FBTXRmbPhQ8qPPjgQRpz/F2/lnqnnWme9TwLxdbwmwbgdzJBJ5pzeXnD7RcNpP +8dj49/UHzSTbYQCvmgnQWECjTJntwDfXAdz6VIeNSD/6LWDI5HqI1GC9T/qDH8HfUbqZ+3XkJp7n +XX4wsJgyweH7W6Rm7rynq9lMLTdpzHep3Xd0qjNn/N1mjyLmR3D8ke/hjlbG30lXidxvu5ed/wY9 +scnKPCWyEzsOCJjoh0L18YbDF27sVs/pasX+TORs42eKNgyhKd4Hs3/cut8cydZgRw0oEQwPUrHm +8SHdLB9P50MTUZZHB2YiOnsDA6oBJKeaPerM+Y+xeertx5M5jPhK+RALxPtxIge4w+50ZDaRH/Fc +CSnLn1hmIijOSc4OJ0QlMBY+ncqVQrpXxhHHxB3bWJ+wTp7daSze/PDaTD9xqiNCcgRP9QhJWB+3 +tuwsWF/kHRU3wXEqEIDuBmqYRn4MOTQFhGr1CIZmtGWns/whFBu919OhD29bPAe14rIlgP1QyLuc +w4jUlEQW5HNWZ043X8YOoGESkVym0l1I9Ra15LUrdEMTIDR5L+Yt+F/OOedYI2y1ZYzIBT68jkSh +79KZuXGBUY0mRD4XCGWCrmoLKRw3Xmw5EdKcp7+1Z36P41VmuW5t0s1ZxwRAPDtYANu8c/PqJR5d +oc90fTKzgNe+HzNBR2VGaUtbbmIpBkFvNzNKC+ZbnSKjwgGC5++mj0hNnzpQwfdzQ/+snX43jw7C +do/pevNzGf5duuJIo3ELAcDCPd+UsXhmYd3OiXgBt/J0+0fdPuDTBKwlPGWNY8NT3vq0a3Mrjegp +4GTrMTQF3SMbZ8/DfUesdJgAjT0yBjL4afmZbvTLWfppJN1PxYtZN2jSbwEtUHnM4B+nXrpxavq5 +p6gx0GPgh1VqP4o+UrPFl09PN56sZteh+mRqxYc/72nfo8GUhzydxQvZSgp+SmDlAv6EkcNoEnda +s0n2twT3hs7MtUS/wq8ZqAqz6EX0NdioeN/g0yfqbQZBFv6WoYCl4y4iFHDl6t7exzYPm8RRY/g1 +pzOz3cvARq8cHAoLxCcEkWI7n2DfiKEmsDc11CV2uGnUEZ0ZDZMaMOxUqFZ8acLfYggYhwWBEJOI +6bIYKfrKwmvQWNi30Tsx+BwNI8mREjVH3aOouJ7G3lgSNBA9WSxx0dSB2RdOlMTUXjERommgsVDv +QGJxsNEwEJ2E5HhCo+K+ImAs5oJEH1KSY0moTwnVZfSJhUghFX6l2AJofjnGkGUL2LjCjopjFUli +oQeAk8+J9USNFUkOQ44nbsywcVWKqCJJZQn4RFFMNExEk6gQRFLYmyyLmeJpEVLUmJM6wMncbAlm +NcFxLWoOKZGWEJUY28MaqzwoJkUPaNlHYC8ntTK/IJIjKiLINI9JKUA0NFY0L2NDakpYGaK0Jepj +PRjGbVX0iSI/HAbqPPzzITT97Olm63lNpCxkE1j6Ey9/wYik12CtnFaI/ks3ShjsbrCKwXGFmdXe +ZQKWS26Rahvfp9n5Ty+VHy12j9RSxjMnAseavDvDNzscbeTOAF9M6NCgjuamLluSMv1qJdsXt8YJ +vC3MmGpZrJHs7FT/yD0/7zL8AWV6ZLq+zlVTjZ/9EFiwy9QKF2JxIN8h+oote3FXn9iIn3oebJ/A +CW1t8yNn05MJOr0unt+IZ4bTHGnPFznbClpK5VOEIwxthX2FqzzXjW9EANcU+raRJbGZUObZGYCO +H7zm2nhe6l9p2C9gKQFrPfBxi3OiwTWBltKNzokG14S2+lgOdcGhUS6zwPf9WXAeSnjp3hfpOXg3 +L2j7qFPOIDOWoxMH6v+WZ4EcacafKn7lnjNBC0BgG2beUp/2zJv5+4jMYagqQhJ04vsiiO0TwWd3 +rvQbGnBkA54FJBxN/vS6GGotK8109f0ZsDuQToo5uY7IORUUPRPBoJ0VgEJmGZx+IutfZ+bs//OO +ktVcYWEmgXi9xWFQYwQ+OY+F7cMwEnHE/K9CsBUZJyVuoTRMId1Yphzg7ekOH9WTVW/q3RChPdWm +nQTEWvhVnH7vx8KYnX0ZoqDDvR4z+99uMFw3kP3M4sUBHJHaxM8KSBQ6Bj+ZhffJwD1gmR2LjldL +DE5TWeAjBzNEPP/lZqGEiJ9vu5HIr09AKr3myCpMcZbT5PkMh0aVcuatlgKrRXf1Snf01DWn314b +LehrMw/avz6axptHLLQ4DWtYZeteFg5Vci/CTEulCPe9MevMLEsSqf1+9u6PvrSTCEEMS8b60LvL +YpNItsSDXd1mihn/KYPhzveDQTAHnz/pSOzZxT5o+nfueRr5Ynlnav9QLhJ2m9MP1FUb+DfO8Rqs +TnWC6NkMMzhSXyo+/Fmn2m+Ox+jM0ZiDxS/yi/icp53PAhhFV668t/cpHjvnGEM+QbVk5VcATJv0 +eoPpR7QCwjiMmvz6uKCjsvTyOgKlF7iCm0l2fpgHYVTB9VnHyvldVgRRg5fPA/tmACs3I70+YL48 +L1GTKB42AJufsHVrx/RzFx9T0/j0/DrOjVcRJ8N81gfgpyexXLZopBYj18aQcFOBACp61n4KRMn+ +I0nTqVjzZJbuOg6ANtbI7NCZKYyv7+HvfO/H/Ak6PzWkdpkfK7tizVi+A1o3aDIDSkRKcM2Z5oee +j7nQhkEa+xP57vR6XZkCSynUftk2hGs31TIU9+XJ/E912AO2SQwqnIktP3JgX2m/NfIG1F87TNkC +NHqfMRVPvj/mSqv5ZybQ6rjTb/baNF1vOoBnUTAXvkOZBT7e800VakF58uRKnxU7NDbqqAnQzvGG +VOfDzUdTg+gZH7u5CaBXZhk2OXNlq82KjBtW9pElMTUvAE9EHmITU2MmgdQPFtH6Ie+wByf85Q3O +1baX+Um1TMcji7kCpnhqCB4rRB1wcqDpdgkeWQxY6bMQp0Gw6yuK0L78TibRueXtBZh0zjSR6xbt +UkMTtAs4dObY9+bzS6lRyx56HcWqoiYx8se2QHG06Os0Ns87Nx840IwBPN0IEN+F1dFuge1+GQ1z +xkXGA1hLXmaUIZMMdgrZ12wrKeINevdib/gEZvOuDiY5teNZhzQozA3I297qzGgDRGIO3EA+n4PB +J2JXjOeWlQBnBNOT+GM05CaN/iY7fzAFAGP7q+l1orSR4iE4L5DpqpvRNvIy8eDpajT/nIpltnzL +m+5Z3JrauyInqJNT6dD3+DU3ifQ9+Q/y+CiiZ+R3b2mCdf+nm97MqnZAMSGzsOYS+vrFdR50Klni +cUniKeiTYpDIIp1vpkOROjIbe7nJ2wGsyJSqoHtbNBLZ9PeUyKam9aLpCS+lI55FWrpJ2v6bajVL +AyKeO/J6AzSx8SEVbZPTVHi776G45DkW4NDZ0VwBLqrNtI6UMvOEUOKF5cvKkQgVimB92X3EuuxE ++YCizB9gmP4NcMfvY6o1aZ54sBPB8innro9dqejr74JnnIM/zeADsc7SWy+suO7S0A== + + e82swOonIL9l6ZmRP32G1KSfT45i9ZQr/hwOOeeQyMdtJvM74MXuLrOqJgLn/PL2AJavxQe0lGK4 +Feg5vxmYak1PbtLcA2cPm6x4Elg6fPcLZsLwnNobf465yWbvlmDYCFg1pza4t9MhspOkjxMf2n+B +xkEIBmIpE4swdX7nmDewmOUKCTMJTIxIkIrBjlofBxZsjLCWxm3oXH5BHdHJkfEf6CqcHJwDyOzy ++OxWWziwj7WBVVT4TVfxjA+42clFKp7YGvmyyJhB4NPYw6MidnB+BBPv/nw64Hp+g4oCP8eCGqGO +/hDepuSa9EBU1vlRYA0wu9w2CWJZ0qHGCwHmoFtLb9ITqzQWQPnnsBwIK7CesGn0xeEDK2nz0aBJ +UgVsT82LHOOzwXfsCIS4uU5j3iTxBpiqj+VH3X0glypud0xj5wYadEGKkQrd1BJtHNLWheOp/FHm +UQesOt+ZZShlQq4EvZEZhJsLIfsJ6ot61DWJ79mR8kMQL0Ubllkut32RA8/xGG/ZHuaHWNzCt+Bp +iEHqQXo5IOGuhBFu1mDp+qZyzDmruzFjKS1ObK/56wvC8pgfPQS/gSdj2BP5cL0oNjZ2xXoFOcqx +yerxEbjtv0HOFpKwAF6Axs670WQDLAo2Raydd1QtDkDAH5dSu8QLEMNnE8BMuKUw68ws7nYqviRs +fBtcDKwhL3dQhHfZ13ykjxYUR+LwEeGUI9CWcEhP1jdbF3oor565MRqnDVqmEdFbeoJARwaXqVBn +mk+HC4cj3Pp2Edayq5XF31eHGBl9XIEx1218zIndClmRUCcnR6RQW57S4eF2ylsSkML9eBsUga23 +wWKTE7kXq96NPefhvcFuDCOm0ZmDOzzSAPZ2gyBSU8DkjVNzrM6/QeT0IjpAP+AFsE/bC+yR+Eu6 +4UyBeZna13wsiDnzo9NDLx12uR+gQRgUsRdYjtZkxr8Yj4Ot9+9WOJTMFrOzz/ED9LAeUvE330/u ++Tn+wG4Wi18D9hgxeMynYt/vwOwMvTkwr3M3Alr+YwHW3Mk2XV8G2gIlPOikDrbOQ+657ANsb8xs +pRQqs2tf+wg1e6e1zgxaZp9y00DwIe48fc2DiZ09D7wg+46IEyOaG1n9xKomRifReuxAOxW1R8dT +KvSQQ7kDoCPf2VBjvIkDa3xr+nFxwc3oeDxqRr0Dey2zdOHNQuejswbzcsxw0TyqyevP8ET0v08z +mG1hQb6Ra+1s+tFE8Ccbg/cSUrMx8bjaYOLfren1cHpgdZsA4o93hdZAXo6FAGwLGK8/J0DArhmo +tbcT95TisXa6+R5qcrSLLFK/FTDyVVsQsoRU7rfBErXFDmks/rrlxUQRsTKWeDNnn3tGcWf3OZMO +O0sQ3uMcjAXJKmsQyVGemRzawssDYyozSlefi3C7dNqFdPAKuvT2ABYH8jM2aG9+gffqyf+aiXxk +M8//dGbvQOG4uhLN+8H36ucvrWEqxJcsbMJ2jG3yo6AtkHmx2eahdenNAT1xcTT6Daz7L4QFsLPp +I+/qhqcZf9vn4s3+/Mc5TTdzB3tw9zxIPgHf2AqcqzguxMdCsT8BeRlGF0+573nXyGM0Fg5y68Ga +s5ID4XvLzlJjV660zLZFSz7mffsyEtbnTBjMS+3DueGNXxAHD7KaYQ79z0B+2MwHOM0owPwBDYfi +GAWsmQjJRwTFVKCP7MPGwphLND/o/zrT66ShRvSt314oDF+5smGCcd1jYPd+YqVqsR6Mdt6HYCwk +QZuIgNVobVHGpmD2gZlnAwi++LH6YNT4rSm1KBDpOfIvjgiQOocTyFDzkB8ligDU++PWFHnPf5oi +0zbwkUHPijAu7/5JN2ejI+zjfyfYEkgvPHNIX0VVKQd9Dp0zjgoUQsJKOX4rLoXbyhXzUOlzsIZ/ +QzUT1zDyIUjULrLlZfBwyLMy3EarALPNqbzzIz8lnH67VUBdQWeobgcj0dke4HF+PdqMJSrfWoXa +dHLeejUkx1Ra7TmmJrnacidC8UHBg3ifyf1asvPwkNfzfFb6IZfkzcfUGWzPkcDqQ+rGb2EaOXiU +a+bOoIOJGc3Py9XBE3S7bfP8mgGZEr70cik8Vjt2XsHH3SQsvLIWZnNSV9nC3jPPdCjLk/+LZJ6l +IxHohxzJ1tCDeRwvLkdydvTBT15//C3qYx+8sZ/Qg5gv2TxmgNVYWBSN9acBdPcS7FOv46kenBls +vuKTweWx1HVmgyOxiBtsrx8Rg3M2B4/6E7fBcYo2DM6XTs7gwl68mOepa0XoA4as7c1/8B6AsRLI +LfzJaj/hy4R9YaCaVh8o1ol0CPcUK/bIrM683yeehmnn9rWceo4cEuFivO0mNh/+Vn7/9YHlPohu +k3hKP41wYFWuaSw+02VDgx4FGtx+7zc4Wz8lgyvsChscI3cDjioMf8sbnL1xwGCbL5YG2zEzh0Oz +8Yfmd9Yxj79RZzFTA6fH0jcvdWbYckvPxlPXT5E1szm8Up/oFysH0I0cQNBZhMRNYDf3X4NPv9tX +CZ8ciYLhkSOq23MIF3Rm76nbH4IfCkts/NjN8cHGDp39ty33Ajsq6B4gNXjX8eF/8Ebt4DUckbLK +Q/r9DgxqFqnOLEIbePMt9nJI+/vv3fFdBml2GKwPXF4ppGD2D+E2LjfWoj9iTi+kkcYfHg8W02Yr +hXR/6rtN1qGp/oWQUvPCQ4sRWDIugzRoNIVjk4g0Un/3CyOamTcppDrz4YHYRs3V+UtdaqxYwbip +yCK1lCv+Fznyvu+/Rt4yRAo9vTMCP7R95sDRAl70b85mNWpK0EhrFotoTv3NUGGJkALhGuY5pFAq +Y4fv/XdriHjedo402gu8j6ceSaQ/ruarLNKQZ9KwIKQ6swgtmFUgooeo4yCNtBb68XdmFacU0oMl +0cWlkOrMAG1gZrNkyILUWOGsdjEigr1KIn0gpiFTfeWtSiHFiO9vAiGFOlk81qDRvFi/ZOWQDrCC +s9+SRlrA0hbSGuqKkNJ6bH80OpP0WLsuq0hokq/+py8Kaf5rQQiQfsSxSsiFQ6T2M6RFcoMkVWcG +aENb8Vgrnx8DGaRBY2gxJn7kkOawF/t3RIQUYKHQlnbR1O/+tS6JtBGz+GSRPpMNHyaD9NOFNXq2 +B4BFcqzPRfL188NmlUTasqynskgbszda+3JIIRYabQFrPW/j0kgrPvM7kYo/SSPdlh9kkbZ6hYcj +Wvclx1rF2snnnDTSl0S+9/P2/S2J9Lu6KImQIiw02t9uYEzIIP0KY9+HpUsa6evvdlWNhH2SSHsl +F9DJsmPdmxsOgwzS7juWn6/KkkjDr64HQ+rblQdIozuEFKxinFY69UI9GunQZxMJje2jMrAjpF5L +wloUjrSC9e3RNETqPFtper87nfkRL/eaAO3TXqwKD5vHJxrpMekQjdQAFnobhTTTxUtCRejcH94T +BojUjZCi6hpOK5VczFizRxFSR6z4EKSQJvFnlwBpYObc+l/7CKnPFM0+C5GaoOYfDNcQLSYe6z5N +bhj+LRvE+jfwG83QSKNvbhF5HzZkv0ktb+SgFxRZF4Hi++PPJso9Fz3tvuGrltzTGbS9TlJPac0P +VG/uUeZtMAePjqyZfvpLhkRPg2G8x/T7sAiLn65nDx2dWfZ5qFaKfsk+DXvt9b7809ngx8I9FVEs +aEx7Hz9Gsm9XHOukV/7psDqJST1FFAsaqw+jYVHm7XDxsRh/P1BPJ5ZdRAT73TGP/dJP8Yeo+Omw +3FgzFJN43so5GCtT4mnbPPQY5J9+5aJP3NMzivXNPyGT7Nu/x9q2KPt00fJm3qSe0hRbLYjEj9zb +YLhvsYDs07LXn+jIPh2th42KPMUeDY+lL7vs03z6ZUjKPi17kw+4PMXSBq/JFpV5O1DE8k92ZsxR +a0z01NF8OyTpp1l3XCyVxWa/YE9LPUcyazclGXNY6mnyI1XlPwWuGc8zzLrsWWjDWD6znHPGd82I +XkDBNfMeTdDzzRpc5UgXeL6/TfjHDX8jDM5cPQv/tIGqi5igNU47g5SGofEN6hlGb+4fvJanmote +DXAzf4VIGH1QxMsrytkBrhlPmjwv4bUFuJGdE9TJwN0BGCdxFp/RM38a2oBue8hDd8clUNZ8pI64 +d/omgzRoNL5vl5/8dZ9DC5fbD1mkYAn6xWWRYsTktSGFlJYXuGCOpMYKkY75SP0NEw9p+DXT4CEd +Pz4aOaQH44ys89Z9n4jAiZ1p9ckgLSwFSG1dWaSAvE9eKaS0NY58B3asPhGBoe/wI4O0+y0/0gfi +4Bes+8KxIt9BFin0HWbSSOMGtxRS5IshtBWLLIGRRSKLFNojTcGckhEGPfpEzz4wtrIf45VyS6rd +z2m1Vm0XNO5+8p0qX8PItAzMaL6j9UUGjPkr7eBFpDjB7VtXwmgPUP/EaY+UCyBLI0XrZO5FuE/p +5P4kttZxk3b1UbwKEDWxtcW3vPgRBJCIFE2/qA+JSOEzB9TWIA8x+xiPj9eBRN5M/3G+bGgEyIBm +EHC9AUN72lJNBJEypPQynhmZM7N/6kLPgg55VdnmOYilwB9uv5xkuvxeA18foTN3sjPUoWx+UaDu +DfnIjzwSiiiPlQNmM/oDWbKt1qVFpCTVJZ2Z7lTvZAGs++L0WpJYiYvYiAKViOje71PmmSO6NMnh +H7rr/g0VUxKPEMYADBrGh/6ozl8DeK/qM2hkx2eXHR80fN9l5w964tpmEM7fRsShqsSiQUHr4hwY +bs/8EmrAtDB7zMWu+zdzVuFrp0x3nXbKA9Po40rJEco+IJY38xEpX0ksoeqxcaqHXvdBf37ywqn1 +XTsb+a/Snk9AAI/xxAWs+4iUjwztfvIseWV648w7qT807ZhI7znXdl1CqeSrbWmpRLE8yaF1RVLJ +zsYlQ/MlW80XZULDeSk8P8J+12W6knNoGRVZcz/Ss3/G7HmEpbW5eUDQFezw+sAKoVDD9G2PoHud +nMw0Obf4wGQpqnGgDFkgFpowmCxhPLON44nhHZaTUUBImsa4CBQbh9EGTCh39vMlf0BISR2KKF4q +d4OHzklxJo248x13wj+f9Fjo3YYzxgCa0Zp/lp1QZjrhHzCdXBD7nDcGBMAi0oJ8YNU3tlO8noGx +HAuS/UoUhgepQaK85EMKI4/vnjMrTGFKHOdTMi7IrnE6s6zykebpRfggaxDIWozsWimYX2DNfB4V +Fybx/MrNbgFSpCi0YEULk2braVwQ6mnxsqSjWJdbeBU6dUyWZbpUrdO9kekSP3ZBdUrepGOnTtP8 +RUwim//MsFC2+QXzt1Y26Kj5g6cDaJjBQm11CzPwVmQIrLG+F2cJlhNKj90ArKvsxFxGMRW77jKK +9fZ3oxhfo11Bsa0gESG0P3NcjwmxEuKvYpdYx8VLXMG6jB7LdGYGrY6NtFQekw93k8pMZ2fS4ChT +Nn/dwdvNlaBOEn+uaKWOVG90Zm+m+/B4I3USB3ZZltXJnE0hbRoW1ZWCSkcgFtAV7Q== + + Lp58RxS0gM6slSZC2/KyjlDWRVFd7EWeoUNm1ZwWYej6U8QqnC8m5RtSm5pckLvOQfR+H4ZuXjgb +fCpBjs8rRkjECKhUgzPaAUtQS1CDpzygeNCZKsK5LCHD4wJ/WL5LRjV/X7MC+D6aVeIsPB5TVgCl +SxSAeHwCfx+M0HI50aVJLrAUJNcXEdfK2fK/Jbgh2NYwPp1ZdQZzRzz/fShoj2ec++S0xwe4f+a7 +G7HOBFwydqGJWBIiLssMiJMFxBKKuM8UWXiEIl4Wi7ikkyaILslESADXPtwaSyhzIVluz0LYH81O +xaostN9lIySCoKzc0Cy3DI3S/GWY1fCi6g8rhTeSePkkXJZ9wrVSNcCBugz4YOe9ckA8Ti6frapX +xH1WZbgx3BWRRWIVUyWMWqxPpAqAPy9tW0LqBDVQh6cKBJEGoSmdOlH5Y3xjGvCBlmCiuin9zJnS +cvKigXbRN7Nyb7hlkIlbyi2EvuR7yKLOESrLICUvz+KF8Kqh2WSHpjNr1ErPZ47yBXzOcfL2Wbzy +XTUgg3DJk431KSqA5Ls5cLkCEGRB04TpicP0V9mygDbsQqfIydpsWbhZZeFnb8BRgd9sIo/vWrnL +gt64tUS8GY9PetSdhngL8rrVDlnjANi94q0Q1LnoXaqTodBo2KQQcaowO52ZN9lFTyvHIyicG8lk +d1wJR0ICpaBQFqwCnBt2KjgowN+/eOWTBSbcH5S1LjTtVMByAqdVaG9mUYqrrOTQu6Ia415ZlLp6 ++XIj6VdCYF73hXt8sqT8Je0wDiNDTJltbkWNdljYzjTaYeHQqazdWjUaIExqpzIv6tZc5/0WjSaK +wANgd9No75xGu95SgnFprRpNUfbBvN1Bo6HZF4bGroWjrNF02uHcvveK4CjsBzkzVnYfxyMpOcIJ +E3nQaB+ZtynE2zqUtlLoRC8mCxF4PGexcfibcAP26pwruAmuSQlBywxa49ImaxbIeVVZM2pWsoDH +8l8tw81WPdOv7oP83qtGp7HTutKXFs4LnDdRWtM1SgFCERj2/IjiZXAUUyBEUOQyVRCcc5f6mt5E +rR+KO7yKJrkYmFIgSyp/TGk1BONziFdD8JtLWXJ02lfDwUNdMkXgIo+v076PfU+BEq6FsjymZTVs +a3WtdWYlFvnaXW7fn+k7MGs68+2rIYSjvBZqW8UQHI32vdIqhuDcbN9DKFJrIevvX7Yafu2UxPBs +LaQiV4qrYe98pxj+dkkSIJwX2dUwatWYh8WlYUiPHmWp9fYKU8InpYwtwJehjpRsC31k7dLducjS +peZFVro7mqRbVW3TFNMk4urOJZhJt5SUy2Wpydg1gJ4tjzaOUI/0ok5p5Ahp4RIuSzBLLet2nS1M +Wbd8ly9y0ryZDryLS25h0pK5JuyX/C4A9PguEC+UgXK/bFsITH33RsveDQSlM/tMsefKHZg46w5p +iifL7Q0I57KnxdKnQMn6yF3F5FsBR2jqkle0J35h4isluNx6lgi8rCU9C1b2Ub3cYWpwrd961CEq +rrTvB1bO5bXW0LHTKVlBh04JuEMNnXIFnc58nxq6M6SCCjpKW95eQ6dcQQerBe9RQ0fJmlwFHe1Z +3FxDp1xBR1cL3lxDJ4mUraCTqha8poZOuYKOObvj1ho65Qo6rvbttho65Qo6qMfuUUMnVlHCfGjp +/crLa+jOlzJ+OjKKkMhVAtUshJoHzffZ5OuAIBblZBdBpxS6pJQ/paNNQ00VU8RBMelJPsQk3knM +ie1fVTrJWb+fOW6tZ3IVrqSTKMR0nt5OUUmnXoYXswsYViLP7GloVS4FQ3t8sAzvl2zdh5+k8rDE +/otGPoi5Lhofb//lvNhNGLmSI7p6lzyinZFriE53SS1ypdQp2aI5BoR6yRziMXWGzYvzqi+O+iFP +3HnUmgyinAoiGzQWR3o1hI3zl6eCSNSKdl3Gm4vdJDIhryt2uyQVRLYm0bm9JVTF1qd5FGz+Cwgj +nwrCc0N0GnyjvGyFlkafZivMIujj53s2Q+9Ojc+16eQBcbnbKz2dQ59kAiUTUbyoyHTw8CKuOlQO +nKHZl/PtAbEU9rI1BM6YsCGzIicW4a0oTALefr9TOQx1kp6c2aVWByaqApM1uq6o4zuprUgX1PEN +letfjIKglXxp2oNCDryG4ygEXZoZ5bqU4tVYaSpoUsmBvyCLYFwQRjAlzEHN87fnIpiytuUFwNR8 +jDw6p1cbMLUSGaV+CXdFITA1R0P7ILnw6h0oplwmeiHF1I5CUKGYqHom0+m6hKlORdnqGa22LFOb +AKO+GoVdco1XrpZjT6JQAbF4UOlD3/uDwz99Kdnm5Y0X7+bsTYvCwK7UWTessycLQk09nAEQaZhp +UflwFP5MX1AoJ64ZUZ+hHqbV45GTfVjipjXIIEdPKRdOzq+UJ4daaazUnoyEzQ8GpCrngmiAQip/ +FJ0pXBfVWOWOl7iZ8pU+IrorcbJK+ZFyeZxA67BnDkvVtB2Osuv5RfZYCY7lThL/WxJJvJQ9po1O +GsM7IkP7LD8ZVo557sMCnFPI1lZr65REl7wausTLHFaqQLsoIqNYYee/E51U616VOiWMyLjPIzKr +smxERobHZCIy5SsjMkINgz+b7hOR8Zmi7kctsQsNEZnyPTKIAAjrHUoGC7XVzecpgTlXj8jotJSh +3RyRgbvVkZ3/HoRRKM45q3lXSnaBRXpCkdOYUsKsyKI61GTziAmN5We1OlQlY5l/EoUv+e4w3sgM +22epkI4wU0Wj1wIWGU2lo2xIR2FFBkOLWm8eGjJ3ebJ/BYfC8jH56BI3IJ16Xd3N54Ztn2HWzQVp +s3LTZFDO1tOUPQgJc0vpKN9LelYMgqoW14kT9Wq8fVSWk+Gv6psPV9bDXX5e3zX1cLJ7SXeth4NY +bi1GVa+H01hncWM9HFtnIaiIu7p6RKYe7sKK1Cvr4aSrBe9dD6euLe9RD8dafdeXamioh9N8DslN +9XAS8/JL2u9dDyc8oZ2pHbp5W4euY7u9sh4ub1o3h7jdarmQJQR2a04kp/lbG005kWoVXz4pap/v +WCmZAdnzBImrqtERHOetZnNWlM6gUCeuDuculVwwl0HWb77oLFJoj8HiOvmA2KUZz9DysouEkLLH +VCZCoxi2ZD1o4QlUqrVMV+7RSkQUIbB7pSZ3t0gIb7PGIbW1eIsq1nj2LqcBU9WCOZVCLC3iA6DI +i4/mszuyXH7D5b3hWbBZ5SOBL8r8Fh0JLH324AVHzNic5zEsWHomcKgl6sW05VLB+J9mAirpsYuP +FlaqSB089CTLSK+oSB08DCUDBpdVpLbvU5H6tbtHRSqEco+KVFgvdo+KVAjn9opUCEVckSp3DLR6 +/Vb7zL8WJCxAbamaZiQUQ5eEGHaU41ras21vKYWTWsXuXwonOy93LYXjzoHX4rhfWwonTbF7l8Jp +9CtvLIXTae7ULaVwZxkRV5bCKRuGvNrqrtLmymUnwmdFCRLinZHL6+ok3SLRjo3OrGHPBgLTdFKX +XE6g4JRmAOym8CSfYoIjhuX3ktQ3F1AJm5bz1Yz0fqXM8jA8KG3haF8cqNO0umdnfV+ag8qPAM2o +O+Oc0jkk9BygCzIT1Vlh2Rr0csbxKU9ETKkfopmo5VOeoyVLNJOhLrrOPPeR36fSxWCznM24R9ls +xvMMLyFobJnFyLwUx2DpmJOwGkuh7ixu+JS/uS38Fq0JI4rCYrfYqPrCDz/zkAZmdnPcsJErduso +VNgdHoixhy8gomK3Zka+wg5eqj2QQ9pXrLAruCI8pOL7zKKOA4tUXOwGr5pmbzXkF4BR9/FZlYrd +cLcsUkc8tpKrsAsajbvg6Uu2wq77qVR3tlKqsNs0m1JImfv4KuRsLFdhRyrVEr515JHmXz8LPF9M +TGDT2hfrySF9O2MlIK40evSJ5vOoxOxLt4xpguj/qii3g1joesca1ZJeOitBCVOUEVzitBQvp0pn +qaV42bYaj/13rM/S5GuPG+WcDZ3mOhpNh7jzoiZK91jtlDuluUvC49xVc64uvklOyvql1sp73iQn +tSBS+8gqh65rpZNsiuRl+TA5DTeOCAxMxXvfrrxETgoUYk2BDXMtH6heNgJtmPMRSnZK5a4BpS7x +1v3cpcmUCl0SRY5vkJcCqXINEZfsyq+AuE81nVQPxbsJt1fTSdXSnd2ZcnM1nVTAi7mL837VdFK1 +dJpOnryomk5+v/Ke1XRy2vK+1XQ3Ra01V9NJOR8SnHxjNZ3ASKBr6YSyf49qOqlaOikNc1s1nZTf +rLt7NZ1ULR2793q3ajraMBTU0jHZtverppOqpePiMPeqppOaXRS1vms1nfSu6L2r6aS6pOP15z7V +dFLzJ3my8U3VdFK1dMqW0jXVdFKgdBcCU6+m07jDe2M1nRgU5Ph7UUzZJryQYhqq6bRT7JZqOqla +Omr37Z7VdFK1dNI35d1STScF4Lxm5NZqOh5Z2N0SuZqR66vppGxnnfhAspur6aRq6VTuFb2imk5q +hhTO6L6ymo4/XKaWTptfKUsOjeU38jvv11bTSQ1IfKb9RdV0wi4pOIAKFalCB1Bix/W3pPXoJhUv +qaR2TaW2WixAse/DTk3Y+eRXu69O2rq49311mu9NUL2vTmvN2tFhEebBXkun3FHZsDg/UUfhKjdh +gcKlXWJsfi1X1Wkt7zy/gla+UliFTqoWgOiUM4VOyadSXNYlKC/K8U8plSn0iJJ4+SAKlftMka1o +3T/PP9ISBrvkmjt5nVy+28Hgq7KYYlfnIypec6c5dnHTNXesvChddKe5TEnumrvL8pOvveZOdEqA +9EV3l4XdJK65U79pQiZN4aJr7pi1UvGiO/Hmkfo1d1rPhds+3xyZ8yXfcbNwfbk6AfFZQ2WRTqPR +vX2+JQ+f5mQwuCfbzYV0spmHF+Rao0K664qKRFWc5psrYJ+lUjgur0qDd9NFrR9qgitIIpO7IxVQ +R1MRjLZ6IsRjRou4oggemqqcaKtpv6dQW4n9lysLxFSywS/IhgLANOUia8qGAsC0ZHQr55cjzXeX +ysdL75hkeUwM5+aaWgSFXvLktaVGOPJJVBfdk3iPiyaZexLvWljbECdNoHsTGut7nQoIQUnYdxL1 +lVoqTkBvtSgz4U0Tspl7TY2k5DuSEiYEF7my2c89eliLd/3ZAOLqpztUpojPPZY4V0FzKQMAVlGu +irjgBkPwqKZhk1jtBj/Wfr+t8lFrIYPyHUMQzq235kIo9zglgLpOTsmI57LT1eEIxfCSS+nO70lU +LGW4uJDBQc++UAxb9xFD0Q1319dXXnLDHY1FXgzvcsMdtWchf8fdJWIof8PdhZWPV9YTSdyUd7sY +nt1wd8NNeRf40oo35cmL4YU33FG3/8ifFK4CTFw9IXPDnVrWjcbC2rZyepNWPfa1u8XMOat9u1th +7ddOfAvAlbevab4lXbny8eUOdekAivv2nCsER8WH0mmFc5P7xGjLs+Saq+vbqevylA== + + chQvr2+PWp1nYhi1iiuTJfL6NIlh56IiJskonLAi7EfWmNRcxMTeYBi1yl8PdtF2EwQljuacUUzr +0eYQmBaplI9bCim21nB0nCa/sqO1jEmpiKm3l11nEZbLalw7lxcxodpqedNQ4rhEVCp1oWEodx9f +1n17nh1DSnjv2/1qXLuyOzasPaa9xrV7+dFU8udcde9z3SNzU96dalyzbo/sBo7OfAZMrsb1LA1D +liPOunR+BhHs1B2ue6QjQHAaKiE4FikiMKYfrHgrPjVzCzyb8ZTbOSNZbuSSjkbzadN3BMGnQo2q +7et8EWOvJfGQoxYeFNjlU4z5LCjDe03W+UgF9XAHY6tb44eqhPewRbOfXVE9HK8uSb4Mb3/qR3FZ +pBiB2eUq/4JGU6hu++Z7r8KCrS/5gsMHYuuTR1owfryLkCLNz9zDVhq6p3L3sNkUStNqAfl6uIMl +9Ljn5Vr7RFWONmvycylTmmZTvHFuIK78QxmqLIGf4zUZpEGj2f+a68vVw/UUkBZMQYG8iC+6ezN+ +yCANFwWllWKkdRFSKu+C5d/nljzSfP6dEM6qCT51sp/oEsyT/ckjakdR7LylL4tpgIj17dG0hnaA +YtHNMc8tk2DUXb84a4HdrpFYOrMK7hPvZDCNiZOAqAGbcDcopzVtUsMtZk/KpU1nERKJ6h/K5s9d +mFol36WsZF4b7+QWraVNh8tzyaVtmLOArrbUKskqKbiua8yEVKFTQyUBTXtVmobUKq1VaSo5mlr4 +iQHF3/JSyelVq7rTmKXFeBYKnTrL07q8S6iK83FzUZ6WUpeko8RXyMtGIUuL7o3ETRMidZX/StiF +6ip/c4yZ9l4B7JKGDUOVujJZ7Xzx3U9dl0oqjJT7K6Nh7hBe/slzdv7V8bGLDoyTj4/l77Fl/ZNH +kWXFM4g0VWxuNRxCq9NAmGu9FilOzml0irUkjYg3WOk77O5yDDRxRx95QFweDJaL88OCOwU766JA +wIA4j/NfevKQMKbi352durAI79VvL9VcSNZROuVM/YwIQSmgmt0mObtSmSrjgmp9u9ZKpoiBqxbU +cs6BfHWb0smoGqxxQafkk/U1FALyo6OAogvTnUo5hXuKaJfn6lJA9UuvKFC8W2aUgCnfa6zaL64i +FQI7v9n42kGe7VfeBEytlucSiqnsXF5GMZWdy4sGWfF/yVLsrFxY1pm96EY93vpyRRWg1hpAgVRe +XAV43gfpGkCBNX5xFaDCzrO2eLKmKkCtNYCqN7DLgbjoRj3JbCjNVYBaawClz+nVWgWolZ5Sa6X2 +KkCtNYAafGSFKkCtNYAqu2/KVYApqjfnoxJfykflKAoKD/6BS/lUOVmlakvbpXxqJ1Hc51I+SsOU +/uFL+UT3Jf1Dl/LJ3I9850v5LonCXX8pn/gstX/mUj7BKvaPXconaSlppVNQwXZGvVE/G+qye/0u +Oxvq2nv9+Crq/Fa/q8+GEt3rp5y8qFL1rPleP8WhWW/PUyrf52woTff6qZ4NdZd7/ZRv9bugvvKG +WgiJmsSr7vWTMti5W/1Et5jdIWlY6la/ayq5Ls9WlK/kuuxeP+Vb/W6+v5K+1++2uKXWe/2Uq+4Q +ljvc66ecr68tQ1X9Xj+t9ZW33esnkIezihlJTr7iXj+ucE9qoVOyxy651095JuWq0u5U7k7f6qch +zq/pXj/l1U5rFrTavX7a7+O7ueZd9la/q+7ju3jJk76P7xYJ5KBwultxx+qCe/3UteU97vVTLk+h +IvC33+unnFTAv8kIu+FevzNSCm71U5wX3k6N2r1+yrf6SVcMXX6vn7I5qFaVdp/yTnqtvFvdg/St +fhfLvsy9fspmgOR9fFfc6ycBxak2+5ff66cMReU+Ps33+inf6qewx3dZ3QOpdKsf0mN3uNdP+VY/ +nfkSMZS/1+/CqrS7VVnzb/XTqsfU7vW7zRrXeq+flvv4br/XT/lWv8vu47tWfMT38V17r58QiviY +P+nKlMvv9ZMKpl10oo6me/2UHWp0rvUd7vVTvtVPxXvVXgyveKsf7+bim+71u+jUpqvv9ROVI4r2 +s66/j++SaJbifXy3F8PTt/rdmnPF3OsnE86mE2roTJWb7/XTcnb67ff6Kce1hHdyXX+vn1T5GOdr +SaxiV93rp+y2U5nDt9/rp+y2i6Xy2nv9pCimMRPygnv9NPqVN97rpyl78OZ7/c4MQ8GtfiyWG+/1 +YydW8lY/3mnzN93rp1wQq1NzdjXe66e8Y8Oj2E33+gn7JQ5OXm3DiO71U95cUDkdSPO9fsq3+lHn +9tx+rx/TJemCWGpP/PKzUjwSi8OH7OJA1fC+aznENFGYnZ2oiH6T38NkEu/P70mUKFwU8RNFEy6G +lXja8nQubbLRqKzCVazv3nCEwTxVMshO8qvAF60c9nvvYWYAy0rZ4Ph8NWGeziJENYH1VAbTS6Lk +xqxrg2f0ufX79rMyASi2/I68vdutrpXNktllsOL0NW3cnTJBw9dg7AOf+ilTOHbKP75Ud/XAbtH9 +DAXc/lH4hei4n917Q6BS8Pcz9cV7ctx4CbZnTfI1sGtZyYmpnbb5c78PzfqzzryILuOdDZm0rne9 +0M68T62Dr4b2a9Ji8lkLQfPks1SynWbGT//mi4yiqUWVnYn3ZqNlcDt+UgbvdNdyxH2WFEZknjMY +MRmVsULwsb7f9yPW/SHcBvJyMP4Eh4fA8LPGlgI2HU8eV9vtq0QemLK3X8/+8LWBl81FjNK7voLq +0thHpRdJj962UE02tuy8wPskT33cbE+nKmUpYiFygOEeH/d7n8mgONKZdWAha8bWRzNhWu89YF4e +vf7pybgcG8awlrTMFIcaTs6t/xXmq72sUU2iIU00m2bMRI7Bb7WN0GDfisQHDK2W5SKrdDyZWit5 +91sCtSZFiUTQnD3lPgiyg67PzH4X6p3ga3b8kPIc4+WU5zCOERHjopZvp3w/gGzrRGHZ6nzpzOli +0DAEcFo7Bix1gaYVdyxCsJix+5OKVQx7NKr0alM5pJ/b7Z4j3+oU4Scw3NrSDYt2nZRTnwh098hz +wjxHK8xF6B0ZH9kTcFuYT7gVxY4BTUJr8DVkR3W/QOGUtuDrkxN9BavY5x58zbqZ1wgPkfe+hAHY +IubIOc0nwloslXCnZdbTmZmOPtv4jyLHAfvAwX9QcYzYBy7+g58QyT7w8B9ss1MeFpz3qJDZwfqC +Vzv/t3frkGn86uQ/mPrH7AM3ut8QL5pSGFwSTHjRRfjQuv+KA120WeDFZN0Hvr7xYQ+nDkjbNyfV +ZGQKRWntBVQhZK8MPnI94bCJB1YtrfBRsgTJ9kYDHb29U1jeYFFr3Ajp7YDVxWhhMnltLj+0/ps8 +wnhtyVQMYonBDe96Zume2tO10aSSey4ZGhxDspsCWV6uAt97ZUQg47UVifjlEKXgUf4LgPhWeWIh +ZgLHmoksfH+Ep+nGyTTPf4xrGBwVzvGv9/v0k8rOBx4c83R/fAx7Nf28geeSIYpVEMXaLkRCb+4t +C9fAtodh/DaAPfyGd7O1cdrqDbTRarCBn3zsJz8FIB9bBcHXDxpeb0TAef7wsDVWgQ+M/cTjNpgW +O2cY6MPHf5BbmPKjxS6CeRa/AWYsH/TlmpjNFMa8y4Y574zYfiAnYy0TP1jTt9J7qtSAuD906I+O +1iUC324Oqe/RVoVE/QZ/um0r/ISzn6B1wWv5MvXDX/0S/Xkj+q1uNucI2wgi/9IK02vqcRXAyGE0 +CPnT7TPF432iZ/v8EC3fgjtTqAWcXvIzwK5z5GkDhdG1vGVinwxZoo8brz/fzuxaQFvac45IwB9n +9OY2CR68lHOnQa0KsEQCT0kiYqqPs99lYzGxM60q4qML6Akrr2idBfpLCfbgoWxDYsY0ae0gY7sh +jSGxvg7wKZx9hjm/wA+hPdKWqMIZlSILtGXDj2BDZ2dHT3wg5UKF5jAdHdhjzhatjslaKE4Zy5P3 +6KfwJAo2tDv5SX2JZx8+gBrWI6FaHZRWZTr8TSvwRNYFe2hFd0AMF5nlw5oQ6lXALKFWMdtfpMfA +Dd1maAksRG1wcl6QoQaoE8Yp2gFdGgazO61SuhSpMKBGA0iDwrEgRWlKeXLl+AYDcKoY7IDNZ4pN +0wzsdy/8DdLOISolz/Ij/mAF5Fl1mNUd49nJEnbdMWiwvX5EDI6ROwX/ZAxOL/FKfbXFX6MGZ+un +ZHB5LHWD4+3hET5tGFxpXwL+GRucL52iwbbfOw1OQx+dRNFZtFhD4JEKHJK1JwdcjOkzBPJfxI41 +IZGqS+UH/fwitd55+qmWpd5NN2O/1lzpM1gGms/6kIonCTdrLuzoyBUyHTwz88YpdD80I83Oicc9 +wNfZpTbFfZfoOYvGdHUar6SbOb9JZ85N3g51JGgHw7clh43N69x+//RhROaENzeqJq/D/JabPG6N +UV82N9SZwdBHPeUBC4a73gOIDb/YC4Q8BLeILdQ5B/RRDy9rKHouZv8F6SzskFtnqrXUN5ELBPqX +Yv6KyGJmzrsQ4uZry1HPnop9zXo5d72/z06e1kMR0ZVJ7kvvDTnxPVb/PI8l3nv2vMgrpbVlAd3f +Xl7Rh2cQPd517r5M2BcOGqOVeiqaJ+eZhdX6li/W5nhql/akc6XVHPjIRG6JZ2hZ9OfmYAGrH6FU +Wtz+Ynp1+UxLURtw8mX0TkbfKMcmcXo0aB24znzR0FUHLs1oKAKvfehXDhzKSyzxyDn4mGewc4n7 +o1WN2i3GuMG521agGq1AN/oZPHABewyqz4bBaUsBXWvPOA2usOvHYJsvgXJdv33BtzHYPAk7ZRIY +CdpYAIq6zny9sGtnPnTLjAh3i0y1np9KRO/YNOT7wepMs7BfrWHuotsEGRHaSa19uJDRajozmNXw +iYqg2KeHs2KoSyZZdszAThaMGiizlimnVdq0yhq0xm9U6xqUOtoTv3AVv3wNZ84cvvOCIjJZrl7F +Lhou1JZXkfqi4erMEgOWYLSM5ZYxAx5THzWSLLFc3cxjPHvtKmuNJ1xb5Dnx7+SSCohlM27MC1y3 +7mvaucVS6dHbK5FLOgLltHMTteQ+iON3uhjsv6YmzW0sv/8eVgPL4Y8J+Xkpz/5oyvRfvQ1gXUSM +gQTn8cVO04Qz4/bvW15L0l4QxcyYA7486KgsNwq8MO5hH3jiQeMh75h/zNLNVnsfIyP7BRi9YaYz +h3bFeiU/GFjc+Y/xwwxRnjcH5s13FloIXuDM4iXBmLViNgFrHFgSuy84B4D82Z8vbebE4ZU+x0wb +Uri+8NC2vTm3O94GGv0bT8XKi/oFSIH1xDMhBNYTlUF0k+GowXo6r679J5YynfncftJOb63UBhbs +DTbj3S2lmxZRnfk+9oOy9UBHFe5tLIswAwv2Yg17mycOQ141nmsGY1g3TjxNd6AtNVFejP7zojFT +uQqXryro4M8yI2ZPdTHJYRgIHY9wlnchCBdOQ9Hv2ksELB7BFPgTz4CFwviKvsbjrg== + + YxysIIUKWHgalZTnmHxOFwPvbrDctBrgK0ZEHze5aM44DmL/yPoirQCA5teqcC9xV0XqVme+SuFe +iFlnllb122w2s7Csv3LukOXALa0aFtb/2fWFv7KdVQxpD4lcMFykYbamfzgYI7G+ALXuWrvCS3FI +RG5R18RjsWdT7itXKDwtgF7x7S6aaa0mFOUjX7a+Xs7idG7PfcJgspiRj3ybYGvgNp35IvG6crgX +6LGbeOwi8bpSuOT0mNZJ1iZcF/LYlcIFNIyEeMGNuS4/p0yYkopo58zVvTCk92pwfFhTBsfSTxic +vXEZfrUYnLPfbxjBe4X7JjGAxRV2VQ22/iQMt1TysKXP4CpHuncM/Qni/HeJtksZNzCz675xinvG ++S9z1s/i/Dd6qlf6yPewot+gnXyJRXmdEwMpdofwqwr6q2KwF3M8Gx+TsKjv58TozEpbDrdjpjhe +Z76TK/EPxmDVvTcmPgaEylq8Jj623u6JZtLfQQ4JEXk4hZCvIuWpAH//al/FYs3ODZ82DYsMkBf6 +M50p6IjPg206u6MzOF7B57iFPGZnoW9SJQbLhSJ3DjqvL7BqfzYfG9cxWhr6yIulnUgvB78aNDr6 +BOA4iIMhSbau30uSGLDW4XYMG0/z2lUsfeVw96d+JXS9Hrt4uHRM6eb5VR4uzIG/x/wqDxf6YveY +X+Xhwhtz7jG/V8X6bmBnqdnVvGN17XDR7F4fT75kuMDjk51fOsa1NvL35fmZ9o+CBcO64vcVZc1z +N3/RR6fQL9oFL/p3XAYV0tNndaFnqZ2v/Gz4/E8A2TU6M/Tp3vg3qdC59C6e6fc4Cj/zOop+Mxyt +B9YprJ0B8NsLyFxC0wSxPG0EI0Arbdz1wq20Xmuk6+PGTyV4mzMm1vIePZ4ByHh4AADFiE4B5zIT +wdDdK8htVjRXnnniHSYq1jaeuTOaQK4Z81trx/zW3Xvm1bWDzYSEpx+9PnNrL6pMgaP22+ClQhED +vWDGVnVolxuYK44iRupBbPn+yp9k4kS7lKf+k9fB3uljT7XtA0ZwcZRxBzp6ft0PcxULmgNfqLqg +s/29J5y3fMdG1RdYLvEAe9MV3n1k41MMsm6eyq/fZ7qfLE/PrENT/QsfPPgLqD8C5sO3LAl++CTw +Tt9YEnxwJABjgf3hE2ER3jJESPl4RDDHDX2GCH4PRwLYm4X4AF8hCRAnC4iQjC7WDBHsZiERXCwR +aKR0iQGaEgUScJUpT0eG+08GjggG/+HzUQsfJKO1I83YGdszS4Lit/vh9x3JPiKC2yXLB7Du18JQ +MYrLsJICAGhd/JLWW0DQZ6ooAQDzogyCOg9CVSIUAOAPDsZLunIY1F2cqgAUpJKuXrxlGBW/m9GW +1w7jPeqRZSoRAGoVOwfxk8K0gpDUTk7LzMrJNndXmnbpxp3Y2naRetCZz0BEjvZbNAzuzJodIgA0 +xbTOBqx/cUr2gQ+A3wcEgL8vBksPXWqzMYi/ciB8n0s8zAfwE3JLMbbOrH0Y0yfPlcJFR0dhXQ+m +SgkF2cBdphJOGXwPhWKGARA02j/3vp2AYoXMzka3JH5xrqXg+jrYrvKgziD8UenM4k4V3q2OW7QO +XvhxixmE4TGtbFqY+lUZ5LwPQopto5IsonkYsCpAipSAx7QOo+girtU6DI8VgxX8JokvJute1RV5 +n/DgLIii/+h+j/NADH/MN2kdgGU4dThUKKHShy0urXXYPqD1RYkSI1PIdRNHjFxPbjZueZ3iGgWz +WrSOxIqMXK4AbkVGIlc7hNCHXYaRP5d09DooiyD7XY4Y6TqoQMrFVl9+eb8P4wNV5WdPf6VFuzxt +K6q94RXq5H+icboIpkqu6TqhzsLl7RXHTpSYTRX9fR9mqG7HjRxTX/L9AVV2WtCpEuhMSKMFHSUF ++uO3UTVI+a/UBnyNOqiKTctTfYd6S339PpBUKSfnsMA1fMrWAfG7CRbWPq++kl/vCNY7tpbymV9L +CZYgtpby2c1/MH2a8KqNuAdAWc84LK82upio8sCWib7yy0SBFmTLRF/5ZaJAMcGyt1cPU871ilGV +lkDUoYH1ymQQQbljYb85qEZADiCHvrlYm99EBWzBb266YjOYhXDeMHis/x4fFavoq5cu4Pz4xOkT +2zBPl3B4XhoLKE9NqjrKawtGWcI03VIFgGrlf4LyMJ2wALDpuRmiEB7GnNdHxTs8xkPc8R7bBxPv +/td06Htspcs7PxoGmn+7n15WIvoce3ltp/GCGXjbya/iLD7BNbzN1It5cx8lqrwMJjEH6E/Ldy/9 +6fT5QwVM8rZBj/7kncKSs3aArtj8SEGIH25409bG21tWqBpeb+9Ux3V0JW3f1pmxxZpefrFmbPzL +PvCzNXRD3lj6bUNWuT6WkX1Bhewj+0dcceszn0psEd63h5LzR+87VUboe4x9BuhPuQFbYvrtoynm +e2yt0uL+VLPNbyK3fBil680vS37oSrVh9V4c3URA10Aet0GqGJVSZkQvIIh/eR7pakFGlF7W9ItV +0k5R0fLUsNNV5sRpiTQVjDRgtKZq5weUcgFeJ5ySohXJEHQA4VliRTuFCp78pTN7c65PB6oyZ4vJ +XahwGpWaw3MqOmz5I3MUbIDwSJ/WEyhh8OSLN/qwJ+4EKsyT8CMtD8wXqzVK699EFA3DCnTy+BN1 +GRriUBU8U2XAyKClqxgThJtl8W+fKbJYUpWUUIVx9chAhUHZodYDoMfc9PgKKQdXS0nr6QLhghWZ +GK2nCxUPFhg+J2nthYoogxWWXV+ZiiGowpjinfR/J3QhL4bpw5GA1+3HwxF/wId7A3pP/bQk99X9 +fDpf6526mM6TLuH4+3q8IfYk2ST/OuY2o9OKXB/1Ub0n3ciWSuFAjhxtxqQe3S4W6Id4ERCKVeh8 +Af5pH4JEAqrOOzeJFBZFY/1pkJtg3YQ4zcDmKz6hAkydGWYExKlCI+dsPoPZBG6D4xRtwEKinMGF +vXipkJzEOSq8PI2P4Ooj7uoTm1Dbh435Kg9l9AIj6GmYdm5fy6nnyCERLsbbbmLz4W/l918fWO6D +6DaJp/TTCB1/oLkUlTszhH/WvKCG6hFWnPrhWFtwpDmDKRf2UOVR4LcyTKR4pVIqwIMkrwDVvjPu +oSUQFgamHbQWw+1ZPEazMNHrMQxS2zAS1AB23XQKI5StHX38w+LBTekSU2R1hHW0HqpWGYiolf70 +S8JTE4o2Jtd2YtnBnJSig/4atbpo6URfK34axOQ9emTKnUsYJyNA9I4RRtJCNu4B6r/OzDx6cvAe +DUzZJ+ZBlrOyvr2Zj/ck86Dk4UsiV1ScqOLsgx82Alt4snO/8mlXyDp5D3iYCyU31OF2oDC+kCll +A3L6ewIP6jhVyZx8N4CvtRQFWWdG53CgszjBrwSysuxAyskM4ka4gQEN1koYHzxUwdTWqh6oMJ0A +wc4Evr4jsHZqcjy1Tx9rQDi4AyFQrSAMUncrHGH6DBa0jfvhynkG8cfodG15J+J5/y93homDOuGE +Uo6s1mRUJ3sgTwTol8HDOntHiIKNZls5/BYJF3RmImUhm7nS+MlAy1O3g7PnPfBXZtuyZ2SsjIGf +HfiAz17DKjJxnfQJJsN3D2uNDTsYPqyUbOATsNGohWz4401ESl4wV8OBj/k09iMQ9NQu6giiC51D +Br52mNVz8Ykxn35w3uwPvZZkJUH3ZzH2sR0den8Mvh5tQrzszMyREKsgL9eL/LFNsrMgUc0sw8Yw +T2VSewBACenMzMkBzB/qTC7m+Dawrne4BWpEs8rxB8MLeMoKPg1w5tOYs9VG9Npz/PXT54Lx+xM4 +tgi7LRELtVwPL0T/xRyh7JbH3iGElQsOaH59B2ljqYMZBWkP5+fp0Ge4VaKC83OlUtHs38QJZpx1 +6Nyyl3YHLhNWWm+eojWoUItAlyabwiyzCJVgxp03Te+eUlMG1hJKg+a/0sgxszNGTmNLN4GFsfSx +OX4rd2wOa5xY4N1jO6gtHay2hMYNT1t2N27a/0oZvmk3K+uGh9vVnN7vU7zkmXeObsosnDujDnRq +BtBj+bLUiWtoT+ls9uGjd/pECpFyRSIAtCrT5Wf6iAbgncGxPHu40x4EWrWCASy0ASI+TyfInvdg +Z8dnQ/4uzXxAl1K/wcNTKQ2K9CYwuX4pO6noIqBv/orzTyHhnaej5SAw/tFhATHnCBUTPOOMYT/k +zzueGvmxwv5g/Jk6Z43aYMw2h37BBmOgaNwFTy8MgL5ZuMeDTrka1nb8ndAPb/lsJ/Spu2J3Qt/P +d0K7/DqYx8CGEJw4TO1ilT45EA0KBCNZlCtEswDRs3htq0wIGu5W4DpPMWi02OjfBjs7/dviwQHN +0ADvrJPxWYbmDRsmyBtiNz6hVNJnjn3zdyGX769yu5BWbl607kEKb4Douzc3bcBBh/K2qCWSfZoI +uUODJcEXnwSnzypLgg5HAkqPOTUQwZd6s1ppIgySVQEJogflvWhoJyvvQuLlwy27PehiJjp77Lrd +aAsVVONtIEsxEgCgM8uD4HGjEghZANyWOhjLlSDyXwk7n/xK8kDNyxmIwUPBccsw+AwJAMhJpSII +dmddwzAQAJ1ZDALoHfctw4B+uEd1d18ZBLow7GKu5NkwVj5fXirdFAAeVwoAMBUj6iA4vrxWw1j5 +fMkHoXU2rHyuPAfw/7s79/aojSyNf4L+Dr27wwQTkKtKdXUmmRiHhGSdgQCemNzYxm6MJ3abp91A +8s9+9v2dKkktd8vY4WF35tkQk27pqC7n8p73HMlKE/sXV7E6xNIvL7fGux7WkLdc9fzyfZzq5jW8 +snlO5dIhln75DlW+K+X10VLd/+Lx83aIp7OVR3SWzqe+fHK3W+3Tn1flrudj73oaqO9jf1Szxcc2 +LvOx64bKxtLHhhyk87F3bWMF+/6wg2xc9LH32sbSxy718yt8bOMyH7v2Gq6Vkf/toy9++q4Zwpz/ +cnGIW9dFvl5G3l8dovPL91zDxYz8Ppq41ffKKz1iMCPferdfXg1ct94/I+dGJQWp0M/7t1dfc3zn +m/SD/DrWD1IeUzI/2LhdnnikJj1c3nu7X7UvW971a48eLz6PmfAt22W9Em7yp9OfSnvjo0+fNndu +7u4/y/Xgndy7z/3k5o2KbcF9v3s5o9wekC7H9PzXWxdvD9wuGypfd6qqWWZz2eby1Yz5rYXLjqK9 +2etCXuz39wrl3o3Yzz6/3Ws19ho5F5r++e2ky1l2e73Oldcm5tq3P/NXn3/cazX2Zv7qy2Uv7xcU +uDfPNwK6t/R+9UCJf3/ctAaXr01cNr8e7nycm4lN2ffw6zttTfr6VlOdP9ytSr/xo0/3qQMePlKC +Pzq/EfJQDuyXYUGEWdW8c/ZP1UbTO376dbblx/3e6dMH1XXbV9K3/OjHnWXTqt/gWLavnj7a/EMN +sZXxRgMj7qneXYK9T7d2tvf+/Ml/7bwM//lq+8n27PvSnrz7461fmruVB/vdfbYn9Q== + + 8rW0S+vmjuLu7V4XsvTZnj8qr12W//nORvk0+fe/l6bk8naZuftDfT//KmZuA+VPjWGfH7nSb2y7 +1r/uVQIpGrvFXPjc6ZpWd/q96l8nptdq7PVzfj2y3TtnXe+G5l/3vryfu7ESldfu73a309b6u3/p +++Lix838zAKr3s57rvLTMN98XI721r04qvOx9pWw/W6z/+H0/skXL26cP/n8L3/dt6W3+Jn72YEm +391s7oke3/hzbqVmMMuzNN32D/Pm16H3vpbf5PmQb34deu8r1v/Ab34deu9rxuQP+ubXofe+ludU +rnrz69l/fzb6ZHRD7lA+uzc77N+dHN24wZHH08XrVyLgnt2dHh3Pdie/T+cjPS5/FH/k75DG2sSx +cY4vTo7uPh/dzLJjvTHenY3UePve6Mazze354ovjg8Xx2Wwy/328JYf2v93d+/qL8da4XPCMCz4Z +32RJ6hnSnNqQ+6JZ7m9ykzRfNDDIpScZ7bfTkxmn70wWi/nx89eL6Xkz6PZ8PlmTOnh5fHI4n86K +jBlvfj1bLM/KX4vfX03L2ZsvF4tXW5ubb9++rd7W1dn8aFOnlDaV2TTmzvzwxZ3z32eLyW93Zuf/ +sTHefMz8s6OLg72ZnLxuR5Pj51tcdonsbHLaiDbrbYSv1ND/tRKMwg/P3xxde8+Xyw7sOQv/a+z5 +1ev5Sd7x4cHm9GQqoXO+qSu9ee2dHx5cf+Mi+6+x74P5dLI4fjM9ODs9PZudZxX8ER8/+AO7Pji4 +cOB9N6bfubGrF/747189e/Ly+PxeMfN11r92ST7OjyAiP/tv5cN09HrlP3tXguVRHaN75p4No+VN +Xan8z1itfehOWa0ra2KKfmxdtSGXBW1Nir2dbR+ePZ8+eP6P6cHi2wnHfmvUvbqwle83F/PJ7Pxk +spj+dLNMk24zB8PXP230hs9iL87mpxc0tt0ZV4a9cKp3oGixZCE0+TtfvuHDPzj0dqzV+Nvxjz+r +8aFo+dEoixyO/Pjmxnj/+zWlPxipKtjoha8m/gqaVFb5EL21yTntoqmtHPEpaR9V9MrpJEdiCkpp +561TJmif1Vwnw5HoTbBOX+vI/mRkk6pcHUytrTxKVI8RqKzytTPBO+v1+HRUm1QljYyvTZSnjdZk +dke6dpXlpDdGBVXrcahN5ZN2KrFO602W8VUK3jjOWaPT0DiRqaIx6MKnZj2mUsHhHyqEhIxcY7RR +tdeyHJFAi7W3tYpJySiqsoHV4qo+6BgG1rsz0qykNso57znDnqyKsgFnyzxlvakKKuqk2H3y6Voy +XqtKa2MVGjZFpramcikYk8QAyg+N43BXj4jVRqtUxyEZw1zeJRnbGO/82AfPzlONW7QyV9tzd/Ri +dLWGTq8hs/vBZF6MnE0Sp8jVKdqh/Z+OPM4BzTF5lAH9XDg/MMvaHNeRGZjnxUjsW0VlL5/tdF1m +0HuiqsDCWmU3rK8lMxR9V67nejLsjIkrgsvYUOIY7JHZreJfr2KQnaWQKmuD+OAlaBCBg4DfEwJG +omJIBqeo+DHee4GycXB1FU0X6XnvXtsqEuQ2XD6XDXV1OS6BCxW5wKDSiBT7CZVmquRkfTrPYj0r +Ccr4Wlx00ObaK1sRTyZD1yUyZUdGew6Ihh2Wcwak9dG0MtEKnpVRLnEKHA/lKcDAXwYFV5spG1Pr +CBqQOFyqmQxNV4CQrxUYI3vHlgqtq0AhlTIMeuOBLzAG/1cNbKva9pfsdajQL2hkY9agViCwTbVu +oFQElCOleVegXyttQEmjuSCvwzCgdsGEbCczPmAShe20b53Ty5zJkAaMyjBKeVOFCGTn511xGbIi +qmZMVaZAIdH6VvXMRiJxyRpftipTaMe0wYXsLIFwkMGJhwLUbCNWNaMKAMsQsa5EE9G5knlQRJJF +BTxHBCL7rLm6Ma/Oc8A3VGQxeY5IxiOTkyCMOJsM4Qhmknh5bDc6WWVok0U+j6YkZmQT0UtEkA5D +488ygfMkClJdUWXExerAOZuNkUcgy+ocUjJDQo8uefyp3QQGd50pMHLllFVNmm6mkDHJWE3MEYPk +tpAIkCzCJhm0hKMQGGRddqisIgIfj9ct1ssGe7lZhuei5mp8WJuUiq/J1VjNK3yn+Cv0AWXV4uZF +PSn5KrZuFvlSC5rBnfLWd0YJ0oG1fDO7j67CraNlxUS2ODP2rFr1ihOxhhpkcNlHEm6K4zfBAnAA +JTUMIWi5OImH+roObagQyTHEdnXiYjHpqm7znJzXqLCLNgCI+Ux0xTTeOSyJl4XGh2MIFYYMOezz ++oAqMj1Ep6xvZxShYp17AFkVpCxpqAd/Mn3CJXEqV5clhuT6UQArS2Bl6lJAhHWgUzSEb8gIOFrV +6Vc5/D/ERgFiO5kRwtGtkM1XSjio9TZbMIjHhpShNs/PjnDRVAwg543UAbYTAOqEk6Z2gczhhTEk +2yyRYMMMNZptgkyGgMLGNiXgqJVjztQiVvARt8JH2xGwA4QaRGmYqOwDNSLn+F7QIuAorArdZluL +4thGIQHZk2B1y1WYrDkj4KDKCJ6oMsJZS6RnZwAtGkdDTYBAIjiKH+IiRGW50klAs/UOLaN36ATs +bti2BdqTdcurGdqTIcCFJgPDUyp4NwaLRQWCCn3moSVeMUbdOjpR3+bdlvvqmrQWVOPJCY1g+O4X +DIAolAjEF1+TWIFNLMFSzhsKC9fS3owaxqfl5XzRts26zFDjezaV/LUUWZqJ9ILWQknKeRes0mns +3xgJYK1aLpy1wADoyNm62Ig5cPdadRzfaXxJ+WUi1eRKclmbEpzLFosNf+A85AuHb5zVi5oAG5O6 +CbTG7rZutSSZjwheEnKtCQib2oA2As0WX2ksyemI8buIZq8XiweZIdQXkivYSxok95nUjIEAcd2t +QVYUe2pgEuhaD1UkvjC+M13y1aKGssdAPlhGdFaBJ0M0gAJegbmhzYly+gqKsZPpMrCFq3WalOKE +cSJ2JK9HK0REkw10a+s1gZxzLFDd1jWIEtZQriYtDUiAKbnuwsXE6Up6XpGhxhYnIyVnnjFeWQaV +J3hmpa4tp9d2sirBJDWeLTpqoGF9EGKNAy3+xIFVrEkM7GVNpmgEB0/EQ43OVhdSlBooMokVEbjS +LgdYb2+Umv7F0KemmUHIwBGXkMLqJBNBUwpLxMIkcgIctRNBufzXGZeIqFD4zdjV4CS+FVvYRUJS +HBm34AYSRJARlGl4L6kTiiU82LED9rQzctAXK44RSsMCPVAU64gOYLKk0hzntQI1TdOI0ExG5Bun +CpEZAxkkTu1w5JxnkGBUsZCvM0Yyj4cuxiXT0mTuPqGUgrRItJ2TelAG2GMjDgqVYWhIBi4ND+w1 +K9ZkyC5ooYckhK0WNGxT/5AEKUyx5XbPaO5KGdYr9LGP2wMywjLqYKCvpYtTYpPk7SA/gnzCVJQw +gSWZBorJoDVlZeMMUAChH8v6UIMxuAt2BKTEOYMYzVjsmG2EekE4+IYVlWsAiS3BVoQjGYC+jbW1 +5UYWh+uGpnxIH1BmxQhRKgxqXB8bkrlmSICUkGW7XZCsSrAnaCpGMsRJLjSGXKaREUyoJcQGXU/Y +oUpdzbQm4qMWeIASa9FeaoBKconPhC53oExXlZGKrCQDYXJQI5uDBDiFX6jYDlFLhZAsxNlmiGEd +wAAo3hbOgmQBLZDngaOMZEKlE7SzlrJTujIMKWvXQp2ThLTUv5RAoe6wTgFtQbWJDCTzOAdEsaPw +gi4wdNIgXxwGggY6Sd9qif81NYbHvq0Bg5S2EbcsxaxgLBpJUgQEyrC8ZSGwICp4Vag+MEsdg7mg +DTHjz24rw9pqV9QyIAP3oL4wycXSihqSIftivx7WrcpIIYyFKLqULrGIdauaUpuJswEGJKDHGk02 +fFH2ROhZuaYlAmsyUlpRrUFjG+adQ60W3tnlG2RAeAoKpWPpZpUQgWYnW+gvRaEnyDlVklJO0dTh +sBkKlWxJoaYhyAIywRWv9BqX6kiH1EmB4OT6SKZo1rK+3iC2xX54V4O815FZ0R77hXunGnYfTc5I +qxZIFjKuY4mh7FWrEjsZOggr1RS/dsjWRaYGN0p9NShDuAUiVkUh22rA96LYhHUucz78uSKuUl2K +wAJBVOUtriJRKigCO7Y+ThBLm7mpgCSXU3JEJ05khZ2Lb4ImZD8jNbTO8Ex8QmWDbeEZ/eqEDH4X +Qq5Zx1pyM7AFRctVJwqneIr9nGRr6WOSErTLoc8MUkkwbS69k4whJDbZpjAWskSmx0yx6WrURSZK +b7KJ7CwBlEsZVGcLkJIh4ywDp8evigTLWMK7SFC94vhFYkearFFu4HSlmSA58/i2ahEmJ2bEULkF +g2c6amArIV7aEEAKmaXmapW7KLFZCQESS6cgc8zs8r5rNgBjUmPWtdw5KhSSskA5aT7VDbUjJKwS +1/ai/HJF7UKXX8kmOCrmapCZ7YiWtDXNfoR157LPaumrZgpJsUDOWHZ8xHQECPArsIpS3jAKlRn5 +3TYVCnaCEBtYmy4xz1rZoGt8Ni8WrI51V9Q3oxIasKCS8gDFCuO1NW3WiRGDpSUd8LmklKAq3FBi +uzJNsUd+0XIfDT7a0GUjNAvBEErTmtpNMoakP0Kl2JePQNqyDUzGkxZK1+LDX6Xp22sjohWDv0KQ +G+6Te3xKusJZ76xTmgmYw7YYuDNKEgUYEr7f7JeVVjAbuTWW9wuysRCnux6GFmxl0hr5gvyUAySY +5a0MLSV3FCOE4vMHIycZUDhX2zHS+LdQFgZi4WiFcKjkvlWThlCTtKWMlyKhrJYEWpFVg7K62Y9U +6sbhiSHXqMIsRQaYjssELjLEURs7u1lGbN4qpshoaYSnkPFCJJLr0WApMkgLbe9kfGUVIvWMHm+/ +GqnmBm55pGh/Qv2ZoqQmsiE6j1S2aLXyykjVEAiLXKOuyUizFUyOwjwyWsGA5CwI7fBi8aGsYciB +CV42Dn4BGuQK76n2wrqE1OPSL4evGFGhdwOjKBZHzR9wJvBqaCXrEiv7kXJ4VUb4BHAaiDOFpsfr +K4GE4Xfgj4dIxaH9rErkHsaKVtZHWdXs+kquso/Ydvj5hdXHBCbHW1v3Tk6OX51PN8abe7NjeQ9G ++3CAnNw9fjN9/HLyarq1dX8yOzyZzv/WPV+xOpoeb949OzsZ90fd2to5OTv49e3xeXORGm8+mk5W +hR6dLSYy1Pbs6KQRJN1J977t3A1ddX96fPRycfHhkgsCX8+OF8eTk+9eTw7nk/bxjyB5JwokkhjB +uMGhd6azxXT+9F1rfng8vTc77K34UrHHi8l80ROEEV/0lMtXsH9tZXx/fLh42T2rsWK7h5P55PR8 ++OzFh2Ly8xj/7GcxcHHwmdqDjMVRL0ENeXCC3tIFLW2yNRnopZGimTDxmVGXXoZJWm7L5EQHwVBQ +A7ZCZhBG7SlD4WoxB8+6hIRs7aUDrgXpSzJcG8XI7ZM6CEUiUw+tZE1iZT8yz5pMvg== + + uSx3BKTRqMcDK0nSpJJGMQRObjqt72dFIkPQqlbWRlnT7NpKrrLP/wsIChJ0Hf+39QcFoSQ36BJE +QZru/p8BQiu+ciUIXVCHMKL/LRjaW31cbKjdunu3PBfN9vODy3fujG7ceDg5mj6ZT45xktHR+eTN +dDyZzcSw01ecGR/Np+eLs/l0fP7y7K0c4ZJW/MaNew++HP0Phl8izg== + \ No newline at end of file diff --git a/dist/images/KiwixLogoVertical_v3_440.png b/dist/images/KiwixLogoVertical_v3_440.png new file mode 100644 index 000000000..fa091d9a6 Binary files /dev/null and b/dist/images/KiwixLogoVertical_v3_440.png differ diff --git a/dist/images/KiwixLogoVertical_v3_440x280.png b/dist/images/KiwixLogoVertical_v3_440x280.png new file mode 100644 index 000000000..7caef7e91 Binary files /dev/null and b/dist/images/KiwixLogoVertical_v3_440x280.png differ diff --git a/dist/images/KiwixLogoVertical_v3_store.svg.png b/dist/images/KiwixLogoVertical_v3_store.svg.png new file mode 100644 index 000000000..70a932255 Binary files /dev/null and b/dist/images/KiwixLogoVertical_v3_store.svg.png differ diff --git a/dist/images/KiwixLogoVertical_v3_white.svg.png b/dist/images/KiwixLogoVertical_v3_white.svg.png new file mode 100644 index 000000000..be9161e3c Binary files /dev/null and b/dist/images/KiwixLogoVertical_v3_white.svg.png differ diff --git a/dist/images/Kiwix_icon_nontransparent_store_logo.png b/dist/images/Kiwix_icon_nontransparent_store_logo.png new file mode 100644 index 000000000..403e8cc03 Binary files /dev/null and b/dist/images/Kiwix_icon_nontransparent_store_logo.png differ diff --git a/dist/images/Kiwix_icon_nontransparent_store_logo_1080.png b/dist/images/Kiwix_icon_nontransparent_store_logo_1080.png new file mode 100644 index 000000000..583e1f466 Binary files /dev/null and b/dist/images/Kiwix_icon_nontransparent_store_logo_1080.png differ diff --git a/dist/images/Kiwix_icon_nontransparent_store_logo_150.png b/dist/images/Kiwix_icon_nontransparent_store_logo_150.png new file mode 100644 index 000000000..7e5e8cbfe Binary files /dev/null and b/dist/images/Kiwix_icon_nontransparent_store_logo_150.png differ diff --git a/dist/images/Kiwix_icon_nontransparent_store_logo_300.png b/dist/images/Kiwix_icon_nontransparent_store_logo_300.png new file mode 100644 index 000000000..d6c9f224e Binary files /dev/null and b/dist/images/Kiwix_icon_nontransparent_store_logo_300.png differ diff --git a/dist/images/Kiwix_icon_nontransparent_store_logo_71.png b/dist/images/Kiwix_icon_nontransparent_store_logo_71.png new file mode 100644 index 000000000..a900ea2df Binary files /dev/null and b/dist/images/Kiwix_icon_nontransparent_store_logo_71.png differ diff --git a/dist/images/Kiwix_icon_transparent.svg b/dist/images/Kiwix_icon_transparent.svg new file mode 100644 index 000000000..094c6cea7 --- /dev/null +++ b/dist/images/Kiwix_icon_transparent.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/dist/images/Kiwix_logo_v3.png b/dist/images/Kiwix_logo_v3.png new file mode 100644 index 000000000..e29499a4b Binary files /dev/null and b/dist/images/Kiwix_logo_v3.png differ diff --git a/dist/images/Kiwix_logo_v3.svg b/dist/images/Kiwix_logo_v3.svg new file mode 100644 index 000000000..566b1064b --- /dev/null +++ b/dist/images/Kiwix_logo_v3.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/dist/images/Kiwix_logo_v3_2048.png b/dist/images/Kiwix_logo_v3_2048.png new file mode 100644 index 000000000..c13bcc88a Binary files /dev/null and b/dist/images/Kiwix_logo_v3_2048.png differ diff --git a/dist/images/Kiwix_logo_v3_2048_store_template.png b/dist/images/Kiwix_logo_v3_2048_store_template.png new file mode 100644 index 000000000..1a6eb2d51 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_2048_store_template.png differ diff --git a/dist/images/Kiwix_logo_v3_300.png b/dist/images/Kiwix_logo_v3_300.png new file mode 100644 index 000000000..ab33b6080 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_300.png differ diff --git a/dist/images/Kiwix_logo_v3_300_midnight_blue.png b/dist/images/Kiwix_logo_v3_300_midnight_blue.png new file mode 100644 index 000000000..a5fd346eb Binary files /dev/null and b/dist/images/Kiwix_logo_v3_300_midnight_blue.png differ diff --git a/dist/images/Kiwix_logo_v3_navy.png b/dist/images/Kiwix_logo_v3_navy.png new file mode 100644 index 000000000..0449f2442 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_navy.png differ diff --git a/dist/images/Kiwix_logo_v3_navy_drawing.png b/dist/images/Kiwix_logo_v3_navy_drawing.png new file mode 100644 index 000000000..dd7dcd45b Binary files /dev/null and b/dist/images/Kiwix_logo_v3_navy_drawing.png differ diff --git a/dist/images/Kiwix_logo_v3_no_trans.png b/dist/images/Kiwix_logo_v3_no_trans.png new file mode 100644 index 000000000..dce2b76ad Binary files /dev/null and b/dist/images/Kiwix_logo_v3_no_trans.png differ diff --git a/dist/images/Kiwix_logo_v3_no_trans_512.png b/dist/images/Kiwix_logo_v3_no_trans_512.png new file mode 100644 index 000000000..6fe60862b Binary files /dev/null and b/dist/images/Kiwix_logo_v3_no_trans_512.png differ diff --git a/dist/images/Kiwix_logo_v3_outline.png b/dist/images/Kiwix_logo_v3_outline.png new file mode 100644 index 000000000..eead281c9 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_outline.png differ diff --git a/dist/images/Kiwix_logo_v3_outline_trans.png b/dist/images/Kiwix_logo_v3_outline_trans.png new file mode 100644 index 000000000..2ea8886da Binary files /dev/null and b/dist/images/Kiwix_logo_v3_outline_trans.png differ diff --git a/dist/images/Kiwix_logo_v3_outline_trans_blue.png b/dist/images/Kiwix_logo_v3_outline_trans_blue.png new file mode 100644 index 000000000..f3a8a9e50 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_outline_trans_blue.png differ diff --git a/dist/images/Kiwix_logo_v3_store_150.png b/dist/images/Kiwix_logo_v3_store_150.png new file mode 100644 index 000000000..97024f1b6 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_store_150.png differ diff --git a/dist/images/Kiwix_logo_v3_store_2160.png b/dist/images/Kiwix_logo_v3_store_2160.png new file mode 100644 index 000000000..d83e2d00f Binary files /dev/null and b/dist/images/Kiwix_logo_v3_store_2160.png differ diff --git a/dist/images/Kiwix_logo_v3_store_300.png b/dist/images/Kiwix_logo_v3_store_300.png new file mode 100644 index 000000000..2caa8d6c3 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_store_300.png differ diff --git a/dist/images/Kiwix_logo_v3_store_71.png b/dist/images/Kiwix_logo_v3_store_71.png new file mode 100644 index 000000000..bd51ff953 Binary files /dev/null and b/dist/images/Kiwix_logo_v3_store_71.png differ diff --git a/dist/images/Kiwix_midnightblue_icon_transparent_530.png b/dist/images/Kiwix_midnightblue_icon_transparent_530.png new file mode 100644 index 000000000..e846672ab Binary files /dev/null and b/dist/images/Kiwix_midnightblue_icon_transparent_530.png differ diff --git a/dist/images/LargeTile.scale-100.png b/dist/images/LargeTile.scale-100.png new file mode 100644 index 000000000..0e78604da Binary files /dev/null and b/dist/images/LargeTile.scale-100.png differ diff --git a/dist/images/LargeTile.scale-125.png b/dist/images/LargeTile.scale-125.png new file mode 100644 index 000000000..c912adafb Binary files /dev/null and b/dist/images/LargeTile.scale-125.png differ diff --git a/dist/images/LargeTile.scale-150.png b/dist/images/LargeTile.scale-150.png new file mode 100644 index 000000000..f13f993f2 Binary files /dev/null and b/dist/images/LargeTile.scale-150.png differ diff --git a/dist/images/LargeTile.scale-200.png b/dist/images/LargeTile.scale-200.png new file mode 100644 index 000000000..2b04c8747 Binary files /dev/null and b/dist/images/LargeTile.scale-200.png differ diff --git a/dist/images/LargeTile.scale-400.png b/dist/images/LargeTile.scale-400.png new file mode 100644 index 000000000..ec9720cdd Binary files /dev/null and b/dist/images/LargeTile.scale-400.png differ diff --git a/dist/images/SmallTile.scale-100.png b/dist/images/SmallTile.scale-100.png new file mode 100644 index 000000000..7d1ce2ee9 Binary files /dev/null and b/dist/images/SmallTile.scale-100.png differ diff --git a/dist/images/SmallTile.scale-125.png b/dist/images/SmallTile.scale-125.png new file mode 100644 index 000000000..b0cc54ebc Binary files /dev/null and b/dist/images/SmallTile.scale-125.png differ diff --git a/dist/images/SmallTile.scale-150.png b/dist/images/SmallTile.scale-150.png new file mode 100644 index 000000000..0a099f2c8 Binary files /dev/null and b/dist/images/SmallTile.scale-150.png differ diff --git a/dist/images/SmallTile.scale-200.png b/dist/images/SmallTile.scale-200.png new file mode 100644 index 000000000..b8fd22b44 Binary files /dev/null and b/dist/images/SmallTile.scale-200.png differ diff --git a/dist/images/SmallTile.scale-400.png b/dist/images/SmallTile.scale-400.png new file mode 100644 index 000000000..95ab59089 Binary files /dev/null and b/dist/images/SmallTile.scale-400.png differ diff --git a/dist/images/Square150x150Logo.scale-100.png b/dist/images/Square150x150Logo.scale-100.png new file mode 100644 index 000000000..31cf1876f Binary files /dev/null and b/dist/images/Square150x150Logo.scale-100.png differ diff --git a/dist/images/Square150x150Logo.scale-125.png b/dist/images/Square150x150Logo.scale-125.png new file mode 100644 index 000000000..5bc6a79a5 Binary files /dev/null and b/dist/images/Square150x150Logo.scale-125.png differ diff --git a/dist/images/Square150x150Logo.scale-150.png b/dist/images/Square150x150Logo.scale-150.png new file mode 100644 index 000000000..bac45e910 Binary files /dev/null and b/dist/images/Square150x150Logo.scale-150.png differ diff --git a/dist/images/Square150x150Logo.scale-200.png b/dist/images/Square150x150Logo.scale-200.png new file mode 100644 index 000000000..b9c9e50c9 Binary files /dev/null and b/dist/images/Square150x150Logo.scale-200.png differ diff --git a/dist/images/Square150x150Logo.scale-400.png b/dist/images/Square150x150Logo.scale-400.png new file mode 100644 index 000000000..c77d9d6a2 Binary files /dev/null and b/dist/images/Square150x150Logo.scale-400.png differ diff --git a/dist/images/Square44x44Logo.altform-unplated_targetsize-16.png b/dist/images/Square44x44Logo.altform-unplated_targetsize-16.png new file mode 100644 index 000000000..e9820a43a Binary files /dev/null and b/dist/images/Square44x44Logo.altform-unplated_targetsize-16.png differ diff --git a/dist/images/Square44x44Logo.altform-unplated_targetsize-256.png b/dist/images/Square44x44Logo.altform-unplated_targetsize-256.png new file mode 100644 index 000000000..37d5405c5 Binary files /dev/null and b/dist/images/Square44x44Logo.altform-unplated_targetsize-256.png differ diff --git a/dist/images/Square44x44Logo.altform-unplated_targetsize-32.png b/dist/images/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 000000000..3c3872f5e Binary files /dev/null and b/dist/images/Square44x44Logo.altform-unplated_targetsize-32.png differ diff --git a/dist/images/Square44x44Logo.altform-unplated_targetsize-48.png b/dist/images/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 000000000..e4dd924e3 Binary files /dev/null and b/dist/images/Square44x44Logo.altform-unplated_targetsize-48.png differ diff --git a/dist/images/Square44x44Logo.scale-100.png b/dist/images/Square44x44Logo.scale-100.png new file mode 100644 index 000000000..d4f6cee77 Binary files /dev/null and b/dist/images/Square44x44Logo.scale-100.png differ diff --git a/dist/images/Square44x44Logo.scale-125.png b/dist/images/Square44x44Logo.scale-125.png new file mode 100644 index 000000000..6f220382d Binary files /dev/null and b/dist/images/Square44x44Logo.scale-125.png differ diff --git a/dist/images/Square44x44Logo.scale-150.png b/dist/images/Square44x44Logo.scale-150.png new file mode 100644 index 000000000..64acaa9cc Binary files /dev/null and b/dist/images/Square44x44Logo.scale-150.png differ diff --git a/dist/images/Square44x44Logo.scale-200.png b/dist/images/Square44x44Logo.scale-200.png new file mode 100644 index 000000000..0db563a58 Binary files /dev/null and b/dist/images/Square44x44Logo.scale-200.png differ diff --git a/dist/images/Square44x44Logo.scale-400.png b/dist/images/Square44x44Logo.scale-400.png new file mode 100644 index 000000000..d3124261b Binary files /dev/null and b/dist/images/Square44x44Logo.scale-400.png differ diff --git a/dist/images/Square44x44Logo.targetsize-16.png b/dist/images/Square44x44Logo.targetsize-16.png new file mode 100644 index 000000000..e9820a43a Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-16.png differ diff --git a/dist/images/Square44x44Logo.targetsize-24.png b/dist/images/Square44x44Logo.targetsize-24.png new file mode 100644 index 000000000..46fb0a933 Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-24.png differ diff --git a/dist/images/Square44x44Logo.targetsize-24_altform-unplated.png b/dist/images/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 000000000..46fb0a933 Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/dist/images/Square44x44Logo.targetsize-256.png b/dist/images/Square44x44Logo.targetsize-256.png new file mode 100644 index 000000000..16718d711 Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-256.png differ diff --git a/dist/images/Square44x44Logo.targetsize-32.png b/dist/images/Square44x44Logo.targetsize-32.png new file mode 100644 index 000000000..3c3872f5e Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-32.png differ diff --git a/dist/images/Square44x44Logo.targetsize-48.png b/dist/images/Square44x44Logo.targetsize-48.png new file mode 100644 index 000000000..e4dd924e3 Binary files /dev/null and b/dist/images/Square44x44Logo.targetsize-48.png differ diff --git a/dist/images/Wide310x150Logo.scale-100.png b/dist/images/Wide310x150Logo.scale-100.png new file mode 100644 index 000000000..345c826b8 Binary files /dev/null and b/dist/images/Wide310x150Logo.scale-100.png differ diff --git a/dist/images/Wide310x150Logo.scale-125.png b/dist/images/Wide310x150Logo.scale-125.png new file mode 100644 index 000000000..0106d79f6 Binary files /dev/null and b/dist/images/Wide310x150Logo.scale-125.png differ diff --git a/dist/images/Wide310x150Logo.scale-150.png b/dist/images/Wide310x150Logo.scale-150.png new file mode 100644 index 000000000..4eec8e038 Binary files /dev/null and b/dist/images/Wide310x150Logo.scale-150.png differ diff --git a/dist/images/Wide310x150Logo.scale-200.png b/dist/images/Wide310x150Logo.scale-200.png new file mode 100644 index 000000000..c3d785c62 Binary files /dev/null and b/dist/images/Wide310x150Logo.scale-200.png differ diff --git a/dist/images/Wide310x150Logo.scale-400.png b/dist/images/Wide310x150Logo.scale-400.png new file mode 100644 index 000000000..88ba5f4a5 Binary files /dev/null and b/dist/images/Wide310x150Logo.scale-400.png differ diff --git a/dist/images/WikiMed_400x430.png b/dist/images/WikiMed_400x430.png new file mode 100644 index 000000000..3872903ad Binary files /dev/null and b/dist/images/WikiMed_400x430.png differ diff --git a/dist/images/Wikivoyage_400x400_colour_pop.png b/dist/images/Wikivoyage_400x400_colour_pop.png new file mode 100644 index 000000000..16f9bb9a2 Binary files /dev/null and b/dist/images/Wikivoyage_400x400_colour_pop.png differ diff --git a/dist/images/edgelegacy-color.svg b/dist/images/edgelegacy-color.svg new file mode 100644 index 000000000..08ac2cc89 --- /dev/null +++ b/dist/images/edgelegacy-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/images/electron-color.svg b/dist/images/electron-color.svg new file mode 100644 index 000000000..dc81c99d2 --- /dev/null +++ b/dist/images/electron-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/images/firefoxbrowser-color.svg b/dist/images/firefoxbrowser-color.svg new file mode 100644 index 000000000..a154f42b6 --- /dev/null +++ b/dist/images/firefoxbrowser-color.svg @@ -0,0 +1 @@ +Firefox Browser \ No newline at end of file diff --git a/dist/images/googlechrome-color.svg b/dist/images/googlechrome-color.svg new file mode 100644 index 000000000..8673cb399 --- /dev/null +++ b/dist/images/googlechrome-color.svg @@ -0,0 +1 @@ +Google Chrome \ No newline at end of file diff --git a/dist/images/icon.ico b/dist/images/icon.ico new file mode 100644 index 000000000..4ca685851 Binary files /dev/null and b/dist/images/icon.ico differ diff --git a/dist/images/icon.png b/dist/images/icon.png new file mode 100644 index 000000000..5c833403f Binary files /dev/null and b/dist/images/icon.png differ diff --git a/dist/images/icon_transparency.png b/dist/images/icon_transparency.png new file mode 100644 index 000000000..1ec3dd070 Binary files /dev/null and b/dist/images/icon_transparency.png differ diff --git a/dist/images/kiwix_store_200.png b/dist/images/kiwix_store_200.png new file mode 100644 index 000000000..fff52e4d4 Binary files /dev/null and b/dist/images/kiwix_store_200.png differ diff --git a/dist/images/microsoftedge-color.svg b/dist/images/microsoftedge-color.svg new file mode 100644 index 000000000..2f04e1a96 --- /dev/null +++ b/dist/images/microsoftedge-color.svg @@ -0,0 +1 @@ +Microsoft Edge \ No newline at end of file diff --git a/dist/images/microsoftwindows-color.svg b/dist/images/microsoftwindows-color.svg new file mode 100644 index 000000000..d0332d415 --- /dev/null +++ b/dist/images/microsoftwindows-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/images/nwjs-color.svg b/dist/images/nwjs-color.svg new file mode 100644 index 000000000..2b2c530c4 --- /dev/null +++ b/dist/images/nwjs-color.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dist/images/safari-color.svg b/dist/images/safari-color.svg new file mode 100644 index 000000000..2ff888ba3 --- /dev/null +++ b/dist/images/safari-color.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/dist/images/splashscreen.scale-100.png b/dist/images/splashscreen.scale-100.png new file mode 100644 index 000000000..c3d785c62 Binary files /dev/null and b/dist/images/splashscreen.scale-100.png differ diff --git a/dist/images/splashscreen.scale-125.png b/dist/images/splashscreen.scale-125.png new file mode 100644 index 000000000..901fb69c6 Binary files /dev/null and b/dist/images/splashscreen.scale-125.png differ diff --git a/dist/images/splashscreen.scale-150.png b/dist/images/splashscreen.scale-150.png new file mode 100644 index 000000000..53d9ea855 Binary files /dev/null and b/dist/images/splashscreen.scale-150.png differ diff --git a/dist/images/splashscreen.scale-200.png b/dist/images/splashscreen.scale-200.png new file mode 100644 index 000000000..88ba5f4a5 Binary files /dev/null and b/dist/images/splashscreen.scale-200.png differ diff --git a/dist/images/splashscreen.scale-400.png b/dist/images/splashscreen.scale-400.png new file mode 100644 index 000000000..1ab91de6d Binary files /dev/null and b/dist/images/splashscreen.scale-400.png differ diff --git a/dist/images/storelogo.scale-100.png b/dist/images/storelogo.scale-100.png new file mode 100644 index 000000000..32334b23e Binary files /dev/null and b/dist/images/storelogo.scale-100.png differ diff --git a/dist/images/storelogo.scale-125.png b/dist/images/storelogo.scale-125.png new file mode 100644 index 000000000..3841ebfaf Binary files /dev/null and b/dist/images/storelogo.scale-125.png differ diff --git a/dist/images/storelogo.scale-150.png b/dist/images/storelogo.scale-150.png new file mode 100644 index 000000000..adc3f9afe Binary files /dev/null and b/dist/images/storelogo.scale-150.png differ diff --git a/dist/images/storelogo.scale-200.png b/dist/images/storelogo.scale-200.png new file mode 100644 index 000000000..639fcff58 Binary files /dev/null and b/dist/images/storelogo.scale-200.png differ diff --git a/dist/images/storelogo.scale-400.png b/dist/images/storelogo.scale-400.png new file mode 100644 index 000000000..9c004d00a Binary files /dev/null and b/dist/images/storelogo.scale-400.png differ diff --git a/dist/images/web_hi_res_512.png b/dist/images/web_hi_res_512.png new file mode 100644 index 000000000..abd8a8dc9 Binary files /dev/null and b/dist/images/web_hi_res_512.png differ diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 000000000..4cd4a69f7 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,8 @@ + + + + +Redirection to index.html + + + \ No newline at end of file diff --git a/dist/main.cjs b/dist/main.cjs new file mode 100644 index 000000000..e2032bd73 --- /dev/null +++ b/dist/main.cjs @@ -0,0 +1,196 @@ +// Modules to control application life and create native browser window +const { app, dialog, ipcMain, BrowserWindow } = require('electron'); +const path = require('path'); +const { autoUpdater } = require('electron-updater'); +const contextMenu = require('electron-context-menu'); + +app.commandLine.appendSwitch('enable-experimental-web-platform-features'); + +contextMenu({ + labels: { + cut: 'Cut', + copy: 'Copy', + paste: 'Paste', + save: 'Save Image', + saveImageAs: 'Save Image As…', + copyLink: 'Copy Link', + saveLinkAs: 'Save Link As…', + inspect: 'Inspect Element' + }, + prepend: () => { }, + append: () => { }, + showCopyImageAddress: true, + showSaveImageAs: true, + showInspectElement: true, + showSaveLinkAs: true, + cut: true, + copy: true, + paste: true, + save: true, + saveImageAs: true, + copyLink: true, + saveLinkAs: true, + inspect: true +}); + +let mainWindow; + +function createWindow () { + // Create the browser window. + mainWindow = new BrowserWindow({ + // titleBarStyle: 'hidden', + width: 1281, + height: 800, + minWidth: 640, + minHeight: 480, + autoHideMenuBar: true, + icon: path.join(__dirname, 'www/img/icons/kiwix-64.png'), + // titleBarStyle: 'hidden', + // titleBarOverlay: { + // color: '#000000', + // symbolColor: '#ffffff', + // height: 16 + // }, + webPreferences: { + preload: path.join(__dirname, 'preload.cjs'), + nativeWindowOpen: true, + nodeIntegrationInWorker: true + } + }); + + // DEV: Uncomment this to open dev tools early in load process + // mainWindow.webContents.openDevTools(); + + mainWindow.loadFile('www/index.html'); +} + +function registerListeners () { + ipcMain.on('file-dialog', function (event) { + dialog.showOpenDialog(mainWindow, { + filters: [ + { name: 'ZIM Archives', extensions: ['zim', 'zimaa'] } + ], + properties: ['openFile'] + }).then(function ({ filePaths }) { + if (filePaths.length) { + event.reply('file-dialog', filePaths[0]); + } + }); + }); + ipcMain.on('dir-dialog', function (event) { + dialog.showOpenDialog(mainWindow, { + properties: ['openDirectory'] + }).then(function ({ filePaths }) { + if (filePaths.length) { + event.reply('dir-dialog', filePaths[0]); + } + }); + }); + ipcMain.on('check-updates', function (event) { + console.log('Auto-update check request received...\n'); + autoUpdater.checkForUpdates(); + }); + // Registers listener for download events + mainWindow.webContents.session.on('will-download', (event, item, webContents) => { + // Set the save path, making Electron not to prompt a save dialog. + // item.setSavePath('/tmp/save.pdf') + let receivedBytes = 0; + item.on('updated', (event, state) => { + if (state === 'interrupted') { + console.log('Download is interrupted but can be resumed'); + mainWindow.webContents.send('dl-received', state); + } else if (state === 'progressing') { + if (item.isPaused()) { + console.log('Download is paused'); + mainWindow.webContents.send('dl-received', 'paused'); + } else { + const newReceivedBytes = item.getReceivedBytes(); + const totalBytes = item.getTotalBytes(); + if (newReceivedBytes - receivedBytes < 250000) return; + receivedBytes = newReceivedBytes; + mainWindow.webContents.send('dl-received', receivedBytes, totalBytes); + } + } + }); + item.once('done', (event, state) => { + if (state === 'completed') { + console.log('Download successful'); + } else { + console.log(`Download failed: ${state}`); + } + mainWindow.webContents.send('dl-received', state); + }); + }); +} + +// Get the launch file path +function processLaunchFilePath (arg) { + console.log('Scanning for launch file path...'); + var openFilePath = null; + if (arg && arg.length >= 2) { + for (var i = 0; i < arg.length; i++) { + console.log('Arg ' + i + ': ' + arg[i]); + if (/\.zim(?:\w\w)?$/i.test(arg[i])) { + openFilePath = arg[i]; + break; + } + } + console.log('Launch file path: ' + openFilePath); + } + return openFilePath; +} + +// Prevent launching multiple instances for now (they are not isolated) +// Code from https://stackoverflow.com/a/73669484/9727685 +// Behaviour on second instance for parent process +const gotSingleInstanceLock = app.requestSingleInstanceLock(); +if (!gotSingleInstanceLock) { + app.quit(); // Quits the app if app.requestSingleInstanceLock() returns false +} else { + app.on('second-instance', (_, argv) => { + // User requested a second instance of the app. + // argv has the process.argv arguments of the second instance. + if (app.hasSingleInstanceLock()) { + if (mainWindow) { + if (mainWindow.isMinimized()) { + mainWindow.restore(); + } + mainWindow.focus(); + const launchFilePath = processLaunchFilePath(argv); + mainWindow.webContents.send('get-launch-file-path', launchFilePath); + } + } + }); +} + +app.whenReady().then(() => { + // Create the new window + createWindow(); + registerListeners(); + + var appName = app.getName(); + console.log('App name: ' + appName); + + // Send message to renderer if update is available + autoUpdater.on('update-downloaded', function (info) { + mainWindow.webContents.send('update-available', info); + }); + + app.on('activate', function () { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }); + + mainWindow.webContents.on('did-finish-load', () => { + const launchFilePath = processLaunchFilePath(process.argv); + mainWindow.webContents.send('get-launch-file-path', launchFilePath); + }); +}); + +// Quit when all windows are closed. +app.on('window-all-closed', function () { + // On macOS it is common for applications and their menu bar + // to stay active until the user quits explicitly with Cmd + Q + if (process.platform !== 'darwin') app.quit(); +}); diff --git a/dist/manifest.json b/dist/manifest.json new file mode 100644 index 000000000..a4f143bc8 --- /dev/null +++ b/dist/manifest.json @@ -0,0 +1,61 @@ +{ + "dir": "ltr", + "lang": "en-GB", + "name": "Kiwix JS PWA Edition", + "display": "standalone", + "display_override": ["window-controls-overlay", "standalone", "browser"], + "edge_side_panel": { + "preferred_width": 496 + }, + "categories": ["reference", "books", "education"], + "iarc_rating_id": "3596f0d9-387e-4d64-a165-5fef16a6c8e3", + "start_url": ".", + "short_name": "Kiwix PWA", + "theme_color": "#2F4F4F", + "description": "Kiwix is an offline reader for content from Wikipedia, Project Gutenberg, TED Talks, Wikivoyage, Stackexchange, and many other Web archives. It makes knowledge available to people with limited or no Internet access.", + "background_color": "#000", + "related_applications": [ + { + "platform": "windows", + "url": "https://www.microsoft.com/store/apps/9P8SLZ4J979J", + "id": "9P8SLZ4J979J" + } + ], + "prefer_related_applications": false, + "icons": [ + { + "src": "www/img/icons/kiwix-48.png", + "sizes": "48x48", + "type": "image/png" + }, + { + "src": "www/img/icons/kiwix-64.ico", + "sizes": "64x64", + "type": "image/ico" + }, + { + "src": "www/img/icons/kiwix-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "www/img/icons/kiwix-256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "www/img/icons/kiwix-512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "file_handlers": [ + { + "action": "www/index.html", + "accept": { + "application/octet-stream": [ ".zim" ] + }, + "launch_type": "single-client" + } + ] +} diff --git a/dist/package-github.appxmanifest b/dist/package-github.appxmanifest new file mode 100644 index 000000000..de1f28ffe --- /dev/null +++ b/dist/package-github.appxmanifest @@ -0,0 +1,57 @@ + + + + + + Kiwix JS + Kiwix + images\storelogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ZIM Archive + images\Kiwix_midnightblue_icon_transparent_530.png + Compressed ZIM FIle Archive + + .zim + .zimaa + + + + + + + + + + diff --git a/dist/package.appxmanifest b/dist/package.appxmanifest new file mode 100644 index 000000000..df73e87c5 --- /dev/null +++ b/dist/package.appxmanifest @@ -0,0 +1,57 @@ + + + + + + Kiwix JS + Kiwix + images\storelogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ZIM Archive + images\Kiwix_midnightblue_icon_transparent_530.png + Compressed ZIM FIle Archive + + .zim + .zimaa + + + + + + + + + + diff --git a/dist/package.json b/dist/package.json new file mode 100644 index 000000000..39a6abb18 --- /dev/null +++ b/dist/package.json @@ -0,0 +1,182 @@ +{ + "name": "kiwix-js-electron", + "productName": "Kiwix JS Electron", + "version": "2.7.41-E", + "description": "Kiwix JS offline ZIM archive reader packaged for the Electron framework", + "main": "main.cjs", + "type": "module", + "build": { + "appId": "kiwix.js.electron", + "productName": "Kiwix JS Electron", + "directories": { + "output": "bld/Electron", + "buildResources": "../electron_icons" + }, + "win": { + "signingHashAlgorithms": [ + "sha256" + ], + "asar": "true", + "extraResources": { + "from": "archives", + "to": "archives" + }, + "fileAssociations": [ + { + "ext": "zim", + "name": "ZIM Archive" + }, + { + "ext": "zimaa", + "name": "ZIM Archive" + } + ], + "publish": [ + "github" + ], + "target": [ + { + "target": "NSIS", + "arch": "ia32" + }, + { + "target": "portable", + "arch": "ia32" + }, + { + "target": "appx" + } + ] + }, + "linux": { + "asar": "false", + "extraResources": { + "from": "archives", + "to": "app/archives" + }, + "fileAssociations": [ + { + "ext": "zim", + "name": "ZIM Archive", + "mimeType": "application/x-openzim" + }, + { + "ext": "zimaa", + "name": "ZIM Archive", + "mimeType": "application/x-openzim" + } + ], + "publish": [ + "github" + ], + "target": [ + { + "target": "AppImage", + "arch": [ + "x64" + ] + }, + { + "target": "deb", + "arch": [ + "x64" + ] + }, + { + "target": "rpm", + "arch": [ + "x64" + ] + } + ], + "category": "Education" + }, + "nsis": { + "oneClick": "false", + "allowElevation": "true", + "runAfterFinish": "true" + }, + "appx": { + "backgroundColor": "transparent", + "displayName": "Kiwix JS", + "identityName": "Kiwix.KiwixJS", + "publisher": "CN=Association Kiwix, O=Association Kiwix, L=Lausanne, C=CH", + "publisherDisplayName": "Association Kiwix", + "languages": "en-GB", + "showNameOnTiles": "true" + }, + "files": [ + "service-worker.js", + "index.html", + "CHANGELOG.md", + "LICENCE", + "manifest.json", + "www/**", + "preload.cjs", + "main.cjs", + "!**/*.dev.{js,wasm}" + ] + }, + "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": "del-cli dist", + "start": "electron .", + "dist-win": "electron-builder build --win --projectDir dist", + "dist-win-nsis": "electron-builder build --win NSIS:x64 NSIS:ia32 --projectDir dist", + "dist-linux": "electron-builder build --linux --projectDir dist", + "dist-linux-appimage": "electron-builder build --linux AppImage:x64 --projectDir dist", + "publish": "electron-builder --projectDir dist", + "postpackage-win": "(robocopy archives bld\\Electron\\kiwix-js-pwa-win32-ia32\\resources\\app\\archives\\ > null) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0", + "postpackage-linux": "(robocopy archives bld\\Electron\\kiwix-js-pwa-linux-x64\\archives\\ > null) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0" + }, + "repository": "https://github.com/kiwix/kiwix-js-pwa", + "keywords": [ + "Kiwix", + "offline", + "Wikipedia", + "ZIM", + "reader" + ], + "author": { + "name": "Kiwix", + "email": "kiwix@kiwix.org" + }, + "maintainer": "Jaifroid", + "license": "CC0-1.0", + "devDependencies": { + "@babel/cli": "^7.21.5", + "@babel/core": "^7.21.5", + "@babel/preset-env": "^7.21.5", + "@rollup/plugin-babel": "^6.0.4", + "@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", + "electron": "22.3.25", + "electron-builder": "^24.6.2", + "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", + "rollup": "^3.21.3", + "rollup-plugin-copy": "^3.4.0", + "vite": "^4.3.4" + }, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "core-js": "3.30.2", + "electron-context-menu": "^3.1.1", + "electron-updater": "^6.1.0" + } +} diff --git a/dist/preload.cjs b/dist/preload.cjs new file mode 100644 index 000000000..f0173d45c --- /dev/null +++ b/dist/preload.cjs @@ -0,0 +1,61 @@ +// All of the Node.js APIs are available in the preload process. +// It has the same sandbox as a Chrome extension. + +'use strict'; + +// A regular expression that matches the hash of the Kiwix publisher on the Microsoft Store (CN=0A5438F5-EEA6-4300-9B77-E45BBD148885) +// If the app is installed from the Store rather than from the signed GitHub release, we need to disable update checking +const regexpInstalledFromMicrosoftStore = /_mc3511b08yc0e/; +console.log('[Preload] Is app installed from Microsoft Store? ' + (process.windowsStore && regexpInstalledFromMicrosoftStore.test(window.location.pathname) ? 'Yes' : 'No')); +console.log('Window location: ' + window.location.pathname + '\nStore publisher hash: ' + regexpInstalledFromMicrosoftStore); + +// DEV: TO SUPPORT ELECTRON ^12 YOU WILL NEED THIS +const { ipcRenderer, contextBridge } = require('electron'); +const { open, read, close, stat, readdir } = require('fs'); + +console.log('Inserting required Electron functions into DOM...'); + +// DEV: FOR ELECTRON ^12 DO IT THIS WAY: +contextBridge.exposeInMainWorld('fs', { + open: open, + read: read, + readdir: readdir, + close: close, + stat: stat +}); +// Exposed events and Event callback for electronAPI (you can add events to listen to, so long as main.js sends a message with name of the event) +contextBridge.exposeInMainWorld('electronAPI', { + checkForUpdates: function () { + ipcRenderer.send('check-updates'); + }, + isMicrosoftStoreApp: process.windowsStore && regexpInstalledFromMicrosoftStore.test(window.location.pathname), + on: function (event, callback) { + ipcRenderer.on(event, function (_, data1, data2) { + callback(data1, data2); + }); + } +}); + +// Adapted from: https://stackoverflow.com/questions/69717365/using-electron-save-dialog-in-renderer-with-context-isolation +contextBridge.exposeInMainWorld('dialog', { + openFile: function () { + ipcRenderer.send('file-dialog'); // adjust naming for your project + }, + openDirectory: function () { + ipcRenderer.send('dir-dialog'); // adjust naming for your project + }, + // Provide an easier way to listen to events + on: function (channel, callback) { + ipcRenderer.on(channel, function (_, data) { + callback(data); + }); + } +}); + +// window.Buffer = Buffer; + +// console.log(win.session.cookies); + +// win.session.cookies.get({}, (error, cookies) => { +// console.log(cookies); +// }); diff --git a/dist/service-worker.js b/dist/service-worker.js new file mode 100644 index 000000000..d76533d95 --- /dev/null +++ b/dist/service-worker.js @@ -0,0 +1,519 @@ +/** + * 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 + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ +'use strict'; + +/** + * 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 = '2.7.41'; + +/** + * 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 cache.js. Note this is interoperable with Kiwix 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 = 'kiwix-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 Boolean that governs whether images are displayed + * app.js can alter this variable via messaging + */ +let imageDisplay; + +// Kiwix ZIM Archive Download Server and release update server in regex form +// DEV: The server URL is defined in init.js, but is not available to us in SW +const regexpKiwixDownloadLinks = /download\.kiwix\.org|api\.github\.com/i; + +/** + * 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} + */ +const regexpCachedContentTypes = /text\/css|\/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} + */ +const 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 = /(?:^|\/)([^/]+\/)([-ABCHIJMUVWX])\/(.+)/; + +/** + * 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 + */ +let 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", + "www/favicon.ico", + "www/-/mw/ext.cite.styles.css", + "www/-/mw/ext.cite.ux-enhancements.css", + "www/-/mw/ext.math.scripts.css", + "www/-/mw/ext.math.styles.css", + "www/-/mw/ext.kartographer.frame.css", + "www/-/mw/ext.kartographer.link.css", + "www/-/mw/ext.kartographer.style.css", + "www/-/mw/ext.scribunto.logs.css", + "www/-/mw/ext.tmh.thumbnail.styles.css", + "www/-/mw/inserted_style.css", + "www/-/mw/inserted_style_mobile.css", + "www/-/mw/mediawiki.page.gallery.styles.css", + "www/-/mw/mobile.css", + "www/-/mw/mw.MediaWikiPlayer.loader.css", + "www/-/mw/mw.PopUpMediaTransform.css", + "www/-/mw/mw.TMHGalleryHook.js.css", + "www/-/mw/newstyle_main_page.css", + "www/-/mw/style.css", + "www/-/s/css_modules/content.parsoid.css", + "www/-/s/css_modules/ext.cite.a11y.css", + "www/-/s/css_modules/ext.cite.styles.css", + "www/-/s/css_modules/ext.cite.ux-enhancements.css", + "www/-/s/css_modules/ext.inputBox.styles.css", + "www/-/s/css_modules/ext.kartographer.frame.css", + "www/-/s/css_modules/ext.kartographer.link.css", + "www/-/s/css_modules/ext.kartographer.style.css", + "www/-/s/css_modules/inserted_style.css", + "www/-/s/css_modules/inserted_style_mobile.css", + "www/-/s/css_modules/mobile.css", + "www/-/s/css_modules/style.css", + "www/-/style.css", + "www/-/s/style.css", + "www/-/s/style-dark.css", + "www/-/s/style-dark-invert.css", + "www/-/s/style-mobile.css", + "www/-/s/vector.css", + "www/I/COVID-19_lifecycle.jpg", + "www/I/s/Icon_External_Link.png", + "www/I/s/Icons-mini-file_acrobat.gif", + "www/css/app.css", + "www/css/bootstrap.min.css", + "www/fonts/glyphicons-halflings-regular.woff2", + "www/img/icons/kiwix-256.png", + "www/img/icons/kiwix-192.png", + "www/img/icons/kiwix-32.png", + "www/img/icons/kiwix-60.png", + "www/img/icons/kiwix-blue-32.png", + "www/img/icons/kiwix-midnightblue-90.png", + "www/img/icons/wikimed-blue-32.png", + "www/img/icons/wikimed-lightblue-32.png", + "www/img/icons/wikivoyage-90-white.png", + "www/img/icons/wikivoyage-black-32.png", + "www/img/icons/wikivoyage-white-32.png", + "www/img/icons/map_marker-30px.png", + "www/img/icons/map_marker-18px.png", + "www/img/spinner.gif", + "www/index.html", + "www/article.html", + "www/js/bundle.js", + "www/js/init.js", + "www/js/darkreader.min.js", // Don't move this or below to prevent them being deleted by the build process + "www/js/webpHeroBundle_0.0.0-dev.27.js", + "www/js/katex/katex.min.js", + "www/js/katex/katex.min.css", + "www/js/katex/contrib/auto-render.min.js", + "www/js/katex/contrib/copy-tex.min.js", + "www/js/katex/contrib/mathtex-script-type.min.js", + "www/js/katex/contrib/mhchem.min.js", + "www/js/katex/contrib/render-a11y-string.min.js", + "www/js/katex/fonts/KaTeX_AMS-Regular.woff2", + "www/js/katex/fonts/KaTeX_Main-Bold.woff2", + "www/js/katex/fonts/KaTeX_Main-Regular.woff2", + "www/js/katex/fonts/KaTeX_Math-Italic.woff2", + "www/js/katex/fonts/KaTeX_Size1-Regular.woff2", + "www/js/katex/fonts/KaTeX_Size2-Regular.woff2", + "www/js/katex/fonts/KaTeX_Size3-Regular.woff2", + "www/js/katex/fonts/KaTeX_Size4-Regular.woff2" +]; + +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" + ); +} + +// 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); + } + })); + }) + ); +}); + +let outgoingMessagePort = null; +let fetchCaptureEnabled = false; + +/** + * Intercept selected Fetch requests from the browser window + */ +self.addEventListener('fetch', function (event) { + // Only handle GET or POST requests (POST is intended to handle video in Zimit ZIMs) + if (!/GET|POST/.test(event.request.method)) return; + var rqUrl = event.request.url; + var urlObject = new URL(rqUrl); + // Test the URL with parameters removed + var strippedUrl = urlObject.pathname; + // Test if we're in an Electron app + // DEV: Electron uses the file:// protocol and hacks it to work with SW, but it has CORS issues when using the Fetch API to fetch local files, + // so we must bypass it here if we're fetching a local file + if (/^file:/i.test(rqUrl) && !(regexpZIMUrlWithNamespace.test(strippedUrl) && /\.zim\//i.test(strippedUrl))) return; + // Don't cache download links + if (regexpKiwixDownloadLinks.test(rqUrl)) return; + // 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. + // @TODO DEV: This isn't true for Zimit ZIM types! So we will have to send the zimType from app.js + 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) + // YouTube links from Zimit archives are dealt with specially + if (/youtubei.*player/.test(strippedUrl) || cache === ASSETS_CACHE && regexpZIMUrlWithNamespace.test(strippedUrl)) { + let range = event.request.headers.get('range'); + if (imageDisplay !== 'all' && /\/.*\.(jpe?g|png|svg|gif|webp)(?=.*?kiwix-display)/i.test(rqUrl)) { + // If the user has disabled the display of images, and the browser wants an image, respond with empty SVG + // A URL without "?kiwix-display" query string acts as a passthrough so that the regex will not match and + // the image will be fetched by app.js + // DEV: If you need to hide more image types, add them to regex below and also edit equivalent regex in app.js + var svgResponse; + if (imageDisplay === 'manual') + svgResponse = ""; + else + svgResponse = ""; + return new Response(svgResponse, { + headers: { + 'Content-Type': 'image/svg+xml' + } + }); + } + return fetchUrlFromZIM(urlObject, range).then(function (response) { + // DEV: This is now done in app.js + // 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 ? partsOfZIMUrl[1] : ''; + var nameSpace = partsOfZIMUrl ? partsOfZIMUrl[2]: ''; + var title = partsOfZIMUrl ? partsOfZIMUrl[3] : barePathname; + var anchorTarget = urlObject.hash.replace(/^#/, ''); + var uriComponent = urlObject.search.replace(/\?kiwix-display/, ''); + 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; + // Set the imageDisplay variable if it has been sent in the event data + imageDisplay = typeof msgPortEvent.data.imageDisplay !== 'undefined' ? + msgPortEvent.data.imageDisplay : imageDisplay; + var headers = new Headers(); + if (contentLength) headers.set('Content-Length', contentLength); + // Prevent CORS issues in PWAs - not needed and insecure! + // headers.set('Access-Control-Allow-Origin', '*'); + // 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: bingmaps: https://pwa.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. + let partsOfRangeHeader = regexpByteRangeHeader.exec(range); + let begin = partsOfRangeHeader[1]; + let 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: 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, + 'search': uriComponent, + 'anchorTarget': anchorTarget + }, [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('disabled'); + return caches.open(cache).then(function (cacheObj) { + return cacheObj.match(requestUrl).then(function (matching) { + if (!matching || matching.status === 404) return Promise.reject('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) { + var reqKey = request.url || request; + console.debug('[SW] Adding ' + reqKey + ' to ' + cache + '...'); + return cacheObj.put(reqKey, 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/-/mw/content.parsoid.css b/dist/www/-/mw/content.parsoid.css new file mode 100644 index 000000000..67e1d1dc1 --- /dev/null +++ b/dist/www/-/mw/content.parsoid.css @@ -0,0 +1,153 @@ +/** + * Style Parsoid HTML+RDFa output consistent with wikitext from PHP parser. + * Source here :; https://github.com/voidlinux/void-wiki/blob/master/resources/src/mediawiki.skinning/content.parsoid.less + * converted from less to css + */ +/*csslint regex-selectors:false */ +/* + * Auto-numbered external links + * Parsoid renders those as link without content, and lets CSS do the + * counting. This way the counting style can be customized, and counts update + * automatically when content is modified. + */ +.mw-body-content { + counter-reset: mw-numbered-ext-link; +} +.mw-body-content a[rel~='mw:ExtLink']:empty:after { + content: '[' counter(mw-numbered-ext-link) ']'; + counter-increment: mw-numbered-ext-link; +} +/** + * References + * + * Parser and Extension:Cite output reference numbers for [1] for tags. + * + * Markup: + * Cake is good[2] + * The cake is a lie[1] + * + * Styleguide 1.1. + */ +span.reference { + font-size: 80%; + line-height: 1; + vertical-align: super; + unicode-bidi: -moz-isolate; + unicode-bidi: isolate; +} +sup, +sub { + line-height: 1; +} +/** + * Block media items + */ +figure[typeof*='mw:Image'], +figure[typeof*='mw:Video'], +figure[typeof*='mw:Audio'] { + margin: 0; +} +figure[typeof*='mw:Image'] a, +figure[typeof*='mw:Video'] a, +figure[typeof*='mw:Audio'] a { + border: 0; +} +figure[typeof*='mw:Image'].mw-halign-right, +figure[typeof*='mw:Video'].mw-halign-right, +figure[typeof*='mw:Audio'].mw-halign-right { + /* @noflip */ + margin: 0.5em 0 1.3em 1.4em; + /* @noflip */ + clear: right; + /* @noflip */ + float: right; +} +figure[typeof*='mw:Image'].mw-halign-left, +figure[typeof*='mw:Video'].mw-halign-left, +figure[typeof*='mw:Audio'].mw-halign-left { + /* @noflip */ + margin: 0.5em 1.4em 1.3em 0; + /* @noflip */ + clear: left; + /* @noflip */ + float: left; +} +figure[typeof*='mw:Image'].mw-halign-none, +figure[typeof*='mw:Video'].mw-halign-none, +figure[typeof*='mw:Audio'].mw-halign-none { + margin: 0; + clear: none; + float: none; +} +figure[typeof*='mw:Image'].mw-halign-center, +figure[typeof*='mw:Video'].mw-halign-center, +figure[typeof*='mw:Audio'].mw-halign-center { + margin: 0 auto 0.5em auto; + display: table; + clear: none; + float: none; +} +figure[typeof*='mw:Image'] > figcaption, +figure[typeof*='mw:Video'] > figcaption, +figure[typeof*='mw:Audio'] > figcaption { + display: table-caption; + caption-side: bottom; + /* In mw-core the font-size is duplicated, 94% in thumbiner + * and again 94% in thumbcaption. 88.4% for font size of the + * caption results in the same behavior. */ + font-size: 88.4%; + line-height: 1.4em; + text-align: left; + border: 1px solid #c8ccd1; + border-top: 0; + /* taken from .thumbcaption, plus .thumbinner */ + padding: 0 6px 6px 6px; + background-color: #f8f9fa; +} +figure[typeof*='mw:Image'] > figcaption table, +figure[typeof*='mw:Video'] > figcaption table, +figure[typeof*='mw:Audio'] > figcaption table { + /* reset caption side for tables inside figcaptions */ + caption-side: top; +} +figure[typeof~='mw:Image/Thumb'], +figure[typeof~='mw:Video/Thumb'], +figure[typeof~='mw:Audio/Thumb'], +figure[typeof~='mw:Image/Frame'], +figure[typeof~='mw:Video/Frame'], +figure[typeof~='mw:Audio/Frame'] { + display: table; + overflow: auto; + text-align: center; + border: 1px solid #c8ccd1; + border-bottom: 0; + border-collapse: collapse; + background-color: #f8f9fa; + margin: 0.5em 0 1.3em 1.4em; + clear: right; + float: right; +} +figure[typeof~='mw:Image/Thumb'] > *:first-child > img, +figure[typeof~='mw:Video/Thumb'] > *:first-child > video, +figure[typeof~='mw:Audio/Thumb'] > *:first-child > video, +figure[typeof~='mw:Image/Frame'] > *:first-child > img, +figure[typeof~='mw:Video/Frame'] > *:first-child > video, +figure[typeof~='mw:Audio/Frame'] > *:first-child > video { + border: 1px solid #c8ccd1; + margin: 3px; + background: #fff; +} +/* Same as img.thumbborder in content.css */ +.mw-image-border > *:first-child > img, +.mw-image-border > *:first-child > video { + border: 1px solid #eaecf0; +} +/* Hide the caption for frameless and plain floated images */ +figure[typeof~='mw:Image/Frameless'] > figcaption, +figure[typeof~='mw:Video/Frameless'] > figcaption, +figure[typeof~='mw:Audio/Frameless'] > figcaption, +figure[typeof~='mw:Image'] > figcaption, +figure[typeof~='mw:Video'] > figcaption, +figure[typeof~='mw:Audio'] > figcaption { + display: none; +} diff --git a/dist/www/-/mw/ext.cite.a11y.css b/dist/www/-/mw/ext.cite.a11y.css new file mode 100644 index 000000000..0d91c6d7a --- /dev/null +++ b/dist/www/-/mw/ext.cite.a11y.css @@ -0,0 +1 @@ +.cite-accessibility-label{top:-99999px;clip:rect( 1px 1px 1px 1px );clip:rect( 1px,1px,1px,1px );position:absolute !important;padding:0 !important;border:0 !important;height:1px !important;width:1px !important;overflow:hidden} \ No newline at end of file diff --git a/dist/www/-/mw/ext.cite.styles.css b/dist/www/-/mw/ext.cite.styles.css new file mode 100644 index 000000000..1cac40764 --- /dev/null +++ b/dist/www/-/mw/ext.cite.styles.css @@ -0,0 +1 @@ +.mw-cite-backlink,.cite-accessibility-label{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mw-references-columns{-webkit-column-width:35em;-moz-column-width:35em;column-width:35em}.mw-references-columns li{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}sup.reference{unicode-bidi:-moz-isolate;unicode-bidi:-webkit-isolate;unicode-bidi:isolate;white-space:nowrap}ol.references li:target,sup.reference:target{background-color:#def;background-color:rgba( 0,127,255,0.133 )}.mw-ext-cite-error{font-weight:bold;unicode-bidi:embed}@media print{.mw-cite-backlink{display:none}} \ No newline at end of file diff --git a/dist/www/-/mw/ext.cite.ux-enhancements.css b/dist/www/-/mw/ext.cite.ux-enhancements.css new file mode 100644 index 000000000..9e64c3980 --- /dev/null +++ b/dist/www/-/mw/ext.cite.ux-enhancements.css @@ -0,0 +1 @@ +.cite-accessibility-label{top:-99999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:absolute !important;padding:0 !important;border:0 !important;height:1px !important;width:1px !important;overflow:hidden}:target .mw-cite-targeted-backlink{font-weight:bold}.mw-cite-up-arrow-backlink{display:none}:target .mw-cite-up-arrow-backlink{display:inline}:target .mw-cite-up-arrow{display:none} \ No newline at end of file diff --git a/dist/www/-/mw/ext.inputBox.styles.css b/dist/www/-/mw/ext.inputBox.styles.css new file mode 100644 index 000000000..5ea750820 --- /dev/null +++ b/dist/www/-/mw/ext.inputBox.styles.css @@ -0,0 +1 @@ +.mw-inputbox-centered{margin-left:auto;margin-right:auto;text-align:center}.mw-inputbox-inline{display:inline}.mw-inputbox-element{display:inline-table !important;white-space:nowrap}.mw-inputbox-input{margin-bottom:0.5em} \ No newline at end of file diff --git a/dist/www/-/mw/ext.kartographer.frame.css b/dist/www/-/mw/ext.kartographer.frame.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/mw/ext.kartographer.frame.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/mw/ext.kartographer.link.css b/dist/www/-/mw/ext.kartographer.link.css new file mode 100644 index 000000000..b4f207616 --- /dev/null +++ b/dist/www/-/mw/ext.kartographer.link.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ diff --git a/dist/www/-/mw/ext.kartographer.style.css b/dist/www/-/mw/ext.kartographer.style.css new file mode 100644 index 000000000..d999f3d15 --- /dev/null +++ b/dist/www/-/mw/ext.kartographer.style.css @@ -0,0 +1,560 @@ +/** + * CSS Classes Definitions + * + * .mw-kartographer-maplink: + * Represents a element as output by the Parser. + * May or may not be an interactive link yet (meanwhile JS gets loaded). + * + * .mw-kartographer-map + * Represents a element as output by the Parser. + * May or may not be an interactive map yet (meanwhile JS gets loaded) + * + * .mw-kartographer-link + * Represents an interactive map link. + * The class is added when the element becomes an interactive link. + * May or may not be a or (if created via Developer API) + * + * .mw-kartographer-interactive + * Represents an interactive map. + * The class is added when the element becomes an interactive map. + * + * .mw-kartographer-mapDialog-map + * Represents an interactive map within a full screen map dialog. + * + * .mw-kartographer-static + * Represents an interactive map that was made static afterward because the + * viewport is too small. + * + * In practice: + * + * - will have .mw-kartographer-maplink first, + * .mw-kartographer-link then. + * + * - will have .mw-kartographer-map first, + * .mw-kartographer-link then, if displaying static snapshot. + * .mw-kartographer-interactive then, if directly interactive. + */ +.mw-kartographer-mapDialog-map { + position: absolute; + top: 0; + bottom: 4.11em; + left: 0; + right: 0; + z-index: 1; +} +.mw-kartographer-error { + display: inline-block; + background: #ffc0cb; +} +.mw-kartographer-static .leaflet-control-container .leaflet-top .leaflet-control { + display: none; +} +.mw-kartographer-static .leaflet-control-container .leaflet-top .leaflet-control-static { + display: block; +} +.mw-kartographer-static .leaflet-clickable { + pointer-events: none; +} +.mw-kartographer-static.leaflet-container { + cursor: default; +} +.mw-kartographer-map { + position: relative; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + display: block; + font-size: 14px; +} +.mw-kartographer-map.mw-kartographer-link { + display: block; +} +.mw-kartographer-map.leaflet-container { + background-size: contain; +} +.mw-kartographer-fullScreen { + position: absolute; + top: 10px; + right: 10px; + margin-right: 0; +} +.mw-kartographer-container:not(.mw-kartographer-full) { + max-width: 100%; + /* Fixes `align=center` use case */ +} +.mw-kartographer-container:not(.mw-kartographer-full).center { + margin-left: auto; + margin-right: auto; + display: block; +} +.mw-kartographer-container:not(.mw-kartographer-full).thumb .thumbinner { + max-width: 100%; +} +.mw-kartographer-container:not(.mw-kartographer-full).thumb .thumbinner > .mw-kartographer-map { + width: 100%; +} +.mw-kartographer-container.mw-kartographer-full { + width: 100%; +} +/* @noflip */ +a.floatright { + float: right; + clear: right; + margin: 0 0 1em 1em; +} +/* @noflip */ +a.floatleft { + float: left; + clear: left; + margin: 0.3em 0.5em 0.5em 0; +} + +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-disable no-descending-specificity */ +.mw-kartographer-link, +.mw-kartographer-maplink { + cursor: pointer; +} +.mw-kartographer-maplink:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ), +a.mw-kartographer-link:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ) { + /** + * These two files were copied from OOjs UI repository after the build process + * generated the progressive icons. + * + * See ./images/COPYING + * + * The master version of the icon is at: + * https://github.com/wikimedia/oojs-ui/blob/master/src/themes/mediawiki/images/icons/mapPin.svg + */ + background-image: url(/w/extensions/Kartographer/styles/images/mapPin-progressive.png?eaddd); + background-image: linear-gradient(transparent, transparent), url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%2336c%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M19%2012c0-3.9-3.1-7-7-7s-7%203.1-7%207c0%201.4.4%202.6%201.1%203.7L12%2023l5.9-7.3c.7-1.1%201.1-2.3%201.1-3.7zm-7%203c-1.6%200-3-1.4-3-3s1.4-3%203-3%203%201.4%203%203-1.4%203-3%203z%22%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent, transparent), url(/w/extensions/Kartographer/styles/images/mapPin-progressive.png?eaddd); + background-position: left -3px; + background-repeat: no-repeat; + background-size: 18px 18px; + padding-left: 19px; + margin-left: 2px; +} +.mw-kartographer-maplink.no-icon, +a.mw-kartographer-link.no-icon { + background: none; + padding-left: 0; + margin-left: 0; +} +.skin-minerva a.mw-kartographer-link:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ), +.skin-minerva .mw-kartographer-maplink:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ) { + background-size: 20px 20px; + padding-left: 20px; +} +.skin-minerva a.mw-kartographer-link.no-icon, +.skin-minerva .mw-kartographer-maplink.no-icon { + background: none; + padding-left: 0; + margin-left: 0; +} +.mw-kartographer-map .mw-kartographer-fullScreen .oo-ui-iconElement > .oo-ui-buttonElement-button { + font-size: 0.91428571em; + min-width: 2.5em; +} +.mw-kartographer-map .mw-kartographer-fullScreen .oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + left: 0.25em; +} +.mw-kartographer-map:hover .mw-kartographer-fullScreen .oo-ui-buttonElement-button { + background-color: #fff; +} +/** + * Applied only when JS is enabled. + */ +.client-js { + /* stylelint-disable-next-line indentation */ +} +.client-js .mw-kartographer-map { + cursor: pointer; +} +/*.client-js .mw-kartographer-maplink:not( .mw-kartographer-link ):not( .ve-ce-focusableNode ), +.client-js .mw-kartographer-map:not( .mw-kartographer-link ):not( .mw-kartographer-interactive ) { + pointer-events: none; + cursor: default; +}*/ +/** + * If `$wgKartographerUseMarkerStyle = true`. + */ +a.mw-kartographer-autostyled { + color: #fff; + display: inline-block; + position: relative; + top: -0.08em; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0.85em; + margin-left: 0; + border-radius: 1px; + padding: 0.24em 0.42em; + font-size: 0.85em; + font-weight: bold; + line-height: 1; + text-align: center; + vertical-align: middle; +} +a.mw-kartographer-autostyled:visited { + color: #fff; +} + +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* + Anyone who changes the width of the sidebar should + update Kartographer.Dialog.DialogClass `SIDEBAR_WIDTH` accordingly +*/ +/* Dialog footer */ +.mw-kartographer-mapDialog-foot { + /* + Anyone who changes the height of the footer should + update Kartographer.Dialog.DialogClass `FOOTER_HEIGHT` accordingly + */ + padding: 1em; + height: 4.5em; + background-color: #ffffff; + border-top: 1px solid #a2a9b1; +} +.mw-kartographer-captionfoot { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 20px; + line-height: 31px; +} +.mw-kartographer-buttonfoot { + float: right; + margin-left: 1em; +} +/* Dialog Sidebar */ +.mw-kartographer-mapDialog-sidebar { + position: absolute; + right: 0; + top: 0; + bottom: 4.5em; + z-index: 2; + border-left: 1px solid #a2a9b1; + /* + Anyone who changes the width of the sidebar should + update Kartographer.Dialog.DialogClass `SIDEBAR_WIDTH` accordingly + */ + width: 321px; + /* 320+1 so border is hidden on common 320px wide mobile devices */ + box-sizing: border-box; + background-color: #fff; + padding: 3em 2em 1em; + overflow-y: scroll; + /* For MobileFrontend */ +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-closeButton { + position: absolute; + top: 10px; + right: 10px; + margin-right: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-closeButton .oo-ui-buttonElement-button { + border: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-collapseButton { + position: absolute; + top: 10px; + right: 44px; + margin-right: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-collapseButton .oo-ui-buttonElement-button { + border: 0; +} +.skin-minerva .mw-kartographer-mapDialog-sidebar h2 { + margin-bottom: 0.6em; +} +.mw-kartographer-mapdetails-table { + width: 100%; + border-collapse: collapse; +} +.mw-kartographer-mapdetails-table tr { + background-color: #eaecf0; + text-align: center; +} +.mw-kartographer-mapdetails-table th { + text-align: left; +} +.mw-kartographer-mapdetails-table th, +.mw-kartographer-mapdetails-table td { + padding: 0.5em 1em; + font-size: 90%; +} +.mw-kartographer-mapdetails-table thead tr { + background-color: #c8ccd1; +} +.mw-kartographer-mapdetails-table thead tr th { + font-weight: bold; +} +.mw-kartographer-mapdetails-table tbody tr th:first-child { + width: 70%; + text-align: left; +} +.mw-kartographer-mapdetails-table tbody tr:nth-child( even ) { + background-color: #ffffff; +} +.mw-kartographer-externalservices .mw-kartographer-mapdetails-table tbody tr.featured { + background-color: #fef6e7; + border-bottom: 1px solid #ffcc33; +} +.mw-kartographer-externalservices .mw-kartographer-mapdetails-table tbody tr th { + font-weight: normal; +} +.mw-kartographer-description, +.mw-kartographer-mapdetails { + margin-bottom: 1.5em; +} +.mw-kartographer-mapdetails .geo { + white-space: nowrap; +} +.mw-kartographer-filterservices { + margin-bottom: 1em; +} +.kartographer-mapDialog-loading { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 4.5em; + background-image: url(data:image/gif;base64,R0lGODlhQABAAPIEALOzs05OTouLixoaGkxMTAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAEACwAAAAAQABAAAAD/0i63P4wyknrGnjYzW3OXSgyHzaeXamhaOAGkRoBNMBC7wvJT13fjpxrV4L4aMCGcOjgNY7IJGP5cDKgUiW1YVVAbdnp9lK8YsNiIbe8+KK1avLHfHzDcyQ2wc3SRZYwCk58RlF/cQ9jBHNtdYU+EoCBd0wSZ0+EiZKTC3gVkJhfYDibnFmiP5GlpiyoqRSrSa6jG5uyoieSt5e5iK2OSX67dsTFxsfICgLLzM3NdrOvztPOaNGg1NkC1tdR2tTc3crf1WHdhuTM0NfJ7e7v8BHqUq9A07v1I9n4oCLa/P02kAMIbEK6U7MMfluHSsLCULQs5dvTUB44B7weTaSYsVTBPY2GONLq2Cjgg3kgDV3KhDHkiEy8WL6BWVCmuYw4SdLLadImwZYmRW4EQrJowZ1HvSQV6pLoUqYpww3VqfNX05JDRcZTGnRrVK8UqoKlE3EsvAQAIfkEBQoABAAsBQABACwAMAAAA5dIutzOIYZHq21S3s1Vjl1YfZNoQl81rMP5kBTLulj6yCuNZjfe6h5bwwdcwIbEIuG48P2UTIVTGeQ1k9TodCHo0phbRXcscFmluAaZTMWK1+yizAFfUyt1+/2RH+8pfX+AdYJ4eoWDZYiLjI2Oj5CRkpOUlZaXlgCakpqdAI+eno6hooukoYinqIWqnYytn6+noKuQrpIJACH5BAUKAAQALAEABQA6AB4AAAOLSLrc8qLJKYMNNFMItSfX9X3cM2ahdWqluTKp+m7lvMQ2Xc8xlk+tyKr303FexCKwdUoqJcEm7rncaZyTgfbH9Eyz2nCue02Bw+JxZxSSoN8D6hP+lv/odbsNn9bv8X5FgIF3eYSCW4eKi4yNOQCQkZKSjhOTl5OVDZicAJoMnZifC6GXo6SlkKcKCQAh+QQFCgAEACwFAAEAOgAiAAADiki63M4iikervVRKzDvXkSeOEEieHjihrKW28PPGtDLX8Y23+o72PhIwKBoSO0YWYPkznQLQxnIKOGme0CyDSj06suDAltv1hsNj8vR4RqfVTFzb7YCvaXPtxV7Le+B9bSRkgWAtd4VeiouMjY4kA5GSk5OPDJSYlJYKmZ0DmwSemaCimKChpZEECQAh+QQFCgAEACwPAAUAMAAsAAADjEiwQP4wyieqmJgxzKO1HaQtYfhVpTOSqXSi7dq656zINvFe9trMu9xtZAsKfS3jEVdSLommlzDC5EinImjnin1okqCueEwum8/otHrNbrvf8LicEKjb7/c2fo9n8/8BfoB7goN5hYZziouMLQOPjQSPkwOMlJSKl5hympecnZtwoJOfoJmdlp6NpBAJACH5BAUKAAQALB0AAQAeADoAAAOQSLBA/jBKyNi8uC7Mo25d+IWiRnbjmZnqlbbSC1PsTFe2V+fKnsstgdCBmwmPAh4BicwxmbYnNChtUqtJY5W35U6VyyF4TC6bz+i0es1uuzGBeDlOD4zrdSU+n9vj+358M4F0HAOHAxKEdheIiBOBGI6HcH+Nk4mVjJKYYJiZSp+enaOTY6ShqDyqOaytjxwJACH5BAUKAAQALB0ABQAiADoAAAOTSLrc8KDJSReENdf7tGdc933hSJZmFkapirbTCm/vDNa2xeXxzkuXn3BILBqPyKRyyWwqBNCoVDqbWqewq1aQ3Vq7Xio47Cybz+i0et0MuAPH99s2qA8YcvfMbl/k9S18dXh/gYKEeYZ8DX9wJoJ3iHIpkBKNj4eWiSOVmpsenZ5zH6GMnxqlpoCkmUSpP6+wfUYJACH5BAUKAAQALA8ADwAsADAAAAOUSLrc/pCBGauNM4PLrdZd2HyfaJKlyaGp6rGUu7JySNcdiZ/x7v/AoHBILBqPyKRyyWw6BdAndMqcWgXKqzWpvSK73iOY2hiYB74xlnE+/8DlNnoRqAdcWrZ8TrDbZWQKe3x9fndAgwyGhz6JioaIew2LP46PfpVyD5Q7lpd/nZqbkKFtEJylhJOkSqhJrkiwsaA7CQAh+QQFCgAEACwFAB0AOgAeAAADhEi63P7wgUlrjThrYrvdYOiNQGhmpHeuUvqx8OJScW3feK6fQ7/jveDgFxMKiSzjERlSGpkb5xOakQapUasjwA2ABGABTProdjXhcHJaNnszafDYF3Fz0XEx0f7Gx/d2X3k/fCZ5ejmFIYc6ioaDOIEskDaOJ4yVbjWUMZIwnJ1nNmkhCQAh+QQFCgAEACwBAB0AOgAiAAADjUiz3E0wykmrrS67y7vX4OCNZBRqZdqdmepaLPPOdG3feK7fQb8DwFpvGMgBjwAXkWhEHktLJs6J9ESXTeqzcsXqtM5Jd7iTgLeQcbFsPku6bAv47VUJ7oIXVex74fEzaDl/d3E0hHmGfoSKi3+NLoiQdoyTJZKWJJiZHpucHJ6fFqGiFKSlEqeoEY83CQAh+QQFCgAEACwBAA8AMAAsAAADjkiq0/swyklZuzVrevvY4OZ5YSmNpKlaKLaqrfua8by29jvms8z/wKBwCAoYj0gkcZFsJpcEpzQAnTqr1ic2S4V6v+CweEwum8/o9FjAFoAAcMCv3dbE4zw6236X2/R7GX1wM4BuG4N+KoZvgyuMIYmLgCWSJZCVjiGUK5obmCaWGpwvnhmknX2bdTl3BAkAIfkEBQoABAAsBQAFAB4AOgAAA49Iukzzo8k5IaS42pi72o/ngWIHciV1pirJatsrrVlgZ/Rk7wHm6rwd7EIJBmfEopEnUyyPzaewSZBSncvrwqhlTLvgsHhMLpvP6LR6TRG4w+64QCuXX+t2Gb7+2vNZfnFNgXODe3R/LwCLAAqCTYyMYJGLk5SWkZiSXZSNnJefmaGbWp2alaOopaCroqMECQA7); + background-image: url(/w/extensions/Kartographer/styles/images/ajax-loader.gif?b3af8)!ie; + background-position: center center; + background-size: 32px; + background-repeat: no-repeat; +} +.mw-kartographer-mapDialog-sidebar-opened .leaflet-right.leaflet-bottom { + right: 320px; +} + +/* == Attribution control == */ +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* Static snapshot */ +.mw-kartographer-attribution { + position: absolute; + right: 0; + bottom: 0; + margin: 0; + padding: 0 5px; + box-shadow: none; +} +/* Static + Interactive */ +.mw-kartographer-attribution, +.leaflet-right.leaflet-bottom { + background-color: rgba(255, 255, 255, 0.8); + color: #222222; +} +/* Interactive */ +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution { + /** Override initial properties */ + background-color: transparent; + float: none; + clear: none; +} +/* Static + Interactive */ +.mw-kartographer-attribution, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution { + font-size: 10px; + font-family: sans-serif; + line-height: 1.6; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + /* Removes ellipsis on hover */ +} +.mw-kartographer-attribution:hover, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution:hover { + overflow: hidden; + text-overflow: clip; + white-space: normal; +} +.mw-kartographer-attribution a, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution a { + color: #3366cc; +} +/* Static + Interactive */ +.mw-kartographer-map:hover .mw-kartographer-attribution, +.mw-kartographer-interactive:hover .leaflet-right.leaflet-bottom { + background-color: rgba(255, 255, 255, 0.9); +} + +/* == Scale control == */ +/* Scale Line style */ +.leaflet-control-scale.leaflet-control .leaflet-control-scale-line { + background-color: transparent; + padding: 0 5px; + font-size: 10px; + font-family: sans-serif; +} +.leaflet-right.leaflet-bottom { + /** Override initial properties */ +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale { + float: left; + clear: none; + margin: 1px 5px; + line-height: initial; +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line { + /* Scale Line style on hover */ + /** Override initial properties */ +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line:hover { + border-color: #000; + cursor: pointer; +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line:not( :first-child ) { + border: 1px solid #999; + border-color: #000; + border-top: 0; + margin-top: 0; +} + +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* stylelint-disable no-descending-specificity */ +.mw-kartographer-interactive { + z-index: 0; + /* Leaflet Popups */ + /* Leaflet Controls */ +} +.mw-kartographer-interactive.leaflet-container { + font: 14px 'Helvetica Neue', 'Helvetica', 'Nimbus Sans L', 'Arial', 'Liberation Sans', sans-serif; + color: #222222; +} +.mw-kartographer-interactive.leaflet-container .marker-description img { + width: 100%; + height: auto; + margin-bottom: 0; + margin-top: 0.5em; +} +.mw-kartographer-interactive.leaflet-container a { + color: #3366cc; +} +.mw-kartographer-interactive.leaflet-container a:hover { + color: #447ff5; + text-decoration: underline; +} +.mw-kartographer-interactive.leaflet-container a:active { + color: #2a4b8d; +} +.mw-kartographer-interactive.leaflet-container a:focus { + color: #3366cc; +} +.mw-kartographer-interactive.leaflet-container a.new { + color: #ba0000; +} +.mw-kartographer-interactive.leaflet-container a.new:visited { + color: #a55858; +} +.mw-kartographer-interactive .leaflet-popup-content { + padding: 1em; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-title { + text-align: center; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-title > a { + font-weight: bold; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-description { + text-align: center; +} +.mw-kartographer-interactive .leaflet-popup-content-wrapper, +.mw-kartographer-interactive .map-legends, +.mw-kartographer-interactive .map-tooltip { + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-control-layers, +.mw-kartographer-interactive .leaflet-bar { + background-color: #f8f9fa; + border: 0; + box-shadow: none; +} +.mw-kartographer-interactive .leaflet-bar > a, +.mw-kartographer-interactive .leaflet-bar > a:hover { + color: #000; + border: 1px solid #a2a9b1; + border-radius: 2px; + border-bottom: 0; + box-sizing: content-box; +} +.mw-kartographer-interactive .leaflet-bar > a:hover { + border-color: #a2a9b1; + background-color: #ffffff; +} +.mw-kartographer-interactive .leaflet-bar > a:active { + border-color: #72777d; + background-color: #c8ccd1; +} +.mw-kartographer-interactive .leaflet-bar > a:only-of-type { + border-bottom: 1px solid #a2a9b1; + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-bar > a:first-child:not( :only-of-type ) { + border-radius: 2px 2px 0 0; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child { + border-bottom: 1px solid #a2a9b1; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:hover { + border-bottom: 1px solid #a2a9b1; + border-color: #a2a9b1; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:active { + border-bottom: 1px solid #a2a9b1; + border-color: #72777d; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:not( :only-of-type ) { + border-radius: 0 0 2px 2px; +} +.mw-kartographer-interactive .leaflet-bar > a:hover:only-of-type { + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-bar > .oo-ui-icon-close, +.mw-kartographer-interactive .leaflet-bar > .oo-ui-icon-fullScreen { + background-position: center center; +} +.mw-kartographer-interactive .leaflet-control-attribution:after, +.mw-kartographer-interactive .leaflet-control-zoom-in, +.mw-kartographer-interactive .leaflet-control-zoom-out, +.mw-kartographer-interactive .leaflet-popup-close-button, +.mw-kartographer-interactive .leaflet-control-layers-toggle, +.mw-kartographer-interactive .map-tooltip .close, +.mw-kartographer-interactive .leaflet-container.dark .map-tooltip .close, +.mw-kartographer-interactive .mapbox-icon { + opacity: 1; +} \ No newline at end of file diff --git a/dist/www/-/mw/ext.math.scripts.css b/dist/www/-/mw/ext.math.scripts.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/mw/ext.math.scripts.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/mw/ext.math.styles.css b/dist/www/-/mw/ext.math.styles.css new file mode 100644 index 000000000..21272ab21 --- /dev/null +++ b/dist/www/-/mw/ext.math.styles.css @@ -0,0 +1 @@ +@namespace m url(http:/www.w3.org/1998/Math/MathML);.mwe-math-mathml-inline{display:inline !important}.mwe-math-mathml-display{display:block !important;margin-left:auto;margin-right:auto}.mwe-math-mathml-a11y{clip:rect( 1px,1px,1px,1px );overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.mwe-math-fallback-image-inline{display:inline-block;vertical-align:middle}.mwe-math-fallback-image-display{display:block;margin-left:auto !important;margin-right:auto !important}.mwe-math-fallback-source-inline{display:inline;vertical-align:middle}.mwe-math-fallback-source-display{display:block;margin-left:auto;margin-right:auto}img.tex{vertical-align:middle}div.mwe-math-element{overflow-x:auto;max-width:100%} \ No newline at end of file diff --git a/dist/www/-/mw/ext.scribunto.logs.css b/dist/www/-/mw/ext.scribunto.logs.css new file mode 100644 index 000000000..535f0d740 --- /dev/null +++ b/dist/www/-/mw/ext.scribunto.logs.css @@ -0,0 +1 @@ +.scribunto-limitreport-logs{margin:0;white-space:pre-wrap} \ No newline at end of file diff --git a/dist/www/-/mw/ext.timeline.styles.css b/dist/www/-/mw/ext.timeline.styles.css new file mode 100644 index 000000000..2eace9dc3 --- /dev/null +++ b/dist/www/-/mw/ext.timeline.styles.css @@ -0,0 +1 @@ +.timeline-wrapper{max-width:100%;overflow:auto} \ No newline at end of file diff --git a/dist/www/-/mw/ext.tmh.thumbnail.styles.css b/dist/www/-/mw/ext.tmh.thumbnail.styles.css new file mode 100644 index 000000000..ae503a8ec --- /dev/null +++ b/dist/www/-/mw/ext.tmh.thumbnail.styles.css @@ -0,0 +1,2 @@ +.mediaContainer,.PopUpMediaTransform{position:relative;display:block} +.thumb .mediaContainer,.thumb .PopUpMediaTransform{margin:0 auto} \ No newline at end of file diff --git a/dist/www/-/mw/inserted_style.css b/dist/www/-/mw/inserted_style.css new file mode 100644 index 000000000..08b573838 --- /dev/null +++ b/dist/www/-/mw/inserted_style.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * Information from this CSS has been included in + * style-mobile.css to make transforms easier. + */ \ No newline at end of file diff --git a/dist/www/-/mw/inserted_style_mobile.css b/dist/www/-/mw/inserted_style_mobile.css new file mode 100644 index 000000000..08b573838 --- /dev/null +++ b/dist/www/-/mw/inserted_style_mobile.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * Information from this CSS has been included in + * style-mobile.css to make transforms easier. + */ \ No newline at end of file diff --git a/dist/www/-/mw/mediawiki.action.view.redirectPage.css b/dist/www/-/mw/mediawiki.action.view.redirectPage.css new file mode 100644 index 000000000..02232a297 --- /dev/null +++ b/dist/www/-/mw/mediawiki.action.view.redirectPage.css @@ -0,0 +1 @@ +.redirectMsg p{overflow:hidden;height:0}.redirectText{list-style:none none;display:inline;margin:0 !important;padding:0 !important}.mw-content-ltr .redirectText li{display:inline;margin:0;padding:0;padding-left:42px;background:transparent url(/w/resources/src/mediawiki.action/images/nextredirect-ltr.png?778f7) bottom left no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/nextredirect-ltr.svg?5185f)}.mw-content-ltr .redirectText li:first-child{padding-left:47px;background:transparent url(/w/resources/src/mediawiki.action/images/redirect-ltr.png?926f7) bottom left no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/redirect-ltr.svg?c4628)}.mw-content-rtl .redirectText li{display:inline;margin:0;padding:0;padding-right:42px;background:transparent url(/w/resources/src/mediawiki.action/images/nextredirect-rtl.png?3fa7a) bottom right no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/nextredirect-rtl.svg?b6779)}.mw-content-rtl .redirectText li:first-child{padding-right:47px;background:transparent url(/w/resources/src/mediawiki.action/images/redirect-rtl.png?adb14) bottom right no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/redirect-rtl.svg?4260c)}.redirectText{font-size:140%}.redirectMsg p{margin:0} \ No newline at end of file diff --git a/dist/www/-/mw/mediawiki.page.gallery.styles.css b/dist/www/-/mw/mediawiki.page.gallery.styles.css new file mode 100644 index 000000000..abc0ae56c --- /dev/null +++ b/dist/www/-/mw/mediawiki.page.gallery.styles.css @@ -0,0 +1 @@ +@media print{li.gallerybox{vertical-align:top;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #c8ccd1;background-color:#f8f9fa;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.galleryfilename{display:block}.galleryfilename-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.mw-gallery-nolines li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-nolines li.gallerybox div.gallerytext{text-align:center}ul.mw-gallery-packed li.gallerybox div.thumb,ul.mw-gallery-packed-overlay li.gallerybox div.thumb,ul.mw-gallery-packed-hover li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-packed li.gallerybox div.thumb img,ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,ul.mw-gallery-packed-hover li.gallerybox div.thumb img{margin:0 auto}ul.mw-gallery-packed-hover li.gallerybox,ul.mw-gallery-packed-overlay li.gallerybox{position:relative}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:hidden;height:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:absolute;background:#fff;background:rgba( 255,255,255,0.8 );padding:5px 10px;bottom:0;left:0;height:auto;max-height:40%;overflow:hidden;font-weight:bold;margin:2px}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover{overflow:visible;max-height:none}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p{text-overflow:clip;white-space:normal;overflow:visible}ul.mw-gallery-packed-hover,ul.mw-gallery-packed-overlay,ul.mw-gallery-packed{text-align:center}ul.gallery.mw-gallery-slideshow{display:block;margin:4em 0}ul.gallery.mw-gallery-slideshow .gallerycaption{font-size:1.3em;margin:0}ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled{margin-bottom:1.3em}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons{opacity:0.5;padding:1.3em 0}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement{margin:0 2em}.mw-gallery-slideshow li.gallerybox.slideshow-current{background:#efefef}.mw-gallery-slideshow .gallerybox > div{max-width:120px}ul.mw-gallery-slideshow li.gallerybox div.thumb{border:0;background:transparent}ul.mw-gallery-slideshow li.gallerycarousel{display:block;text-align:center}.mw-gallery-slideshow-img-container a{display:block} \ No newline at end of file diff --git a/dist/www/-/mw/mediawiki.toc.css b/dist/www/-/mw/mediawiki.toc.css new file mode 100644 index 000000000..d589c7b12 --- /dev/null +++ b/dist/www/-/mw/mediawiki.toc.css @@ -0,0 +1 @@ +@media screen{.tochidden,.toctoggle{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.toctoggle{font-size:94%}}@media print{#toc.tochidden,.toc.tochidden,.toctoggle{display:none}} \ No newline at end of file diff --git a/dist/www/-/mw/mediawiki.ui.checkbox.css b/dist/www/-/mw/mediawiki.ui.checkbox.css new file mode 100644 index 000000000..890ac39d2 --- /dev/null +++ b/dist/www/-/mw/mediawiki.ui.checkbox.css @@ -0,0 +1 @@ +.mw-ui-checkbox{display:inline-block;line-height:1.5625em;vertical-align:middle}.mw-ui-checkbox:not(#noop){display:table;position:relative}.mw-ui-checkbox:not(#noop) *{font-size:inherit;vertical-align:middle}.mw-ui-checkbox:not(#noop) [type='checkbox']{display:table-cell;position:relative;width:1.5625em;height:1.5625em;max-width:none;margin:0;opacity:0;z-index:1}.mw-ui-checkbox:not(#noop) [type='checkbox'] + label{display:table-cell;padding-left:0.4em}.mw-ui-checkbox:not(#noop) [type='checkbox'] + label:before{content:'';background-color:#fff;background-origin:border-box;background-position:center center;background-repeat:no-repeat;background-size:0 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;top:50%;left:0;width:1.5625em;height:1.5625em;margin-top:-0.78125em;border:1px solid #72777d;border-radius:2px}.mw-ui-checkbox:not(#noop) [type='checkbox']:checked + label:before{background-image:url(/w/resources/src/mediawiki.ui/components/images/checkbox-checked.png?6f2e5);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22%3E %3Cpath fill=%22%23fff%22 d=%22M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z%22/%3E %3C/svg%3E");background-size:90% 90%}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled{cursor:pointer}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled + label{cursor:pointer}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled + label:before{cursor:pointer;-webkit-transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms;-moz-transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms;transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:focus + label:before{border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:hover + label:before{border-color:#3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:active + label:before{background-color:#2a4b8d;border-color:#2a4b8d;box-shadow:inset 0 0 0 1px #2a4b8d}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked + label:before{background-color:#3366cc;border-color:#3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:focus + label:before{background-color:#3366cc;border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:hover + label:before{background-color:#447ff5;border-color:#447ff5}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:active + label:before{background-color:#2a4b8d;border-color:#2a4b8d}.mw-ui-checkbox:not(#noop) [type='checkbox']:disabled + label:before{background-color:#c8ccd1;border-color:#c8ccd1} \ No newline at end of file diff --git a/dist/www/-/mw/mediawiki.ui.input.css b/dist/www/-/mw/mediawiki.ui.input.css new file mode 100644 index 000000000..26e2e57a9 --- /dev/null +++ b/dist/www/-/mw/mediawiki.ui.input.css @@ -0,0 +1 @@ +.mw-ui-input{background-color:#fff;color:#000000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%;border:1px solid #a2a9b1;border-radius:2px;padding:0.57142857em 0.57142857em 0.5em;box-shadow:inset 0 0 0 0.1em #fff;font-family:inherit;font-size:inherit;line-height:1.07142857em;vertical-align:middle}.mw-ui-input::-webkit-input-placeholder{color:#72777d;opacity:1}.mw-ui-input:-ms-input-placeholder{color:#72777d;opacity:1}.mw-ui-input::-moz-placeholder{color:#72777d;opacity:1}.mw-ui-input:-moz-placeholder{color:#72777d;opacity:1}.mw-ui-input::placeholder{color:#72777d;opacity:1}.mw-ui-input:invalid{box-shadow:none}.mw-ui-input:hover{border-color:#72777d}.mw-ui-input:focus{border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc;outline:0}.mw-ui-input:not(:disabled){-webkit-transition:color 100ms,border-color 100ms,box-shadow 100ms;-moz-transition:color 100ms,border-color 100ms,box-shadow 100ms;transition:color 100ms,border-color 100ms,box-shadow 100ms}.mw-ui-input:disabled{border-color:#eaecf0;color:#c8ccd1}.mw-ui-input[type='search']{-webkit-appearance:textfield}.mw-ui-input[type='search']::-ms-clear{display:none}.mw-ui-input[type='search']::-webkit-search-cancel-button,.mw-ui-input[type='search']::-webkit-search-decoration{-webkit-appearance:none}textarea.mw-ui-input{min-height:8em}.mw-ui-input-inline{display:inline-block;width:auto;max-width:100%}.mw-ui-input-large{margin-top:0;margin-bottom:0}.mw-ui-input-large + .mw-ui-input-large{margin-top:-1px}.mw-ui-input-large:focus{position:relative}input.mw-ui-input-large{font-size:1.75em;font-weight:bold;line-height:1.25em;padding:0.3673em 0.3265em 0.3265em} \ No newline at end of file diff --git a/dist/www/-/mw/minerva.css b/dist/www/-/mw/minerva.css new file mode 100644 index 000000000..910cdc65f --- /dev/null +++ b/dist/www/-/mw/minerva.css @@ -0,0 +1 @@ +html,body,div,span,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,ins,em,img,small,strike,strong,sub,sup,tt,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,input,textarea,button,select,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline;background:none}table,caption,tbody,tfoot,thead,tr,th,td{font-size:100%}caption{font-weight:bold}button{border:0;background-color:transparent}body{line-height:1;-webkit-tap-highlight-color:transparent}input{line-height:normal}ol,ul{list-style:none}table{border-collapse:collapse}html{-webkit-text-size-adjust:none;font-size:100%}body{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;line-height:1.4;color:#222222;background:#fff}.content{line-height:1.65;word-wrap:break-word}@media all and (max-width:320px - 1){body{font-size:0.8em}.content{margin:0 12px}}.client-js .collapsible-block{display:none}.client-js .collapsible-block.open-block{display:block}.nomobile{display:none !important}@media all and (min-width:720px){.client-js [onclick] + .collapsible-block{display:block}}.content figure,.content .thumb{margin:0.6em 0}.content figure .thumbinner,.content .thumb .thumbinner{margin:0 auto;max-width:100% !important}.content figcaption,.content .thumbcaption{margin:0.5em 0 0;font-size:0.8em;line-height:1.5;padding:0 !important;color:#54595d}.content .thumbcaption{width:auto !important}.content .thumbborder{border:1px solid #c8ccd1}.content .magnify,.content figure[typeof*='mw:Image/Thumb'] > a:after,.content figure[typeof*='mw:Video/Thumb'] > a:after,.content figure[typeof*='mw:Audio/Thumb'] > a:after{display:none}.content img{vertical-align:middle}.content .floatright{clear:right;float:right;margin:0 0 0.6em 0.6em}.content .floatleft{clear:left;float:left;margin:0 0.6em 0.6em 0}.content a > img{max-width:100% !important;height:auto !important}.content .noresize{max-width:100%;overflow-x:auto}.content .noresize a > img{max-width:none !important}h1{font-size:1.7em}h2{font-size:1.5em}h3{font-size:1.2em;font-weight:bold}h4{font-weight:bold}.pre-content h1,.content h1,.content h2{font-family:'Linux Libertine','Georgia','Times',serif}h3,h4,h5,h6{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif}.pre-content h1,.content h1,.content h2,h3,h4,h5,h6{line-height:1.3;word-wrap:break-word;word-break:break-word}.content h2,.content h3,.content h4,.content h5,.content h6{padding:0.5em 0}blockquote{border-left:3px solid #c8ccd1;font-family:'Linux Libertine','Georgia','Times',serif;font-size:1.1em;padding:1em 25px 1em 30px;position:relative;overflow:hidden}.content{}.content ul{list-style:square outside;padding-left:1em}.content ul > li > ul{list-style-type:disc}.content ul > li > ul > li > ul{list-style-type:circle}.content ol{list-style:decimal inside}.content ol ol,.content ul ol,.content ol ul,.content ul ul{margin-left:1em}.content ol li,.content ul li{margin-bottom:10px}.content ol li:last-child,.content ul li:last-child{margin-bottom:inherit}dl{margin-left:1em}dl dt{font-weight:bold}dl dd{display:block;overflow:auto}body.mw-hide-empty-elt .mw-empty-elt{display:none}a{text-decoration:none;color:#002bb8}a:visited{color:#5a3696}a:active{color:#faa700}a:hover{text-decoration:underline}a.new,a.new:visited,a.new:hover{color:#dd3333}a.new > *,a.new:visited > *,a.new:hover > *{color:#dd3333}a.external{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVElEQVR42n3PgQkAIAhEUXdqJ3dqJ3e6IoTPUSQcgj4EQ5IlUiLE0Jil3PECXhcHGBhZ8kg4hwxAu3MZeCGeyFnAXp4hqNQPnt7QL0nADpD6wHccLvnAKksq8iiaAAAAAElFTkSuQmCC);background-image:url(/w/skins/MinervaNeue/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf)!ie;background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3C%3Fxml version=%221.0%22 encoding=%22UTF-8%22%3F%3E%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2210%22 height=%2210%22 viewBox=%220 0 10 10%22%3E%3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M.5 3.518h5.982V9.5H.5z%22/%3E%3Cpath fill=%22%2336c%22 d=%22M4.755-.16H9.99v5.39L8.417 6.774l-1.31-1.31L4.383 8.19 1.695 5.5l2.808-2.807-1.31-1.31z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M8.984.845l.022 4.884L7.19 3.91 4.308 6.79 3.08 5.567l2.882-2.88L4.112.833z%22/%3E%3C/svg%3E");background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/MinervaNeue/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf);background-repeat:no-repeat;background-position:center right;padding-right:13px}.return-link,#mw-mf-last-modified{display:block;font-size:0.9em;margin-top:1.5em}.plainlinks a{background:none !important;padding:0 !important}.mw-parser-output{counter-reset:mw-numbered-ext-link}.mw-parser-output a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}.content p{margin:0.5em 0 1em 0}strong,b{font-weight:bold}em,i{font-style:italic}kbd,samp,code,pre{font-family:monospace,monospace;border:solid 1px #c8ccd1;white-space:pre-wrap}code{padding:0.2em 0.5em}pre{padding:1em}.mw-ref,sup{vertical-align:super}sub{vertical-align:sub}.mw-ref,sub,sup{font-size:0.75em;line-height:1}.content table{margin:1em 0;overflow:auto;overflow-y:hidden;overflow-x:auto;display:block;width:100% !important}.content table caption{display:block;text-align:left}.content table.wikitable{border:1px solid #54595d;border-color:rgba(84,89,93,0.3)}.content table.wikitable > tr > th,.content table.wikitable > tr > td,.content table.wikitable > * > tr > th,.content table.wikitable > * > tr > td{border:1px solid #54595d;border-color:rgba(84,89,93,0.3);padding:0.2em}.content table.wikitable > tr > th,.content table.wikitable > * > tr > th{background-color:#eaecf0}.collapsible td{width:auto !important}.content .vertical-navbox,.content .navbox{display:none}.content .action-edit .fmbox,.content .tmbox,.content .ambox,.content #coordinates,.content .topicon,.content .metadata{display:none !important}.content table{float:none !important;margin-left:0 !important;margin-right:0 !important}.content table.infobox{font-size:90%;position:relative;border:1px solid #eaecf0;margin-bottom:2em;text-align:left;background-color:#f8f9fa}.content table.infobox th,.content table.infobox td{vertical-align:top;border:0;border-bottom:1px solid #eaecf0;padding:7px 10px}.content table.infobox td{width:100%}.content table.infobox tr:last-child th,.content table.infobox tr:last-child td{border:0}#filetoc,.mw-editsection{display:none}.skin-minerva .portal-column-left-wide,.skin-minerva .portal-column-left,.skin-minerva .portal-column-right,.skin-minerva .portal-column-right-narrow{float:none;width:100%}.references-column-count,.column-count{-moz-column-width:35em;-webkit-column-width:35em;column-width:35em}.references li:target{background-color:#def}.hatnote,.dablink,.rellink{padding:5px 7px;color:#54595d;font-size:0.8em;background-color:#f8f9fa;margin-bottom:1px}.hatnote a,.dablink a,.rellink a{color:#3366cc}.quotebox{margin:0 0 0.8em !important;width:auto !important}@media all and (min-width:720px){.content .vertical-navbox,.content .navbox{display:inherit}}@media all and (max-width:720px){.gallery .gallerybox{width:100% !important}.gallery .gallerybox div{width:100% !important}.content table.multicol > tr > td,.content table.multicol > tbody > tr > td{display:block !important;width:auto !important}.content .thumb .thumbinner{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;justify-content:center;flex-wrap:wrap;align-content:flex-start}.content .thumb .thumbinner > .thumbcaption{-webkit-box-pack:justify;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-moz-box-flex:1;width:100%;-ms-flex:1 0 100%;flex:1 0 100%;-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-ms-flex-order:1;order:1;display:block}}[dir='rtl'] .content .infobox{text-align:left}span.mw-ref{vertical-align:super;line-height:1;font-size:smaller;unicode-bidi:embed}span.mw-ref a[data-mw-group]:after{content:'[' attr( data-mw-group ) ' ' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='decimal']:after{content:'[' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='lower-alpha']:after{content:'[' counter( mw-Ref,lower-alpha ) ']'}span.mw-ref a[data-mw-group='upper-alpha']:after{content:'[' counter( mw-Ref,upper-alpha ) ']'}span.mw-ref a[data-mw-group='lower-greek']:after{content:'[' counter( mw-Ref,lower-greek ) ']'}span.mw-ref a[data-mw-group='lower-roman']:after{content:'[' counter( mw-Ref,lower-roman ) ']'}span.mw-ref a[data-mw-group='upper-roman']:after{content:'[' counter( mw-Ref,upper-roman ) ']'}span.mw-ref a[data-mw-group='error-test']:after{content:'[' counter( mw-Ref,symbols( cyclic 'first' 'second' 'last!' ) ) ']'}span.mw-ref a:after{content:'[' counter( mw-Ref,decimal ) ']'}x-thereisnoelementwiththisname:after,span.mw-reflink-text{display:none}ol.mw-references{counter-reset:mw-ref-linkback}ol.mw-references li{counter-increment:mw-ref-linkback}[rel='mw:referencedBy']{counter-reset:mw-ref-linkback -1}[rel='mw:referencedBy']:before{content:'¬ニム '}span[rel='mw:referencedBy'] a:before{counter-increment:mw-ref-linkback;content:counters( mw-ref-linkback,'.',decimal );vertical-align:super;line-height:1;font-size:smaller}span[rel='mw:referencedBy'] a:after{content:' '}x-thereisnoelementwiththisname[rel='mw:referencedBy']:before,span.mw-linkback-text{display:none}#issues_container div.hatnote{display:none}a.disambig_button{text-decoration:none;color:#555;float:left}a.disambig_button:active{color:#b0b0b0}.hide-when-compact{display:none}.mobile-float-reset{float:none !important;width:100% !important}#content .vertical-navbox,#content .navbox{display:none}@media all and (min-width:768px){#content .vertical-navbox,#content .navbox{display:inherit}}@media screen,handheld{.citation *.printonly{display:none}}.citation{word-wrap:break-word}.navbar{display:inline;font-size:88%;font-weight:normal}.navbar ul{display:inline;white-space:nowrap}.navbar li{word-spacing:-0.125em}.navbar.mini li span{font-variant:small-caps}.infobox .navbar{font-size:100%}.navbox .navbar{display:block;font-size:100%}.navbox-title .navbar{float:left;text-align:left;margin-right:0.5em;width:6em}.hlist dl,.hlist ol,.hlist ul{margin:0;padding:0}.hlist dd,.hlist dt,.hlist li{margin:0;display:inline}.hlist dl dl,.hlist dl ol,.hlist dl ul,.hlist ol dl,.hlist ol ol,.hlist ol ul,.hlist ul dl,.hlist ul ol,.hlist ul ul{display:inline}#content .hlist dt:after{content:':'}#content .hlist dd:after,#content .hlist li:after{content:' ᅡᄋ ';font-weight:bold}#content .hlist dd:last-child:after,#content .hlist dt:last-child:after,#content .hlist li:last-child:after{content:none}#content .hlist dd dd:first-child:before,#content .hlist dd dt:first-child:before,#content .hlist dd li:first-child:before,#content .hlist dt dd:first-child:before,#content .hlist dt dt:first-child:before,#content .hlist dt li:first-child:before,#content .hlist li dd:first-child:before,#content .hlist li dt:first-child:before,#content .hlist li li:first-child:before{content:' (';font-weight:normal}#content .hlist dd dd:last-child:after,#content .hlist dd dt:last-child:after,#content .hlist dd li:last-child:after,#content .hlist dt dd:last-child:after,#content .hlist dt dt:last-child:after,#content .hlist dt li:last-child:after,#content .hlist li dd:last-child:after,#content .hlist li dt:last-child:after,#content .hlist li li:last-child:after{content:') ';font-weight:normal}#content .hlist ol{counter-reset:list-item}#content .hlist ol > li{counter-increment:list-item}#content .hlist ol > li:before{content:' ' counter(list-item) ' '}#content .hlist dd ol > li:first-child:before,#content .hlist dt ol > li:first-child:before,#content .hlist li ol > li:first-child:before{content:' (' counter(list-item) ' '}.plainlist ul{list-style:none}.compact-ambox table .mbox-image,.compact-ambox table .mbox-imageright,.compact-ambox table .mbox-empty-cell{display:none}.compact-ambox table.ambox{border:0;border-collapse:collapse;background:transparent;margin:0 0 0 1.6em !important;padding:0 !important;width:auto;display:block}.compact-ambox table.mbox-small-left{font-size:100%;width:auto;margin:0}.compact-ambox table .mbox-text{padding:0 !important;margin:0 !important}.compact-ambox table .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:square;list-style-image:url(data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=)}.compact-ambox .hide-when-compact{display:none}.rellink,.dablink,.hatnote{font-style:italic}.rellink i,.dablink i,.hatnote i{font-style:normal}div.rellink,div.dablink,div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.geo-default,.geo-dms,.geo-dec{display:inline}.geo-nondefault,.geo-multi-punct{display:none}.longitude,.latitude{white-space:nowrap}.nowrap,.nowraplinks a,.nowraplinks .selflink,sup.reference a{white-space:nowrap}.wrap,.wraplinks a{white-space:normal}.sysop-show,.accountcreator-show,.autoconfirmed-show{display:none}#li-coordinates{background-image:url(/w/extensions/MobileApp/images/80px-Edge-firefox.png?120ff);float:right;display:none;-webkit-background-size:auto 30px;background-size:auto 30px}.client-js .content_block.coordinates{display:none;text-align:right;margin-bottom:0.5em;font-size:smaller}.client-js .content_block.coordinates .latitude{display:none;padding-left:20px;background-image:url(/w/extensions/MobileApp/images/50px-Edge-firefox.png?14d02);background-repeat:no-repeat;-webkit-background-size:auto 15px;background-size:auto 15px}.alpha #li-coordinates{display:list-item}.client-js .beta .content_block.coordinates{display:block}.client-js .beta .content_block.coordinates .latitude{display:inline}.topicon{display:none}td .sortkey,th .sortkey{display:none;speak:none}.transborder{border:solid transparent}.image_overflow_x_container{max-width:100%;overflow:auto}.visualhide{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}@media screen and (max-width:981px){.portail-gauche,.portail-droite{float:none;width:auto !important}.portail-gauche-inner{padding-right:0}}h2.section_heading{padding:20px 0 10px;margin-bottom:0}h3.section_heading{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;font-weight:bold;padding:15px 0 0 !important}div.issues_container{margin-top:-0.2em;margin-bottom:2.2em;padding-top:1px;padding-bottom:1px;width:100%;display:block;font-size:0.9em;letter-spacing:0.02em;color:#555}span.issues_separator{padding-left:0.6em;padding-right:0.6em;float:left}a.issues_button{text-decoration:none;color:#555;float:left}a.issues_button:active{color:#b0b0b0}.loading{border:4px solid rgba(0,0,0,0.1);border-top:4px solid rgba(0,0,0,0.4);border-radius:100%;-webkit-animation:rot 0.6s infinite linear}@-webkit-keyframes rot{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(359deg)}}#loading_sections{margin:8px auto;height:24px;width:24px}.ipa_button{display:inline-block;margin-bottom:-3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAgCAYAAABHA7voAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABBRJREFUWEfdWflPFkEM5U9HQUGj0WiMmnhrRBMVUeOt4fQG8cALBU8OEUEURK7aN06Xbr/Z/Wb59hd5yYtZ253Zt+203Y+6je0kpHVEp4mI6tajOGEiMGRMePkN0YHesK0M3hrixygRem1GvsDd94gWl4mWV4jufyba2h32WytPPXMP4bDCe2QxhDwfWZ+RL/DxqHNKMP2baMfdsG9RbmBmPXwWYt1lD0a2QAhZWHJOCYaniBo6wv5FWVRcEcgejGyBN945hxSO9ad9dt8n2lRQMNK8VnHVbpe9GNkCR386hwS4blD2zZ1EE7NEIzNEB/vS9+YRZ9oCgucX/YXBWt6F7MUIC9zFxQWFRePaYNqn9aU3MOD7gItQc1fax/Iwv4gYLAdeQgwkM2Q/Rlhg2ytnTAABEK19Pv/wRo/ZBaJtPWmfEMd++Rs81hKhapC9GGGBvSPOmACpqO04ezbCne/TPkhhfa3ZxtFHynfwPXYdAaIhzIO2R0fQRqd/LG2/9NobPPCQ6Jlih7gxFnD9LVFjlSLUMewXKQFRAlEVf/5xxgSoqNqnz0R4nNNO28+98AYGInUopwgdf+IdFfCgS9yiwCKIEtjEhWLJOwrODKR9Pkx7g0c/DwTa/pQjrjE9H24nONc6xWKQ5y/FSdZnVApEobA4rvofWsU3PpMa7Zxmeg3bYh5+SduFUzwZlYmoCGKCsTj8eNWOSeb7nDd43FQpjBdg7Rioxa55+vm/9EfVRpac5dS+yOf7PBch2Fr5Gi/HvrAsRAkMRVBPMBAwaQTcNgJGzAOhKmu7UA8OIWJexb+2tQB5qSr3MyoFolnb0o23qX0+mSr7yAh4Ys7g4GTaboXh2okJnNMLpifHnFm5l1EpcBOXeDRtjatmink27g0eaCvajnQD8KJ6Pub3RKEVfZSz5grvm9Un8yBrMCoFgtWKBPqbBubL7WqKgaD3/OVxgluAvs+ykf1a+Jtw3wNek88izmov7zVgXqBGzREEbZnHQK3t+x9WbmSjXO18gd0f/M2RiBEHyPqMsECkhoaL0J1VOx4e45sGSj56qF6nGvdw5Ow3ZxmQ9RlhgfsQIWdfBUq59rFpirRey9f+DA8BZUPWZoQFIkK2FQzxmdI+W/jDdYZHOhQB/F7TFFFIQoxNuyKQtRlhgWCXOR94Dpw97YPG3PI0/X9FOWcqdhmQtRnZAnE+7Ew68DXsWwtjIlg0yrI2I1sg+GrCOSVAOuqxrVbiKAybwb0MyPqMfIH4wVe/PXzj7TVpWgullaBg4RMNvTMW+rlshGV9Rr5AEFML7sdvLkXbQCwreiaPbFKRMTo2cwHDkH+Es8e2Jwu9DsMJzBW5kzc6WWMhqUYZqktm6o8vVSP5n9FpcgLr6+vXLYmo7i97FXYYGMQFoAAAAABJRU5ErkJggg==);background-image:url(/w/extensions/MobileApp/images/ipa.png?736e4)!ie;background-size:28px 16px;height:16px;width:28px}.mcs-ipa{display:none}.mw-body-content{counter-reset:mw-numbered-ext-link}.mw-body-content a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}.content figure img,.content figure video{margin:0.6em auto 0.6em auto;display:block}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.galleryfilename{display:block}.galleryfilename-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.mw-gallery-nolines li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-nolines li.gallerybox div.gallerytext{text-align:center}ul.mw-gallery-packed li.gallerybox div.thumb,ul.mw-gallery-packed-overlay li.gallerybox div.thumb,ul.mw-gallery-packed-hover li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-packed li.gallerybox div.thumb img,ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,ul.mw-gallery-packed-hover li.gallerybox div.thumb img{margin:0 auto}ul.mw-gallery-packed-hover li.gallerybox,ul.mw-gallery-packed-overlay li.gallerybox{position:relative}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:hidden;height:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:absolute;background:#fff;background:rgba( 255,255,255,0.8 );padding:5px 10px;bottom:0;left:0;height:auto;max-height:40%;overflow:hidden;font-weight:bold;margin:2px}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover{overflow:visible;max-height:none}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p{text-overflow:clip;white-space:normal;overflow:visible}ul.mw-gallery-packed-hover,ul.mw-gallery-packed-overlay,ul.mw-gallery-packed{text-align:center}ul.gallery.mw-gallery-slideshow{display:block;margin:4em 0}ul.gallery.mw-gallery-slideshow .gallerycaption{font-size:1.3em;margin:0}ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled{margin-bottom:1.3em}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons{opacity:0.5;padding:1.3em 0}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement{margin:0 2em}.mw-gallery-slideshow li.gallerybox.slideshow-current{background:#efefef}.mw-gallery-slideshow .gallerybox > div{max-width:120px}ul.mw-gallery-slideshow li.gallerybox div.thumb{border:0;background:transparent}ul.mw-gallery-slideshow li.gallerycarousel{display:block;text-align:center}.mw-gallery-slideshow-img-container a{display:block}@media screen{li.gallerybox div.thumb{border:1px solid #c8ccd1;background-color:#f8f9fa}}@media print{li.gallerybox{vertical-align:top;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{background-color:#fff;border:1px solid #ccc}div.gallerytext{overflow:visible}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:visible;height:auto}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:static;background:transparent;padding:0;bottom:0;max-height:none;overflow:visible;font-weight:normal;margin:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:clip;white-space:normal;overflow:visible}}.mw-parser-output{counter-reset:mw-numbered-ext-link}.mw-parser-output a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}span.reference{font-size:80%;line-height:1;vertical-align:super;unicode-bidi:-moz-isolate;unicode-bidi:isolate}sup,sub{line-height:1}figure[typeof*='mw:Image'],figure[typeof*='mw:Video'],figure[typeof*='mw:Audio']{margin:0}figure[typeof*='mw:Image'] a,figure[typeof*='mw:Video'] a,figure[typeof*='mw:Audio'] a{border:0}figure[typeof*='mw:Image'].mw-halign-right,figure[typeof*='mw:Video'].mw-halign-right,figure[typeof*='mw:Audio'].mw-halign-right{margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof*='mw:Image'].mw-halign-left,figure[typeof*='mw:Video'].mw-halign-left,figure[typeof*='mw:Audio'].mw-halign-left{margin:0.5em 1.4em 1.3em 0;clear:left;float:left}figure[typeof*='mw:Image'].mw-halign-none,figure[typeof*='mw:Video'].mw-halign-none,figure[typeof*='mw:Audio'].mw-halign-none{margin:0;clear:none;float:none}figure[typeof*='mw:Image'].mw-halign-center,figure[typeof*='mw:Video'].mw-halign-center,figure[typeof*='mw:Audio'].mw-halign-center{margin:0 auto 0.5em auto;display:table;border-collapse:collapse;clear:none;float:none}figure[typeof*='mw:Image'] > figcaption,figure[typeof*='mw:Video'] > figcaption,figure[typeof*='mw:Audio'] > figcaption{display:none}figure[typeof~='mw:Image/Thumb'],figure[typeof~='mw:Video/Thumb'],figure[typeof~='mw:Audio/Thumb'],figure[typeof~='mw:Image/Frame'],figure[typeof~='mw:Video/Frame'],figure[typeof~='mw:Audio/Frame']{display:table;text-align:center;border:1px solid #c8ccd1;border-collapse:separate;border-spacing:3px;background-color:#f8f9fa;width:1px;margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof~='mw:Image/Thumb'].mw-halign-center,figure[typeof~='mw:Video/Thumb'].mw-halign-center,figure[typeof~='mw:Audio/Thumb'].mw-halign-center,figure[typeof~='mw:Image/Frame'].mw-halign-center,figure[typeof~='mw:Video/Frame'].mw-halign-center,figure[typeof~='mw:Audio/Frame'].mw-halign-center{border-collapse:separate}figure[typeof~='mw:Image/Thumb'] > *:first-child > img,figure[typeof~='mw:Video/Thumb'] > *:first-child > img,figure[typeof~='mw:Audio/Thumb'] > *:first-child > img,figure[typeof~='mw:Image/Frame'] > *:first-child > img,figure[typeof~='mw:Video/Frame'] > *:first-child > img,figure[typeof~='mw:Audio/Frame'] > *:first-child > img,figure[typeof~='mw:Image/Thumb'] > *:first-child > video,figure[typeof~='mw:Video/Thumb'] > *:first-child > video,figure[typeof~='mw:Audio/Thumb'] > *:first-child > video,figure[typeof~='mw:Image/Frame'] > *:first-child > video,figure[typeof~='mw:Video/Frame'] > *:first-child > video,figure[typeof~='mw:Audio/Frame'] > *:first-child > video{border:1px solid #c8ccd1;background:#fff}figure[typeof~='mw:Image/Thumb'] > figcaption,figure[typeof~='mw:Video/Thumb'] > figcaption,figure[typeof~='mw:Audio/Thumb'] > figcaption,figure[typeof~='mw:Image/Frame'] > figcaption,figure[typeof~='mw:Video/Frame'] > figcaption,figure[typeof~='mw:Audio/Frame'] > figcaption{display:block;font-size:88.4%;line-height:1.4em;text-align:left;padding:3px}figure[typeof*='mw:Image/Thumb'] > a:after,figure[typeof*='mw:Video/Thumb'] > a:after,figure[typeof*='mw:Audio/Thumb'] > a:after{content:'';width:15px;height:11px;margin:3px;margin-bottom:0}.mw-content-ltr figure[typeof*='mw:Image/Thumb'] > a:after,.mw-content-ltr figure[typeof*='mw:Video/Thumb'] > a:after,.mw-content-ltr figure[typeof*='mw:Audio/Thumb'] > a:after{float:right;background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704);background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.svg?7fa0a)}.mw-content-rtl figure[typeof*='mw:Image/Thumb'] > a:after,.mw-content-rtl figure[typeof*='mw:Video/Thumb'] > a:after,.mw-content-rtl figure[typeof*='mw:Audio/Thumb'] > a:after{float:left;background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.png?a9fb3);background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.svg?96de0)}.mw-image-border > *:first-child > img,.mw-image-border > *:first-child > video{border:1px solid #eaecf0}.mw-gallery-traditional .gallerybox .thumb:before{content:'';vertical-align:middle;display:inline-block;height:100%}.mw-gallery-traditional .gallerybox .thumb > *{vertical-align:middle;display:inline-block}.mw-valign-middle > *:first-child > img,.mw-valign-middle > *:first-child > video{vertical-align:middle}.mw-valign-baseline > *:first-child > img,.mw-valign-baseline > *:first-child > video{vertical-align:baseline}.mw-valign-sub > *:first-child > img,.mw-valign-sub > *:first-child > video{vertical-align:sub}.mw-valign-super > *:first-child > img,.mw-valign-super > *:first-child > video{vertical-align:super}.mw-valign-top > *:first-child > img,.mw-valign-top > *:first-child > video{vertical-align:top}.mw-valign-text-top > *:first-child > img,.mw-valign-text-top > *:first-child > video{vertical-align:text-top}.mw-valign-bottom > *:first-child > img,.mw-valign-bottom > *:first-child > video{vertical-align:bottom}.mw-valign-text-bottom > *:first-child > img,.mw-valign-text-bottom > *:first-child > video{vertical-align:text-bottom} \ No newline at end of file diff --git a/dist/www/-/mw/mobile.css b/dist/www/-/mw/mobile.css new file mode 100644 index 000000000..529dcb6fc --- /dev/null +++ b/dist/www/-/mw/mobile.css @@ -0,0 +1,64 @@ +/** + * Custom style meant to match the design of mwoffliner mobile version to the mobile version of wikipedia + */ +/*.mw-body-content { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + font-size: 16px; + line-height: 26px; +}*/ +.mw-body-content p { + margin: 0.5em 0 1em 0; +} + +.mw-body p { /*Added GK*/ + margin: 0.5em 0 1em 0; +} + +table.infobox th, table.infobox td { /*Added GK*/ + border-bottom: 1px solid #eaecf0; + padding: 7px 10px; +} + +.mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6 { + padding: 0.5em 0 0; +} +.mw-body h3, .mw-body h2 { + /*clear: both;*/ + /*width: 100%;*/ + margin-bottom: 0.5em; + border-bottom: solid 1px #eaecf0; + font-family: 'Linux Libertine','Georgia','Times',serif; +} +.mw-body h1 { + font-size: 42px; + font-family: 'Linux Libertine','Georgia','Times',serif; /* GK added */ +} +.mw-body h2 { + font-size: 24px; +} +.mw-body h3 { + border-bottom: 0 solid #eaecf0; + font-size: 19px; + font-weight: bold; +} +.mw-body h4 { + border-bottom: 0 solid #eaecf0; + font-size: 16px; +} +h1[tabindex="0"].collapsible-heading > .indicator { + display: none; /* hide the "v" icon for the main title */ +} +@media all and (min-width: 720px) { + .client-js .collapsible-heading .indicator { + display: none !important; /* this is to hide to "v" icone next to titles in desktop */ + } + .float-right { + float: right; + margin-left: 10px; + } +} +@media all and (max-width: 720px) { + .mw-stack, .infobox, .vertical-navbox { + float: none !important; + } +} diff --git a/dist/www/-/mw/mw.MediaWikiPlayer.loader.css b/dist/www/-/mw/mw.MediaWikiPlayer.loader.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/mw/mw.MediaWikiPlayer.loader.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/mw/mw.PopUpMediaTransform.css b/dist/www/-/mw/mw.PopUpMediaTransform.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/mw/mw.PopUpMediaTransform.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/mw/mw.TMHGalleryHook.js.css b/dist/www/-/mw/mw.TMHGalleryHook.js.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/mw/mw.TMHGalleryHook.js.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/mw/newstyle_main_page.css b/dist/www/-/mw/newstyle_main_page.css new file mode 100644 index 000000000..c0dd70438 --- /dev/null +++ b/dist/www/-/mw/newstyle_main_page.css @@ -0,0 +1,162 @@ +html { + box-sizing: border-box; +} + +/* *, +*:before, +*:after { + box-sizing: inherit; +} */ + +body { + margin: 0; + border-width: 0; + padding: 0; +} + +h1, +h2 { + color: #333; + text-shadow: #1114 1px 1px 1px; + text-align: center; + border-bottom: none; + padding: 0; +} + +a { + text-decoration: none; +} + +#content { + width: 100%; + overflow: hidden; + font-size: 1em; + background: black; +} + +#list { + background: white; +} + +.nojs #content { + column-count: 4; + column-gap: 0; +} + +.item { + display: block; + position: relative; + overflow: hidden; +} + +.nojs #content .item { + display: inline-block; + width: 100%; +} + +.item img { + width: 100%; + height: auto; + transition: all 0.3s; + transform: scale(1); +} + +.item:hover img { + transform: scale(1.1); +} + +.item figure { + margin: 0; +} + +.item figcaption { + position: absolute; + bottom: 0; + width: 100%; + vertical-align: bottom; + background: rgba(48, 48, 48, 0.5); + color: white; + padding: 0.6em; + font-weight: bold; + transition: all 0.3s; + transform: scale(1); +} + +/* .item:hover figcaption { + transform: scale(1); + bottom: 50%; +} */ + +#footer { + margin: 0; +} +#footer ul { + margin: 0; + margin-left: 10%; +} + +@media only screen and (min-width: 1024px) { + h1 { + font-size: 6vw; + } + h2 { + font-size: 4vw; + } + #content .item { + width: 25%; + } + .nojs #content { + column-count: 4; + } + ul { + column-count: 4; + } +} + +@media only screen and (max-width: 1023px) and (min-width: 768px) { + h1 { + font-size: 6vw; + } + h2 { + font-size: 4vw; + } + #content { + font-size: 1em; + } + #content .item { + width: 33.3333%; + } + .nojs #content { + column-count: 3; + } + ul { + column-count: 2; + } + #footer ul li { + font-size: 0.9em; + } +} + +@media only screen and (max-width: 767px) { + h1 { + font-size: 7vw; + } + h2 { + font-size: 5vw; + } + #content { + font-size: 1.2em; + } + #content .item { + width: 50% + } + .nojs #content { + column-count: 2; + } + ul { + column-count: 1; + } + #footer ul li { + font-size: 1em; + } +} \ No newline at end of file diff --git a/dist/www/-/mw/style.css b/dist/www/-/mw/style.css new file mode 100644 index 000000000..684f854aa --- /dev/null +++ b/dist/www/-/mw/style.css @@ -0,0 +1,7 @@ +/** + * Custom style meant to match the design of mwoffliner mobile version to the mobile version of wikipedia + + DUMMY STYLE: should be overridden by style or style-mobile + + */ + diff --git a/dist/www/-/s/css_modules/content.parsoid.css b/dist/www/-/s/css_modules/content.parsoid.css new file mode 100644 index 000000000..67e1d1dc1 --- /dev/null +++ b/dist/www/-/s/css_modules/content.parsoid.css @@ -0,0 +1,153 @@ +/** + * Style Parsoid HTML+RDFa output consistent with wikitext from PHP parser. + * Source here :; https://github.com/voidlinux/void-wiki/blob/master/resources/src/mediawiki.skinning/content.parsoid.less + * converted from less to css + */ +/*csslint regex-selectors:false */ +/* + * Auto-numbered external links + * Parsoid renders those as link without content, and lets CSS do the + * counting. This way the counting style can be customized, and counts update + * automatically when content is modified. + */ +.mw-body-content { + counter-reset: mw-numbered-ext-link; +} +.mw-body-content a[rel~='mw:ExtLink']:empty:after { + content: '[' counter(mw-numbered-ext-link) ']'; + counter-increment: mw-numbered-ext-link; +} +/** + * References + * + * Parser and Extension:Cite output reference numbers for [1] for tags. + * + * Markup: + * Cake is good[2] + * The cake is a lie[1] + * + * Styleguide 1.1. + */ +span.reference { + font-size: 80%; + line-height: 1; + vertical-align: super; + unicode-bidi: -moz-isolate; + unicode-bidi: isolate; +} +sup, +sub { + line-height: 1; +} +/** + * Block media items + */ +figure[typeof*='mw:Image'], +figure[typeof*='mw:Video'], +figure[typeof*='mw:Audio'] { + margin: 0; +} +figure[typeof*='mw:Image'] a, +figure[typeof*='mw:Video'] a, +figure[typeof*='mw:Audio'] a { + border: 0; +} +figure[typeof*='mw:Image'].mw-halign-right, +figure[typeof*='mw:Video'].mw-halign-right, +figure[typeof*='mw:Audio'].mw-halign-right { + /* @noflip */ + margin: 0.5em 0 1.3em 1.4em; + /* @noflip */ + clear: right; + /* @noflip */ + float: right; +} +figure[typeof*='mw:Image'].mw-halign-left, +figure[typeof*='mw:Video'].mw-halign-left, +figure[typeof*='mw:Audio'].mw-halign-left { + /* @noflip */ + margin: 0.5em 1.4em 1.3em 0; + /* @noflip */ + clear: left; + /* @noflip */ + float: left; +} +figure[typeof*='mw:Image'].mw-halign-none, +figure[typeof*='mw:Video'].mw-halign-none, +figure[typeof*='mw:Audio'].mw-halign-none { + margin: 0; + clear: none; + float: none; +} +figure[typeof*='mw:Image'].mw-halign-center, +figure[typeof*='mw:Video'].mw-halign-center, +figure[typeof*='mw:Audio'].mw-halign-center { + margin: 0 auto 0.5em auto; + display: table; + clear: none; + float: none; +} +figure[typeof*='mw:Image'] > figcaption, +figure[typeof*='mw:Video'] > figcaption, +figure[typeof*='mw:Audio'] > figcaption { + display: table-caption; + caption-side: bottom; + /* In mw-core the font-size is duplicated, 94% in thumbiner + * and again 94% in thumbcaption. 88.4% for font size of the + * caption results in the same behavior. */ + font-size: 88.4%; + line-height: 1.4em; + text-align: left; + border: 1px solid #c8ccd1; + border-top: 0; + /* taken from .thumbcaption, plus .thumbinner */ + padding: 0 6px 6px 6px; + background-color: #f8f9fa; +} +figure[typeof*='mw:Image'] > figcaption table, +figure[typeof*='mw:Video'] > figcaption table, +figure[typeof*='mw:Audio'] > figcaption table { + /* reset caption side for tables inside figcaptions */ + caption-side: top; +} +figure[typeof~='mw:Image/Thumb'], +figure[typeof~='mw:Video/Thumb'], +figure[typeof~='mw:Audio/Thumb'], +figure[typeof~='mw:Image/Frame'], +figure[typeof~='mw:Video/Frame'], +figure[typeof~='mw:Audio/Frame'] { + display: table; + overflow: auto; + text-align: center; + border: 1px solid #c8ccd1; + border-bottom: 0; + border-collapse: collapse; + background-color: #f8f9fa; + margin: 0.5em 0 1.3em 1.4em; + clear: right; + float: right; +} +figure[typeof~='mw:Image/Thumb'] > *:first-child > img, +figure[typeof~='mw:Video/Thumb'] > *:first-child > video, +figure[typeof~='mw:Audio/Thumb'] > *:first-child > video, +figure[typeof~='mw:Image/Frame'] > *:first-child > img, +figure[typeof~='mw:Video/Frame'] > *:first-child > video, +figure[typeof~='mw:Audio/Frame'] > *:first-child > video { + border: 1px solid #c8ccd1; + margin: 3px; + background: #fff; +} +/* Same as img.thumbborder in content.css */ +.mw-image-border > *:first-child > img, +.mw-image-border > *:first-child > video { + border: 1px solid #eaecf0; +} +/* Hide the caption for frameless and plain floated images */ +figure[typeof~='mw:Image/Frameless'] > figcaption, +figure[typeof~='mw:Video/Frameless'] > figcaption, +figure[typeof~='mw:Audio/Frameless'] > figcaption, +figure[typeof~='mw:Image'] > figcaption, +figure[typeof~='mw:Video'] > figcaption, +figure[typeof~='mw:Audio'] > figcaption { + display: none; +} diff --git a/dist/www/-/s/css_modules/ext.cite.a11y.css b/dist/www/-/s/css_modules/ext.cite.a11y.css new file mode 100644 index 000000000..0d91c6d7a --- /dev/null +++ b/dist/www/-/s/css_modules/ext.cite.a11y.css @@ -0,0 +1 @@ +.cite-accessibility-label{top:-99999px;clip:rect( 1px 1px 1px 1px );clip:rect( 1px,1px,1px,1px );position:absolute !important;padding:0 !important;border:0 !important;height:1px !important;width:1px !important;overflow:hidden} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.cite.styles.css b/dist/www/-/s/css_modules/ext.cite.styles.css new file mode 100644 index 000000000..1cac40764 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.cite.styles.css @@ -0,0 +1 @@ +.mw-cite-backlink,.cite-accessibility-label{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mw-references-columns{-webkit-column-width:35em;-moz-column-width:35em;column-width:35em}.mw-references-columns li{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}sup.reference{unicode-bidi:-moz-isolate;unicode-bidi:-webkit-isolate;unicode-bidi:isolate;white-space:nowrap}ol.references li:target,sup.reference:target{background-color:#def;background-color:rgba( 0,127,255,0.133 )}.mw-ext-cite-error{font-weight:bold;unicode-bidi:embed}@media print{.mw-cite-backlink{display:none}} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.cite.ux-enhancements.css b/dist/www/-/s/css_modules/ext.cite.ux-enhancements.css new file mode 100644 index 000000000..9e64c3980 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.cite.ux-enhancements.css @@ -0,0 +1 @@ +.cite-accessibility-label{top:-99999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:absolute !important;padding:0 !important;border:0 !important;height:1px !important;width:1px !important;overflow:hidden}:target .mw-cite-targeted-backlink{font-weight:bold}.mw-cite-up-arrow-backlink{display:none}:target .mw-cite-up-arrow-backlink{display:inline}:target .mw-cite-up-arrow{display:none} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.inputBox.styles.css b/dist/www/-/s/css_modules/ext.inputBox.styles.css new file mode 100644 index 000000000..5ea750820 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.inputBox.styles.css @@ -0,0 +1 @@ +.mw-inputbox-centered{margin-left:auto;margin-right:auto;text-align:center}.mw-inputbox-inline{display:inline}.mw-inputbox-element{display:inline-table !important;white-space:nowrap}.mw-inputbox-input{margin-bottom:0.5em} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.kartographer.frame.css b/dist/www/-/s/css_modules/ext.kartographer.frame.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.kartographer.frame.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.kartographer.link.css b/dist/www/-/s/css_modules/ext.kartographer.link.css new file mode 100644 index 000000000..b4f207616 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.kartographer.link.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ diff --git a/dist/www/-/s/css_modules/ext.kartographer.style.css b/dist/www/-/s/css_modules/ext.kartographer.style.css new file mode 100644 index 000000000..d999f3d15 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.kartographer.style.css @@ -0,0 +1,560 @@ +/** + * CSS Classes Definitions + * + * .mw-kartographer-maplink: + * Represents a element as output by the Parser. + * May or may not be an interactive link yet (meanwhile JS gets loaded). + * + * .mw-kartographer-map + * Represents a element as output by the Parser. + * May or may not be an interactive map yet (meanwhile JS gets loaded) + * + * .mw-kartographer-link + * Represents an interactive map link. + * The class is added when the element becomes an interactive link. + * May or may not be a or (if created via Developer API) + * + * .mw-kartographer-interactive + * Represents an interactive map. + * The class is added when the element becomes an interactive map. + * + * .mw-kartographer-mapDialog-map + * Represents an interactive map within a full screen map dialog. + * + * .mw-kartographer-static + * Represents an interactive map that was made static afterward because the + * viewport is too small. + * + * In practice: + * + * - will have .mw-kartographer-maplink first, + * .mw-kartographer-link then. + * + * - will have .mw-kartographer-map first, + * .mw-kartographer-link then, if displaying static snapshot. + * .mw-kartographer-interactive then, if directly interactive. + */ +.mw-kartographer-mapDialog-map { + position: absolute; + top: 0; + bottom: 4.11em; + left: 0; + right: 0; + z-index: 1; +} +.mw-kartographer-error { + display: inline-block; + background: #ffc0cb; +} +.mw-kartographer-static .leaflet-control-container .leaflet-top .leaflet-control { + display: none; +} +.mw-kartographer-static .leaflet-control-container .leaflet-top .leaflet-control-static { + display: block; +} +.mw-kartographer-static .leaflet-clickable { + pointer-events: none; +} +.mw-kartographer-static.leaflet-container { + cursor: default; +} +.mw-kartographer-map { + position: relative; + background-position: center; + background-repeat: no-repeat; + background-size: contain; + display: block; + font-size: 14px; +} +.mw-kartographer-map.mw-kartographer-link { + display: block; +} +.mw-kartographer-map.leaflet-container { + background-size: contain; +} +.mw-kartographer-fullScreen { + position: absolute; + top: 10px; + right: 10px; + margin-right: 0; +} +.mw-kartographer-container:not(.mw-kartographer-full) { + max-width: 100%; + /* Fixes `align=center` use case */ +} +.mw-kartographer-container:not(.mw-kartographer-full).center { + margin-left: auto; + margin-right: auto; + display: block; +} +.mw-kartographer-container:not(.mw-kartographer-full).thumb .thumbinner { + max-width: 100%; +} +.mw-kartographer-container:not(.mw-kartographer-full).thumb .thumbinner > .mw-kartographer-map { + width: 100%; +} +.mw-kartographer-container.mw-kartographer-full { + width: 100%; +} +/* @noflip */ +a.floatright { + float: right; + clear: right; + margin: 0 0 1em 1em; +} +/* @noflip */ +a.floatleft { + float: left; + clear: left; + margin: 0.3em 0.5em 0.5em 0; +} + +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ +/* stylelint-disable no-descending-specificity */ +.mw-kartographer-link, +.mw-kartographer-maplink { + cursor: pointer; +} +.mw-kartographer-maplink:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ), +a.mw-kartographer-link:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ) { + /** + * These two files were copied from OOjs UI repository after the build process + * generated the progressive icons. + * + * See ./images/COPYING + * + * The master version of the icon is at: + * https://github.com/wikimedia/oojs-ui/blob/master/src/themes/mediawiki/images/icons/mapPin.svg + */ + background-image: url(/w/extensions/Kartographer/styles/images/mapPin-progressive.png?eaddd); + background-image: linear-gradient(transparent, transparent), url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%2336c%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M19%2012c0-3.9-3.1-7-7-7s-7%203.1-7%207c0%201.4.4%202.6%201.1%203.7L12%2023l5.9-7.3c.7-1.1%201.1-2.3%201.1-3.7zm-7%203c-1.6%200-3-1.4-3-3s1.4-3%203-3%203%201.4%203%203-1.4%203-3%203z%22%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent, transparent), url(/w/extensions/Kartographer/styles/images/mapPin-progressive.png?eaddd); + background-position: left -3px; + background-repeat: no-repeat; + background-size: 18px 18px; + padding-left: 19px; + margin-left: 2px; +} +.mw-kartographer-maplink.no-icon, +a.mw-kartographer-link.no-icon { + background: none; + padding-left: 0; + margin-left: 0; +} +.skin-minerva a.mw-kartographer-link:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ), +.skin-minerva .mw-kartographer-maplink:not( .mw-kartographer-autostyled ):not( .mw-kartographer-map ):not( .no-icon ) { + background-size: 20px 20px; + padding-left: 20px; +} +.skin-minerva a.mw-kartographer-link.no-icon, +.skin-minerva .mw-kartographer-maplink.no-icon { + background: none; + padding-left: 0; + margin-left: 0; +} +.mw-kartographer-map .mw-kartographer-fullScreen .oo-ui-iconElement > .oo-ui-buttonElement-button { + font-size: 0.91428571em; + min-width: 2.5em; +} +.mw-kartographer-map .mw-kartographer-fullScreen .oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + left: 0.25em; +} +.mw-kartographer-map:hover .mw-kartographer-fullScreen .oo-ui-buttonElement-button { + background-color: #fff; +} +/** + * Applied only when JS is enabled. + */ +.client-js { + /* stylelint-disable-next-line indentation */ +} +.client-js .mw-kartographer-map { + cursor: pointer; +} +/*.client-js .mw-kartographer-maplink:not( .mw-kartographer-link ):not( .ve-ce-focusableNode ), +.client-js .mw-kartographer-map:not( .mw-kartographer-link ):not( .mw-kartographer-interactive ) { + pointer-events: none; + cursor: default; +}*/ +/** + * If `$wgKartographerUseMarkerStyle = true`. + */ +a.mw-kartographer-autostyled { + color: #fff; + display: inline-block; + position: relative; + top: -0.08em; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0.85em; + margin-left: 0; + border-radius: 1px; + padding: 0.24em 0.42em; + font-size: 0.85em; + font-weight: bold; + line-height: 1; + text-align: center; + vertical-align: middle; +} +a.mw-kartographer-autostyled:visited { + color: #fff; +} + +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* + Anyone who changes the width of the sidebar should + update Kartographer.Dialog.DialogClass `SIDEBAR_WIDTH` accordingly +*/ +/* Dialog footer */ +.mw-kartographer-mapDialog-foot { + /* + Anyone who changes the height of the footer should + update Kartographer.Dialog.DialogClass `FOOTER_HEIGHT` accordingly + */ + padding: 1em; + height: 4.5em; + background-color: #ffffff; + border-top: 1px solid #a2a9b1; +} +.mw-kartographer-captionfoot { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 20px; + line-height: 31px; +} +.mw-kartographer-buttonfoot { + float: right; + margin-left: 1em; +} +/* Dialog Sidebar */ +.mw-kartographer-mapDialog-sidebar { + position: absolute; + right: 0; + top: 0; + bottom: 4.5em; + z-index: 2; + border-left: 1px solid #a2a9b1; + /* + Anyone who changes the width of the sidebar should + update Kartographer.Dialog.DialogClass `SIDEBAR_WIDTH` accordingly + */ + width: 321px; + /* 320+1 so border is hidden on common 320px wide mobile devices */ + box-sizing: border-box; + background-color: #fff; + padding: 3em 2em 1em; + overflow-y: scroll; + /* For MobileFrontend */ +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-closeButton { + position: absolute; + top: 10px; + right: 10px; + margin-right: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-closeButton .oo-ui-buttonElement-button { + border: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-collapseButton { + position: absolute; + top: 10px; + right: 44px; + margin-right: 0; +} +.mw-kartographer-mapDialog-sidebar .mw-kartographer-mapDialog-collapseButton .oo-ui-buttonElement-button { + border: 0; +} +.skin-minerva .mw-kartographer-mapDialog-sidebar h2 { + margin-bottom: 0.6em; +} +.mw-kartographer-mapdetails-table { + width: 100%; + border-collapse: collapse; +} +.mw-kartographer-mapdetails-table tr { + background-color: #eaecf0; + text-align: center; +} +.mw-kartographer-mapdetails-table th { + text-align: left; +} +.mw-kartographer-mapdetails-table th, +.mw-kartographer-mapdetails-table td { + padding: 0.5em 1em; + font-size: 90%; +} +.mw-kartographer-mapdetails-table thead tr { + background-color: #c8ccd1; +} +.mw-kartographer-mapdetails-table thead tr th { + font-weight: bold; +} +.mw-kartographer-mapdetails-table tbody tr th:first-child { + width: 70%; + text-align: left; +} +.mw-kartographer-mapdetails-table tbody tr:nth-child( even ) { + background-color: #ffffff; +} +.mw-kartographer-externalservices .mw-kartographer-mapdetails-table tbody tr.featured { + background-color: #fef6e7; + border-bottom: 1px solid #ffcc33; +} +.mw-kartographer-externalservices .mw-kartographer-mapdetails-table tbody tr th { + font-weight: normal; +} +.mw-kartographer-description, +.mw-kartographer-mapdetails { + margin-bottom: 1.5em; +} +.mw-kartographer-mapdetails .geo { + white-space: nowrap; +} +.mw-kartographer-filterservices { + margin-bottom: 1em; +} +.kartographer-mapDialog-loading { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 4.5em; + background-image: url(data:image/gif;base64,R0lGODlhQABAAPIEALOzs05OTouLixoaGkxMTAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAEACwAAAAAQABAAAAD/0i63P4wyknrGnjYzW3OXSgyHzaeXamhaOAGkRoBNMBC7wvJT13fjpxrV4L4aMCGcOjgNY7IJGP5cDKgUiW1YVVAbdnp9lK8YsNiIbe8+KK1avLHfHzDcyQ2wc3SRZYwCk58RlF/cQ9jBHNtdYU+EoCBd0wSZ0+EiZKTC3gVkJhfYDibnFmiP5GlpiyoqRSrSa6jG5uyoieSt5e5iK2OSX67dsTFxsfICgLLzM3NdrOvztPOaNGg1NkC1tdR2tTc3crf1WHdhuTM0NfJ7e7v8BHqUq9A07v1I9n4oCLa/P02kAMIbEK6U7MMfluHSsLCULQs5dvTUB44B7weTaSYsVTBPY2GONLq2Cjgg3kgDV3KhDHkiEy8WL6BWVCmuYw4SdLLadImwZYmRW4EQrJowZ1HvSQV6pLoUqYpww3VqfNX05JDRcZTGnRrVK8UqoKlE3EsvAQAIfkEBQoABAAsBQABACwAMAAAA5dIutzOIYZHq21S3s1Vjl1YfZNoQl81rMP5kBTLulj6yCuNZjfe6h5bwwdcwIbEIuG48P2UTIVTGeQ1k9TodCHo0phbRXcscFmluAaZTMWK1+yizAFfUyt1+/2RH+8pfX+AdYJ4eoWDZYiLjI2Oj5CRkpOUlZaXlgCakpqdAI+eno6hooukoYinqIWqnYytn6+noKuQrpIJACH5BAUKAAQALAEABQA6AB4AAAOLSLrc8qLJKYMNNFMItSfX9X3cM2ahdWqluTKp+m7lvMQ2Xc8xlk+tyKr303FexCKwdUoqJcEm7rncaZyTgfbH9Eyz2nCue02Bw+JxZxSSoN8D6hP+lv/odbsNn9bv8X5FgIF3eYSCW4eKi4yNOQCQkZKSjhOTl5OVDZicAJoMnZifC6GXo6SlkKcKCQAh+QQFCgAEACwFAAEAOgAiAAADiki63M4iikervVRKzDvXkSeOEEieHjihrKW28PPGtDLX8Y23+o72PhIwKBoSO0YWYPkznQLQxnIKOGme0CyDSj06suDAltv1hsNj8vR4RqfVTFzb7YCvaXPtxV7Le+B9bSRkgWAtd4VeiouMjY4kA5GSk5OPDJSYlJYKmZ0DmwSemaCimKChpZEECQAh+QQFCgAEACwPAAUAMAAsAAADjEiwQP4wyieqmJgxzKO1HaQtYfhVpTOSqXSi7dq656zINvFe9trMu9xtZAsKfS3jEVdSLommlzDC5EinImjnin1okqCueEwum8/otHrNbrvf8LicEKjb7/c2fo9n8/8BfoB7goN5hYZziouMLQOPjQSPkwOMlJSKl5hympecnZtwoJOfoJmdlp6NpBAJACH5BAUKAAQALB0AAQAeADoAAAOQSLBA/jBKyNi8uC7Mo25d+IWiRnbjmZnqlbbSC1PsTFe2V+fKnsstgdCBmwmPAh4BicwxmbYnNChtUqtJY5W35U6VyyF4TC6bz+i0es1uuzGBeDlOD4zrdSU+n9vj+358M4F0HAOHAxKEdheIiBOBGI6HcH+Nk4mVjJKYYJiZSp+enaOTY6ShqDyqOaytjxwJACH5BAUKAAQALB0ABQAiADoAAAOTSLrc8KDJSReENdf7tGdc933hSJZmFkapirbTCm/vDNa2xeXxzkuXn3BILBqPyKRyyWwqBNCoVDqbWqewq1aQ3Vq7Xio47Cybz+i0et0MuAPH99s2qA8YcvfMbl/k9S18dXh/gYKEeYZ8DX9wJoJ3iHIpkBKNj4eWiSOVmpsenZ5zH6GMnxqlpoCkmUSpP6+wfUYJACH5BAUKAAQALA8ADwAsADAAAAOUSLrc/pCBGauNM4PLrdZd2HyfaJKlyaGp6rGUu7JySNcdiZ/x7v/AoHBILBqPyKRyyWw6BdAndMqcWgXKqzWpvSK73iOY2hiYB74xlnE+/8DlNnoRqAdcWrZ8TrDbZWQKe3x9fndAgwyGhz6JioaIew2LP46PfpVyD5Q7lpd/nZqbkKFtEJylhJOkSqhJrkiwsaA7CQAh+QQFCgAEACwFAB0AOgAeAAADhEi63P7wgUlrjThrYrvdYOiNQGhmpHeuUvqx8OJScW3feK6fQ7/jveDgFxMKiSzjERlSGpkb5xOakQapUasjwA2ABGABTProdjXhcHJaNnszafDYF3Fz0XEx0f7Gx/d2X3k/fCZ5ejmFIYc6ioaDOIEskDaOJ4yVbjWUMZIwnJ1nNmkhCQAh+QQFCgAEACwBAB0AOgAiAAADjUiz3E0wykmrrS67y7vX4OCNZBRqZdqdmepaLPPOdG3feK7fQb8DwFpvGMgBjwAXkWhEHktLJs6J9ESXTeqzcsXqtM5Jd7iTgLeQcbFsPku6bAv47VUJ7oIXVex74fEzaDl/d3E0hHmGfoSKi3+NLoiQdoyTJZKWJJiZHpucHJ6fFqGiFKSlEqeoEY83CQAh+QQFCgAEACwBAA8AMAAsAAADjkiq0/swyklZuzVrevvY4OZ5YSmNpKlaKLaqrfua8by29jvms8z/wKBwCAoYj0gkcZFsJpcEpzQAnTqr1ic2S4V6v+CweEwum8/o9FjAFoAAcMCv3dbE4zw6236X2/R7GX1wM4BuG4N+KoZvgyuMIYmLgCWSJZCVjiGUK5obmCaWGpwvnhmknX2bdTl3BAkAIfkEBQoABAAsBQAFAB4AOgAAA49Iukzzo8k5IaS42pi72o/ngWIHciV1pirJatsrrVlgZ/Rk7wHm6rwd7EIJBmfEopEnUyyPzaewSZBSncvrwqhlTLvgsHhMLpvP6LR6TRG4w+64QCuXX+t2Gb7+2vNZfnFNgXODe3R/LwCLAAqCTYyMYJGLk5SWkZiSXZSNnJefmaGbWp2alaOopaCroqMECQA7); + background-image: url(/w/extensions/Kartographer/styles/images/ajax-loader.gif?b3af8)!ie; + background-position: center center; + background-size: 32px; + background-repeat: no-repeat; +} +.mw-kartographer-mapDialog-sidebar-opened .leaflet-right.leaflet-bottom { + right: 320px; +} + +/* == Attribution control == */ +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* Static snapshot */ +.mw-kartographer-attribution { + position: absolute; + right: 0; + bottom: 0; + margin: 0; + padding: 0 5px; + box-shadow: none; +} +/* Static + Interactive */ +.mw-kartographer-attribution, +.leaflet-right.leaflet-bottom { + background-color: rgba(255, 255, 255, 0.8); + color: #222222; +} +/* Interactive */ +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution { + /** Override initial properties */ + background-color: transparent; + float: none; + clear: none; +} +/* Static + Interactive */ +.mw-kartographer-attribution, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution { + font-size: 10px; + font-family: sans-serif; + line-height: 1.6; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + /* Removes ellipsis on hover */ +} +.mw-kartographer-attribution:hover, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution:hover { + overflow: hidden; + text-overflow: clip; + white-space: normal; +} +.mw-kartographer-attribution a, +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-attribution a { + color: #3366cc; +} +/* Static + Interactive */ +.mw-kartographer-map:hover .mw-kartographer-attribution, +.mw-kartographer-interactive:hover .leaflet-right.leaflet-bottom { + background-color: rgba(255, 255, 255, 0.9); +} + +/* == Scale control == */ +/* Scale Line style */ +.leaflet-control-scale.leaflet-control .leaflet-control-scale-line { + background-color: transparent; + padding: 0 5px; + font-size: 10px; + font-family: sans-serif; +} +.leaflet-right.leaflet-bottom { + /** Override initial properties */ +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale { + float: left; + clear: none; + margin: 1px 5px; + line-height: initial; +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line { + /* Scale Line style on hover */ + /** Override initial properties */ +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line:hover { + border-color: #000; + cursor: pointer; +} +.leaflet-right.leaflet-bottom .leaflet-control.leaflet-control-scale .leaflet-control-scale-line:not( :first-child ) { + border: 1px solid #999; + border-color: #000; + border-top: 0; + margin-top: 0; +} + +/** + * WikimediaUI base v0.7.1 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ +/* stylelint-disable no-descending-specificity */ +.mw-kartographer-interactive { + z-index: 0; + /* Leaflet Popups */ + /* Leaflet Controls */ +} +.mw-kartographer-interactive.leaflet-container { + font: 14px 'Helvetica Neue', 'Helvetica', 'Nimbus Sans L', 'Arial', 'Liberation Sans', sans-serif; + color: #222222; +} +.mw-kartographer-interactive.leaflet-container .marker-description img { + width: 100%; + height: auto; + margin-bottom: 0; + margin-top: 0.5em; +} +.mw-kartographer-interactive.leaflet-container a { + color: #3366cc; +} +.mw-kartographer-interactive.leaflet-container a:hover { + color: #447ff5; + text-decoration: underline; +} +.mw-kartographer-interactive.leaflet-container a:active { + color: #2a4b8d; +} +.mw-kartographer-interactive.leaflet-container a:focus { + color: #3366cc; +} +.mw-kartographer-interactive.leaflet-container a.new { + color: #ba0000; +} +.mw-kartographer-interactive.leaflet-container a.new:visited { + color: #a55858; +} +.mw-kartographer-interactive .leaflet-popup-content { + padding: 1em; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-title { + text-align: center; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-title > a { + font-weight: bold; +} +.mw-kartographer-interactive .leaflet-popup-content .marker-description { + text-align: center; +} +.mw-kartographer-interactive .leaflet-popup-content-wrapper, +.mw-kartographer-interactive .map-legends, +.mw-kartographer-interactive .map-tooltip { + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-control-layers, +.mw-kartographer-interactive .leaflet-bar { + background-color: #f8f9fa; + border: 0; + box-shadow: none; +} +.mw-kartographer-interactive .leaflet-bar > a, +.mw-kartographer-interactive .leaflet-bar > a:hover { + color: #000; + border: 1px solid #a2a9b1; + border-radius: 2px; + border-bottom: 0; + box-sizing: content-box; +} +.mw-kartographer-interactive .leaflet-bar > a:hover { + border-color: #a2a9b1; + background-color: #ffffff; +} +.mw-kartographer-interactive .leaflet-bar > a:active { + border-color: #72777d; + background-color: #c8ccd1; +} +.mw-kartographer-interactive .leaflet-bar > a:only-of-type { + border-bottom: 1px solid #a2a9b1; + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-bar > a:first-child:not( :only-of-type ) { + border-radius: 2px 2px 0 0; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child { + border-bottom: 1px solid #a2a9b1; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:hover { + border-bottom: 1px solid #a2a9b1; + border-color: #a2a9b1; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:active { + border-bottom: 1px solid #a2a9b1; + border-color: #72777d; +} +.mw-kartographer-interactive .leaflet-bar > a:last-child:not( :only-of-type ) { + border-radius: 0 0 2px 2px; +} +.mw-kartographer-interactive .leaflet-bar > a:hover:only-of-type { + border-radius: 2px; +} +.mw-kartographer-interactive .leaflet-bar > .oo-ui-icon-close, +.mw-kartographer-interactive .leaflet-bar > .oo-ui-icon-fullScreen { + background-position: center center; +} +.mw-kartographer-interactive .leaflet-control-attribution:after, +.mw-kartographer-interactive .leaflet-control-zoom-in, +.mw-kartographer-interactive .leaflet-control-zoom-out, +.mw-kartographer-interactive .leaflet-popup-close-button, +.mw-kartographer-interactive .leaflet-control-layers-toggle, +.mw-kartographer-interactive .map-tooltip .close, +.mw-kartographer-interactive .leaflet-container.dark .map-tooltip .close, +.mw-kartographer-interactive .mapbox-icon { + opacity: 1; +} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.math.scripts.css b/dist/www/-/s/css_modules/ext.math.scripts.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.math.scripts.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.math.styles.css b/dist/www/-/s/css_modules/ext.math.styles.css new file mode 100644 index 000000000..21272ab21 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.math.styles.css @@ -0,0 +1 @@ +@namespace m url(http:/www.w3.org/1998/Math/MathML);.mwe-math-mathml-inline{display:inline !important}.mwe-math-mathml-display{display:block !important;margin-left:auto;margin-right:auto}.mwe-math-mathml-a11y{clip:rect( 1px,1px,1px,1px );overflow:hidden;position:absolute;width:1px;height:1px;opacity:0}.mwe-math-fallback-image-inline{display:inline-block;vertical-align:middle}.mwe-math-fallback-image-display{display:block;margin-left:auto !important;margin-right:auto !important}.mwe-math-fallback-source-inline{display:inline;vertical-align:middle}.mwe-math-fallback-source-display{display:block;margin-left:auto;margin-right:auto}img.tex{vertical-align:middle}div.mwe-math-element{overflow-x:auto;max-width:100%} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.scribunto.logs.css b/dist/www/-/s/css_modules/ext.scribunto.logs.css new file mode 100644 index 000000000..535f0d740 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.scribunto.logs.css @@ -0,0 +1 @@ +.scribunto-limitreport-logs{margin:0;white-space:pre-wrap} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.timeline.styles.css b/dist/www/-/s/css_modules/ext.timeline.styles.css new file mode 100644 index 000000000..2eace9dc3 --- /dev/null +++ b/dist/www/-/s/css_modules/ext.timeline.styles.css @@ -0,0 +1 @@ +.timeline-wrapper{max-width:100%;overflow:auto} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/ext.tmh.thumbnail.styles.css b/dist/www/-/s/css_modules/ext.tmh.thumbnail.styles.css new file mode 100644 index 000000000..ae503a8ec --- /dev/null +++ b/dist/www/-/s/css_modules/ext.tmh.thumbnail.styles.css @@ -0,0 +1,2 @@ +.mediaContainer,.PopUpMediaTransform{position:relative;display:block} +.thumb .mediaContainer,.thumb .PopUpMediaTransform{margin:0 auto} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/inserted_style.css b/dist/www/-/s/css_modules/inserted_style.css new file mode 100644 index 000000000..08b573838 --- /dev/null +++ b/dist/www/-/s/css_modules/inserted_style.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * Information from this CSS has been included in + * style-mobile.css to make transforms easier. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/inserted_style_mobile.css b/dist/www/-/s/css_modules/inserted_style_mobile.css new file mode 100644 index 000000000..08b573838 --- /dev/null +++ b/dist/www/-/s/css_modules/inserted_style_mobile.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * Information from this CSS has been included in + * style-mobile.css to make transforms easier. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mediawiki.action.view.redirectPage.css b/dist/www/-/s/css_modules/mediawiki.action.view.redirectPage.css new file mode 100644 index 000000000..02232a297 --- /dev/null +++ b/dist/www/-/s/css_modules/mediawiki.action.view.redirectPage.css @@ -0,0 +1 @@ +.redirectMsg p{overflow:hidden;height:0}.redirectText{list-style:none none;display:inline;margin:0 !important;padding:0 !important}.mw-content-ltr .redirectText li{display:inline;margin:0;padding:0;padding-left:42px;background:transparent url(/w/resources/src/mediawiki.action/images/nextredirect-ltr.png?778f7) bottom left no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/nextredirect-ltr.svg?5185f)}.mw-content-ltr .redirectText li:first-child{padding-left:47px;background:transparent url(/w/resources/src/mediawiki.action/images/redirect-ltr.png?926f7) bottom left no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/redirect-ltr.svg?c4628)}.mw-content-rtl .redirectText li{display:inline;margin:0;padding:0;padding-right:42px;background:transparent url(/w/resources/src/mediawiki.action/images/nextredirect-rtl.png?3fa7a) bottom right no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/nextredirect-rtl.svg?b6779)}.mw-content-rtl .redirectText li:first-child{padding-right:47px;background:transparent url(/w/resources/src/mediawiki.action/images/redirect-rtl.png?adb14) bottom right no-repeat;background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.action/images/redirect-rtl.svg?4260c)}.redirectText{font-size:140%}.redirectMsg p{margin:0} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mediawiki.page.gallery.styles.css b/dist/www/-/s/css_modules/mediawiki.page.gallery.styles.css new file mode 100644 index 000000000..abc0ae56c --- /dev/null +++ b/dist/www/-/s/css_modules/mediawiki.page.gallery.styles.css @@ -0,0 +1 @@ +@media print{li.gallerybox{vertical-align:top;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #c8ccd1;background-color:#f8f9fa;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.galleryfilename{display:block}.galleryfilename-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.mw-gallery-nolines li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-nolines li.gallerybox div.gallerytext{text-align:center}ul.mw-gallery-packed li.gallerybox div.thumb,ul.mw-gallery-packed-overlay li.gallerybox div.thumb,ul.mw-gallery-packed-hover li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-packed li.gallerybox div.thumb img,ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,ul.mw-gallery-packed-hover li.gallerybox div.thumb img{margin:0 auto}ul.mw-gallery-packed-hover li.gallerybox,ul.mw-gallery-packed-overlay li.gallerybox{position:relative}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:hidden;height:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:absolute;background:#fff;background:rgba( 255,255,255,0.8 );padding:5px 10px;bottom:0;left:0;height:auto;max-height:40%;overflow:hidden;font-weight:bold;margin:2px}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover{overflow:visible;max-height:none}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p{text-overflow:clip;white-space:normal;overflow:visible}ul.mw-gallery-packed-hover,ul.mw-gallery-packed-overlay,ul.mw-gallery-packed{text-align:center}ul.gallery.mw-gallery-slideshow{display:block;margin:4em 0}ul.gallery.mw-gallery-slideshow .gallerycaption{font-size:1.3em;margin:0}ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled{margin-bottom:1.3em}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons{opacity:0.5;padding:1.3em 0}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement{margin:0 2em}.mw-gallery-slideshow li.gallerybox.slideshow-current{background:#efefef}.mw-gallery-slideshow .gallerybox > div{max-width:120px}ul.mw-gallery-slideshow li.gallerybox div.thumb{border:0;background:transparent}ul.mw-gallery-slideshow li.gallerycarousel{display:block;text-align:center}.mw-gallery-slideshow-img-container a{display:block} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mediawiki.toc.css b/dist/www/-/s/css_modules/mediawiki.toc.css new file mode 100644 index 000000000..d589c7b12 --- /dev/null +++ b/dist/www/-/s/css_modules/mediawiki.toc.css @@ -0,0 +1 @@ +@media screen{.tochidden,.toctoggle{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.toctoggle{font-size:94%}}@media print{#toc.tochidden,.toc.tochidden,.toctoggle{display:none}} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mediawiki.ui.checkbox.css b/dist/www/-/s/css_modules/mediawiki.ui.checkbox.css new file mode 100644 index 000000000..890ac39d2 --- /dev/null +++ b/dist/www/-/s/css_modules/mediawiki.ui.checkbox.css @@ -0,0 +1 @@ +.mw-ui-checkbox{display:inline-block;line-height:1.5625em;vertical-align:middle}.mw-ui-checkbox:not(#noop){display:table;position:relative}.mw-ui-checkbox:not(#noop) *{font-size:inherit;vertical-align:middle}.mw-ui-checkbox:not(#noop) [type='checkbox']{display:table-cell;position:relative;width:1.5625em;height:1.5625em;max-width:none;margin:0;opacity:0;z-index:1}.mw-ui-checkbox:not(#noop) [type='checkbox'] + label{display:table-cell;padding-left:0.4em}.mw-ui-checkbox:not(#noop) [type='checkbox'] + label:before{content:'';background-color:#fff;background-origin:border-box;background-position:center center;background-repeat:no-repeat;background-size:0 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;top:50%;left:0;width:1.5625em;height:1.5625em;margin-top:-0.78125em;border:1px solid #72777d;border-radius:2px}.mw-ui-checkbox:not(#noop) [type='checkbox']:checked + label:before{background-image:url(/w/resources/src/mediawiki.ui/components/images/checkbox-checked.png?6f2e5);background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22%3E %3Cpath fill=%22%23fff%22 d=%22M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z%22/%3E %3C/svg%3E");background-size:90% 90%}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled{cursor:pointer}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled + label{cursor:pointer}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled + label:before{cursor:pointer;-webkit-transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms;-moz-transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms;transition:background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:focus + label:before{border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:hover + label:before{border-color:#3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:active + label:before{background-color:#2a4b8d;border-color:#2a4b8d;box-shadow:inset 0 0 0 1px #2a4b8d}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked + label:before{background-color:#3366cc;border-color:#3366cc}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:focus + label:before{background-color:#3366cc;border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:hover + label:before{background-color:#447ff5;border-color:#447ff5}.mw-ui-checkbox:not(#noop) [type='checkbox']:enabled:checked:active + label:before{background-color:#2a4b8d;border-color:#2a4b8d}.mw-ui-checkbox:not(#noop) [type='checkbox']:disabled + label:before{background-color:#c8ccd1;border-color:#c8ccd1} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mediawiki.ui.input.css b/dist/www/-/s/css_modules/mediawiki.ui.input.css new file mode 100644 index 000000000..26e2e57a9 --- /dev/null +++ b/dist/www/-/s/css_modules/mediawiki.ui.input.css @@ -0,0 +1 @@ +.mw-ui-input{background-color:#fff;color:#000000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%;border:1px solid #a2a9b1;border-radius:2px;padding:0.57142857em 0.57142857em 0.5em;box-shadow:inset 0 0 0 0.1em #fff;font-family:inherit;font-size:inherit;line-height:1.07142857em;vertical-align:middle}.mw-ui-input::-webkit-input-placeholder{color:#72777d;opacity:1}.mw-ui-input:-ms-input-placeholder{color:#72777d;opacity:1}.mw-ui-input::-moz-placeholder{color:#72777d;opacity:1}.mw-ui-input:-moz-placeholder{color:#72777d;opacity:1}.mw-ui-input::placeholder{color:#72777d;opacity:1}.mw-ui-input:invalid{box-shadow:none}.mw-ui-input:hover{border-color:#72777d}.mw-ui-input:focus{border-color:#3366cc;box-shadow:inset 0 0 0 1px #3366cc;outline:0}.mw-ui-input:not(:disabled){-webkit-transition:color 100ms,border-color 100ms,box-shadow 100ms;-moz-transition:color 100ms,border-color 100ms,box-shadow 100ms;transition:color 100ms,border-color 100ms,box-shadow 100ms}.mw-ui-input:disabled{border-color:#eaecf0;color:#c8ccd1}.mw-ui-input[type='search']{-webkit-appearance:textfield}.mw-ui-input[type='search']::-ms-clear{display:none}.mw-ui-input[type='search']::-webkit-search-cancel-button,.mw-ui-input[type='search']::-webkit-search-decoration{-webkit-appearance:none}textarea.mw-ui-input{min-height:8em}.mw-ui-input-inline{display:inline-block;width:auto;max-width:100%}.mw-ui-input-large{margin-top:0;margin-bottom:0}.mw-ui-input-large + .mw-ui-input-large{margin-top:-1px}.mw-ui-input-large:focus{position:relative}input.mw-ui-input-large{font-size:1.75em;font-weight:bold;line-height:1.25em;padding:0.3673em 0.3265em 0.3265em} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/minerva.css b/dist/www/-/s/css_modules/minerva.css new file mode 100644 index 000000000..910cdc65f --- /dev/null +++ b/dist/www/-/s/css_modules/minerva.css @@ -0,0 +1 @@ +html,body,div,span,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,ins,em,img,small,strike,strong,sub,sup,tt,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,input,textarea,button,select,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline;background:none}table,caption,tbody,tfoot,thead,tr,th,td{font-size:100%}caption{font-weight:bold}button{border:0;background-color:transparent}body{line-height:1;-webkit-tap-highlight-color:transparent}input{line-height:normal}ol,ul{list-style:none}table{border-collapse:collapse}html{-webkit-text-size-adjust:none;font-size:100%}body{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;line-height:1.4;color:#222222;background:#fff}.content{line-height:1.65;word-wrap:break-word}@media all and (max-width:320px - 1){body{font-size:0.8em}.content{margin:0 12px}}.client-js .collapsible-block{display:none}.client-js .collapsible-block.open-block{display:block}.nomobile{display:none !important}@media all and (min-width:720px){.client-js [onclick] + .collapsible-block{display:block}}.content figure,.content .thumb{margin:0.6em 0}.content figure .thumbinner,.content .thumb .thumbinner{margin:0 auto;max-width:100% !important}.content figcaption,.content .thumbcaption{margin:0.5em 0 0;font-size:0.8em;line-height:1.5;padding:0 !important;color:#54595d}.content .thumbcaption{width:auto !important}.content .thumbborder{border:1px solid #c8ccd1}.content .magnify,.content figure[typeof*='mw:Image/Thumb'] > a:after,.content figure[typeof*='mw:Video/Thumb'] > a:after,.content figure[typeof*='mw:Audio/Thumb'] > a:after{display:none}.content img{vertical-align:middle}.content .floatright{clear:right;float:right;margin:0 0 0.6em 0.6em}.content .floatleft{clear:left;float:left;margin:0 0.6em 0.6em 0}.content a > img{max-width:100% !important;height:auto !important}.content .noresize{max-width:100%;overflow-x:auto}.content .noresize a > img{max-width:none !important}h1{font-size:1.7em}h2{font-size:1.5em}h3{font-size:1.2em;font-weight:bold}h4{font-weight:bold}.pre-content h1,.content h1,.content h2{font-family:'Linux Libertine','Georgia','Times',serif}h3,h4,h5,h6{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif}.pre-content h1,.content h1,.content h2,h3,h4,h5,h6{line-height:1.3;word-wrap:break-word;word-break:break-word}.content h2,.content h3,.content h4,.content h5,.content h6{padding:0.5em 0}blockquote{border-left:3px solid #c8ccd1;font-family:'Linux Libertine','Georgia','Times',serif;font-size:1.1em;padding:1em 25px 1em 30px;position:relative;overflow:hidden}.content{}.content ul{list-style:square outside;padding-left:1em}.content ul > li > ul{list-style-type:disc}.content ul > li > ul > li > ul{list-style-type:circle}.content ol{list-style:decimal inside}.content ol ol,.content ul ol,.content ol ul,.content ul ul{margin-left:1em}.content ol li,.content ul li{margin-bottom:10px}.content ol li:last-child,.content ul li:last-child{margin-bottom:inherit}dl{margin-left:1em}dl dt{font-weight:bold}dl dd{display:block;overflow:auto}body.mw-hide-empty-elt .mw-empty-elt{display:none}a{text-decoration:none;color:#002bb8}a:visited{color:#5a3696}a:active{color:#faa700}a:hover{text-decoration:underline}a.new,a.new:visited,a.new:hover{color:#dd3333}a.new > *,a.new:visited > *,a.new:hover > *{color:#dd3333}a.external{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVElEQVR42n3PgQkAIAhEUXdqJ3dqJ3e6IoTPUSQcgj4EQ5IlUiLE0Jil3PECXhcHGBhZ8kg4hwxAu3MZeCGeyFnAXp4hqNQPnt7QL0nADpD6wHccLvnAKksq8iiaAAAAAElFTkSuQmCC);background-image:url(/w/skins/MinervaNeue/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf)!ie;background-image:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3C%3Fxml version=%221.0%22 encoding=%22UTF-8%22%3F%3E%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2210%22 height=%2210%22 viewBox=%220 0 10 10%22%3E%3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M.5 3.518h5.982V9.5H.5z%22/%3E%3Cpath fill=%22%2336c%22 d=%22M4.755-.16H9.99v5.39L8.417 6.774l-1.31-1.31L4.383 8.19 1.695 5.5l2.808-2.807-1.31-1.31z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M8.984.845l.022 4.884L7.19 3.91 4.308 6.79 3.08 5.567l2.882-2.88L4.112.833z%22/%3E%3C/svg%3E");background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/MinervaNeue/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf);background-repeat:no-repeat;background-position:center right;padding-right:13px}.return-link,#mw-mf-last-modified{display:block;font-size:0.9em;margin-top:1.5em}.plainlinks a{background:none !important;padding:0 !important}.mw-parser-output{counter-reset:mw-numbered-ext-link}.mw-parser-output a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}.content p{margin:0.5em 0 1em 0}strong,b{font-weight:bold}em,i{font-style:italic}kbd,samp,code,pre{font-family:monospace,monospace;border:solid 1px #c8ccd1;white-space:pre-wrap}code{padding:0.2em 0.5em}pre{padding:1em}.mw-ref,sup{vertical-align:super}sub{vertical-align:sub}.mw-ref,sub,sup{font-size:0.75em;line-height:1}.content table{margin:1em 0;overflow:auto;overflow-y:hidden;overflow-x:auto;display:block;width:100% !important}.content table caption{display:block;text-align:left}.content table.wikitable{border:1px solid #54595d;border-color:rgba(84,89,93,0.3)}.content table.wikitable > tr > th,.content table.wikitable > tr > td,.content table.wikitable > * > tr > th,.content table.wikitable > * > tr > td{border:1px solid #54595d;border-color:rgba(84,89,93,0.3);padding:0.2em}.content table.wikitable > tr > th,.content table.wikitable > * > tr > th{background-color:#eaecf0}.collapsible td{width:auto !important}.content .vertical-navbox,.content .navbox{display:none}.content .action-edit .fmbox,.content .tmbox,.content .ambox,.content #coordinates,.content .topicon,.content .metadata{display:none !important}.content table{float:none !important;margin-left:0 !important;margin-right:0 !important}.content table.infobox{font-size:90%;position:relative;border:1px solid #eaecf0;margin-bottom:2em;text-align:left;background-color:#f8f9fa}.content table.infobox th,.content table.infobox td{vertical-align:top;border:0;border-bottom:1px solid #eaecf0;padding:7px 10px}.content table.infobox td{width:100%}.content table.infobox tr:last-child th,.content table.infobox tr:last-child td{border:0}#filetoc,.mw-editsection{display:none}.skin-minerva .portal-column-left-wide,.skin-minerva .portal-column-left,.skin-minerva .portal-column-right,.skin-minerva .portal-column-right-narrow{float:none;width:100%}.references-column-count,.column-count{-moz-column-width:35em;-webkit-column-width:35em;column-width:35em}.references li:target{background-color:#def}.hatnote,.dablink,.rellink{padding:5px 7px;color:#54595d;font-size:0.8em;background-color:#f8f9fa;margin-bottom:1px}.hatnote a,.dablink a,.rellink a{color:#3366cc}.quotebox{margin:0 0 0.8em !important;width:auto !important}@media all and (min-width:720px){.content .vertical-navbox,.content .navbox{display:inherit}}@media all and (max-width:720px){.gallery .gallerybox{width:100% !important}.gallery .gallerybox div{width:100% !important}.content table.multicol > tr > td,.content table.multicol > tbody > tr > td{display:block !important;width:auto !important}.content .thumb .thumbinner{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;justify-content:center;flex-wrap:wrap;align-content:flex-start}.content .thumb .thumbinner > .thumbcaption{-webkit-box-pack:justify;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-moz-box-flex:1;width:100%;-ms-flex:1 0 100%;flex:1 0 100%;-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-ms-flex-order:1;order:1;display:block}}[dir='rtl'] .content .infobox{text-align:left}span.mw-ref{vertical-align:super;line-height:1;font-size:smaller;unicode-bidi:embed}span.mw-ref a[data-mw-group]:after{content:'[' attr( data-mw-group ) ' ' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='decimal']:after{content:'[' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='lower-alpha']:after{content:'[' counter( mw-Ref,lower-alpha ) ']'}span.mw-ref a[data-mw-group='upper-alpha']:after{content:'[' counter( mw-Ref,upper-alpha ) ']'}span.mw-ref a[data-mw-group='lower-greek']:after{content:'[' counter( mw-Ref,lower-greek ) ']'}span.mw-ref a[data-mw-group='lower-roman']:after{content:'[' counter( mw-Ref,lower-roman ) ']'}span.mw-ref a[data-mw-group='upper-roman']:after{content:'[' counter( mw-Ref,upper-roman ) ']'}span.mw-ref a[data-mw-group='error-test']:after{content:'[' counter( mw-Ref,symbols( cyclic 'first' 'second' 'last!' ) ) ']'}span.mw-ref a:after{content:'[' counter( mw-Ref,decimal ) ']'}x-thereisnoelementwiththisname:after,span.mw-reflink-text{display:none}ol.mw-references{counter-reset:mw-ref-linkback}ol.mw-references li{counter-increment:mw-ref-linkback}[rel='mw:referencedBy']{counter-reset:mw-ref-linkback -1}[rel='mw:referencedBy']:before{content:'¬ニム '}span[rel='mw:referencedBy'] a:before{counter-increment:mw-ref-linkback;content:counters( mw-ref-linkback,'.',decimal );vertical-align:super;line-height:1;font-size:smaller}span[rel='mw:referencedBy'] a:after{content:' '}x-thereisnoelementwiththisname[rel='mw:referencedBy']:before,span.mw-linkback-text{display:none}#issues_container div.hatnote{display:none}a.disambig_button{text-decoration:none;color:#555;float:left}a.disambig_button:active{color:#b0b0b0}.hide-when-compact{display:none}.mobile-float-reset{float:none !important;width:100% !important}#content .vertical-navbox,#content .navbox{display:none}@media all and (min-width:768px){#content .vertical-navbox,#content .navbox{display:inherit}}@media screen,handheld{.citation *.printonly{display:none}}.citation{word-wrap:break-word}.navbar{display:inline;font-size:88%;font-weight:normal}.navbar ul{display:inline;white-space:nowrap}.navbar li{word-spacing:-0.125em}.navbar.mini li span{font-variant:small-caps}.infobox .navbar{font-size:100%}.navbox .navbar{display:block;font-size:100%}.navbox-title .navbar{float:left;text-align:left;margin-right:0.5em;width:6em}.hlist dl,.hlist ol,.hlist ul{margin:0;padding:0}.hlist dd,.hlist dt,.hlist li{margin:0;display:inline}.hlist dl dl,.hlist dl ol,.hlist dl ul,.hlist ol dl,.hlist ol ol,.hlist ol ul,.hlist ul dl,.hlist ul ol,.hlist ul ul{display:inline}#content .hlist dt:after{content:':'}#content .hlist dd:after,#content .hlist li:after{content:' ᅡᄋ ';font-weight:bold}#content .hlist dd:last-child:after,#content .hlist dt:last-child:after,#content .hlist li:last-child:after{content:none}#content .hlist dd dd:first-child:before,#content .hlist dd dt:first-child:before,#content .hlist dd li:first-child:before,#content .hlist dt dd:first-child:before,#content .hlist dt dt:first-child:before,#content .hlist dt li:first-child:before,#content .hlist li dd:first-child:before,#content .hlist li dt:first-child:before,#content .hlist li li:first-child:before{content:' (';font-weight:normal}#content .hlist dd dd:last-child:after,#content .hlist dd dt:last-child:after,#content .hlist dd li:last-child:after,#content .hlist dt dd:last-child:after,#content .hlist dt dt:last-child:after,#content .hlist dt li:last-child:after,#content .hlist li dd:last-child:after,#content .hlist li dt:last-child:after,#content .hlist li li:last-child:after{content:') ';font-weight:normal}#content .hlist ol{counter-reset:list-item}#content .hlist ol > li{counter-increment:list-item}#content .hlist ol > li:before{content:' ' counter(list-item) ' '}#content .hlist dd ol > li:first-child:before,#content .hlist dt ol > li:first-child:before,#content .hlist li ol > li:first-child:before{content:' (' counter(list-item) ' '}.plainlist ul{list-style:none}.compact-ambox table .mbox-image,.compact-ambox table .mbox-imageright,.compact-ambox table .mbox-empty-cell{display:none}.compact-ambox table.ambox{border:0;border-collapse:collapse;background:transparent;margin:0 0 0 1.6em !important;padding:0 !important;width:auto;display:block}.compact-ambox table.mbox-small-left{font-size:100%;width:auto;margin:0}.compact-ambox table .mbox-text{padding:0 !important;margin:0 !important}.compact-ambox table .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:square;list-style-image:url(data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=)}.compact-ambox .hide-when-compact{display:none}.rellink,.dablink,.hatnote{font-style:italic}.rellink i,.dablink i,.hatnote i{font-style:normal}div.rellink,div.dablink,div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.geo-default,.geo-dms,.geo-dec{display:inline}.geo-nondefault,.geo-multi-punct{display:none}.longitude,.latitude{white-space:nowrap}.nowrap,.nowraplinks a,.nowraplinks .selflink,sup.reference a{white-space:nowrap}.wrap,.wraplinks a{white-space:normal}.sysop-show,.accountcreator-show,.autoconfirmed-show{display:none}#li-coordinates{background-image:url(/w/extensions/MobileApp/images/80px-Edge-firefox.png?120ff);float:right;display:none;-webkit-background-size:auto 30px;background-size:auto 30px}.client-js .content_block.coordinates{display:none;text-align:right;margin-bottom:0.5em;font-size:smaller}.client-js .content_block.coordinates .latitude{display:none;padding-left:20px;background-image:url(/w/extensions/MobileApp/images/50px-Edge-firefox.png?14d02);background-repeat:no-repeat;-webkit-background-size:auto 15px;background-size:auto 15px}.alpha #li-coordinates{display:list-item}.client-js .beta .content_block.coordinates{display:block}.client-js .beta .content_block.coordinates .latitude{display:inline}.topicon{display:none}td .sortkey,th .sortkey{display:none;speak:none}.transborder{border:solid transparent}.image_overflow_x_container{max-width:100%;overflow:auto}.visualhide{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}@media screen and (max-width:981px){.portail-gauche,.portail-droite{float:none;width:auto !important}.portail-gauche-inner{padding-right:0}}h2.section_heading{padding:20px 0 10px;margin-bottom:0}h3.section_heading{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;font-weight:bold;padding:15px 0 0 !important}div.issues_container{margin-top:-0.2em;margin-bottom:2.2em;padding-top:1px;padding-bottom:1px;width:100%;display:block;font-size:0.9em;letter-spacing:0.02em;color:#555}span.issues_separator{padding-left:0.6em;padding-right:0.6em;float:left}a.issues_button{text-decoration:none;color:#555;float:left}a.issues_button:active{color:#b0b0b0}.loading{border:4px solid rgba(0,0,0,0.1);border-top:4px solid rgba(0,0,0,0.4);border-radius:100%;-webkit-animation:rot 0.6s infinite linear}@-webkit-keyframes rot{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(359deg)}}#loading_sections{margin:8px auto;height:24px;width:24px}.ipa_button{display:inline-block;margin-bottom:-3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAgCAYAAABHA7voAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABBRJREFUWEfdWflPFkEM5U9HQUGj0WiMmnhrRBMVUeOt4fQG8cALBU8OEUEURK7aN06Xbr/Z/Wb59hd5yYtZ253Zt+203Y+6je0kpHVEp4mI6tajOGEiMGRMePkN0YHesK0M3hrixygRem1GvsDd94gWl4mWV4jufyba2h32WytPPXMP4bDCe2QxhDwfWZ+RL/DxqHNKMP2baMfdsG9RbmBmPXwWYt1lD0a2QAhZWHJOCYaniBo6wv5FWVRcEcgejGyBN945hxSO9ad9dt8n2lRQMNK8VnHVbpe9GNkCR386hwS4blD2zZ1EE7NEIzNEB/vS9+YRZ9oCgucX/YXBWt6F7MUIC9zFxQWFRePaYNqn9aU3MOD7gItQc1fax/Iwv4gYLAdeQgwkM2Q/Rlhg2ytnTAABEK19Pv/wRo/ZBaJtPWmfEMd++Rs81hKhapC9GGGBvSPOmACpqO04ezbCne/TPkhhfa3ZxtFHynfwPXYdAaIhzIO2R0fQRqd/LG2/9NobPPCQ6Jlih7gxFnD9LVFjlSLUMewXKQFRAlEVf/5xxgSoqNqnz0R4nNNO28+98AYGInUopwgdf+IdFfCgS9yiwCKIEtjEhWLJOwrODKR9Pkx7g0c/DwTa/pQjrjE9H24nONc6xWKQ5y/FSdZnVApEobA4rvofWsU3PpMa7Zxmeg3bYh5+SduFUzwZlYmoCGKCsTj8eNWOSeb7nDd43FQpjBdg7Rioxa55+vm/9EfVRpac5dS+yOf7PBch2Fr5Gi/HvrAsRAkMRVBPMBAwaQTcNgJGzAOhKmu7UA8OIWJexb+2tQB5qSr3MyoFolnb0o23qX0+mSr7yAh4Ys7g4GTaboXh2okJnNMLpifHnFm5l1EpcBOXeDRtjatmink27g0eaCvajnQD8KJ6Pub3RKEVfZSz5grvm9Un8yBrMCoFgtWKBPqbBubL7WqKgaD3/OVxgluAvs+ykf1a+Jtw3wNek88izmov7zVgXqBGzREEbZnHQK3t+x9WbmSjXO18gd0f/M2RiBEHyPqMsECkhoaL0J1VOx4e45sGSj56qF6nGvdw5Ow3ZxmQ9RlhgfsQIWdfBUq59rFpirRey9f+DA8BZUPWZoQFIkK2FQzxmdI+W/jDdYZHOhQB/F7TFFFIQoxNuyKQtRlhgWCXOR94Dpw97YPG3PI0/X9FOWcqdhmQtRnZAnE+7Ew68DXsWwtjIlg0yrI2I1sg+GrCOSVAOuqxrVbiKAybwb0MyPqMfIH4wVe/PXzj7TVpWgullaBg4RMNvTMW+rlshGV9Rr5AEFML7sdvLkXbQCwreiaPbFKRMTo2cwHDkH+Es8e2Jwu9DsMJzBW5kzc6WWMhqUYZqktm6o8vVSP5n9FpcgLr6+vXLYmo7i97FXYYGMQFoAAAAABJRU5ErkJggg==);background-image:url(/w/extensions/MobileApp/images/ipa.png?736e4)!ie;background-size:28px 16px;height:16px;width:28px}.mcs-ipa{display:none}.mw-body-content{counter-reset:mw-numbered-ext-link}.mw-body-content a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}.content figure img,.content figure video{margin:0.6em auto 0.6em auto;display:block}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.galleryfilename{display:block}.galleryfilename-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.mw-gallery-nolines li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-nolines li.gallerybox div.gallerytext{text-align:center}ul.mw-gallery-packed li.gallerybox div.thumb,ul.mw-gallery-packed-overlay li.gallerybox div.thumb,ul.mw-gallery-packed-hover li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-packed li.gallerybox div.thumb img,ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,ul.mw-gallery-packed-hover li.gallerybox div.thumb img{margin:0 auto}ul.mw-gallery-packed-hover li.gallerybox,ul.mw-gallery-packed-overlay li.gallerybox{position:relative}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:hidden;height:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:absolute;background:#fff;background:rgba( 255,255,255,0.8 );padding:5px 10px;bottom:0;left:0;height:auto;max-height:40%;overflow:hidden;font-weight:bold;margin:2px}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover{overflow:visible;max-height:none}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p{text-overflow:clip;white-space:normal;overflow:visible}ul.mw-gallery-packed-hover,ul.mw-gallery-packed-overlay,ul.mw-gallery-packed{text-align:center}ul.gallery.mw-gallery-slideshow{display:block;margin:4em 0}ul.gallery.mw-gallery-slideshow .gallerycaption{font-size:1.3em;margin:0}ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled{margin-bottom:1.3em}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons{opacity:0.5;padding:1.3em 0}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement{margin:0 2em}.mw-gallery-slideshow li.gallerybox.slideshow-current{background:#efefef}.mw-gallery-slideshow .gallerybox > div{max-width:120px}ul.mw-gallery-slideshow li.gallerybox div.thumb{border:0;background:transparent}ul.mw-gallery-slideshow li.gallerycarousel{display:block;text-align:center}.mw-gallery-slideshow-img-container a{display:block}@media screen{li.gallerybox div.thumb{border:1px solid #c8ccd1;background-color:#f8f9fa}}@media print{li.gallerybox{vertical-align:top;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{background-color:#fff;border:1px solid #ccc}div.gallerytext{overflow:visible}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:visible;height:auto}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:static;background:transparent;padding:0;bottom:0;max-height:none;overflow:visible;font-weight:normal;margin:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:clip;white-space:normal;overflow:visible}}.mw-parser-output{counter-reset:mw-numbered-ext-link}.mw-parser-output a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}span.reference{font-size:80%;line-height:1;vertical-align:super;unicode-bidi:-moz-isolate;unicode-bidi:isolate}sup,sub{line-height:1}figure[typeof*='mw:Image'],figure[typeof*='mw:Video'],figure[typeof*='mw:Audio']{margin:0}figure[typeof*='mw:Image'] a,figure[typeof*='mw:Video'] a,figure[typeof*='mw:Audio'] a{border:0}figure[typeof*='mw:Image'].mw-halign-right,figure[typeof*='mw:Video'].mw-halign-right,figure[typeof*='mw:Audio'].mw-halign-right{margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof*='mw:Image'].mw-halign-left,figure[typeof*='mw:Video'].mw-halign-left,figure[typeof*='mw:Audio'].mw-halign-left{margin:0.5em 1.4em 1.3em 0;clear:left;float:left}figure[typeof*='mw:Image'].mw-halign-none,figure[typeof*='mw:Video'].mw-halign-none,figure[typeof*='mw:Audio'].mw-halign-none{margin:0;clear:none;float:none}figure[typeof*='mw:Image'].mw-halign-center,figure[typeof*='mw:Video'].mw-halign-center,figure[typeof*='mw:Audio'].mw-halign-center{margin:0 auto 0.5em auto;display:table;border-collapse:collapse;clear:none;float:none}figure[typeof*='mw:Image'] > figcaption,figure[typeof*='mw:Video'] > figcaption,figure[typeof*='mw:Audio'] > figcaption{display:none}figure[typeof~='mw:Image/Thumb'],figure[typeof~='mw:Video/Thumb'],figure[typeof~='mw:Audio/Thumb'],figure[typeof~='mw:Image/Frame'],figure[typeof~='mw:Video/Frame'],figure[typeof~='mw:Audio/Frame']{display:table;text-align:center;border:1px solid #c8ccd1;border-collapse:separate;border-spacing:3px;background-color:#f8f9fa;width:1px;margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof~='mw:Image/Thumb'].mw-halign-center,figure[typeof~='mw:Video/Thumb'].mw-halign-center,figure[typeof~='mw:Audio/Thumb'].mw-halign-center,figure[typeof~='mw:Image/Frame'].mw-halign-center,figure[typeof~='mw:Video/Frame'].mw-halign-center,figure[typeof~='mw:Audio/Frame'].mw-halign-center{border-collapse:separate}figure[typeof~='mw:Image/Thumb'] > *:first-child > img,figure[typeof~='mw:Video/Thumb'] > *:first-child > img,figure[typeof~='mw:Audio/Thumb'] > *:first-child > img,figure[typeof~='mw:Image/Frame'] > *:first-child > img,figure[typeof~='mw:Video/Frame'] > *:first-child > img,figure[typeof~='mw:Audio/Frame'] > *:first-child > img,figure[typeof~='mw:Image/Thumb'] > *:first-child > video,figure[typeof~='mw:Video/Thumb'] > *:first-child > video,figure[typeof~='mw:Audio/Thumb'] > *:first-child > video,figure[typeof~='mw:Image/Frame'] > *:first-child > video,figure[typeof~='mw:Video/Frame'] > *:first-child > video,figure[typeof~='mw:Audio/Frame'] > *:first-child > video{border:1px solid #c8ccd1;background:#fff}figure[typeof~='mw:Image/Thumb'] > figcaption,figure[typeof~='mw:Video/Thumb'] > figcaption,figure[typeof~='mw:Audio/Thumb'] > figcaption,figure[typeof~='mw:Image/Frame'] > figcaption,figure[typeof~='mw:Video/Frame'] > figcaption,figure[typeof~='mw:Audio/Frame'] > figcaption{display:block;font-size:88.4%;line-height:1.4em;text-align:left;padding:3px}figure[typeof*='mw:Image/Thumb'] > a:after,figure[typeof*='mw:Video/Thumb'] > a:after,figure[typeof*='mw:Audio/Thumb'] > a:after{content:'';width:15px;height:11px;margin:3px;margin-bottom:0}.mw-content-ltr figure[typeof*='mw:Image/Thumb'] > a:after,.mw-content-ltr figure[typeof*='mw:Video/Thumb'] > a:after,.mw-content-ltr figure[typeof*='mw:Audio/Thumb'] > a:after{float:right;background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704);background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.svg?7fa0a)}.mw-content-rtl figure[typeof*='mw:Image/Thumb'] > a:after,.mw-content-rtl figure[typeof*='mw:Video/Thumb'] > a:after,.mw-content-rtl figure[typeof*='mw:Audio/Thumb'] > a:after{float:left;background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.png?a9fb3);background-image:linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.svg?96de0)}.mw-image-border > *:first-child > img,.mw-image-border > *:first-child > video{border:1px solid #eaecf0}.mw-gallery-traditional .gallerybox .thumb:before{content:'';vertical-align:middle;display:inline-block;height:100%}.mw-gallery-traditional .gallerybox .thumb > *{vertical-align:middle;display:inline-block}.mw-valign-middle > *:first-child > img,.mw-valign-middle > *:first-child > video{vertical-align:middle}.mw-valign-baseline > *:first-child > img,.mw-valign-baseline > *:first-child > video{vertical-align:baseline}.mw-valign-sub > *:first-child > img,.mw-valign-sub > *:first-child > video{vertical-align:sub}.mw-valign-super > *:first-child > img,.mw-valign-super > *:first-child > video{vertical-align:super}.mw-valign-top > *:first-child > img,.mw-valign-top > *:first-child > video{vertical-align:top}.mw-valign-text-top > *:first-child > img,.mw-valign-text-top > *:first-child > video{vertical-align:text-top}.mw-valign-bottom > *:first-child > img,.mw-valign-bottom > *:first-child > video{vertical-align:bottom}.mw-valign-text-bottom > *:first-child > img,.mw-valign-text-bottom > *:first-child > video{vertical-align:text-bottom} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mobile.css b/dist/www/-/s/css_modules/mobile.css new file mode 100644 index 000000000..529dcb6fc --- /dev/null +++ b/dist/www/-/s/css_modules/mobile.css @@ -0,0 +1,64 @@ +/** + * Custom style meant to match the design of mwoffliner mobile version to the mobile version of wikipedia + */ +/*.mw-body-content { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + font-size: 16px; + line-height: 26px; +}*/ +.mw-body-content p { + margin: 0.5em 0 1em 0; +} + +.mw-body p { /*Added GK*/ + margin: 0.5em 0 1em 0; +} + +table.infobox th, table.infobox td { /*Added GK*/ + border-bottom: 1px solid #eaecf0; + padding: 7px 10px; +} + +.mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6 { + padding: 0.5em 0 0; +} +.mw-body h3, .mw-body h2 { + /*clear: both;*/ + /*width: 100%;*/ + margin-bottom: 0.5em; + border-bottom: solid 1px #eaecf0; + font-family: 'Linux Libertine','Georgia','Times',serif; +} +.mw-body h1 { + font-size: 42px; + font-family: 'Linux Libertine','Georgia','Times',serif; /* GK added */ +} +.mw-body h2 { + font-size: 24px; +} +.mw-body h3 { + border-bottom: 0 solid #eaecf0; + font-size: 19px; + font-weight: bold; +} +.mw-body h4 { + border-bottom: 0 solid #eaecf0; + font-size: 16px; +} +h1[tabindex="0"].collapsible-heading > .indicator { + display: none; /* hide the "v" icon for the main title */ +} +@media all and (min-width: 720px) { + .client-js .collapsible-heading .indicator { + display: none !important; /* this is to hide to "v" icone next to titles in desktop */ + } + .float-right { + float: right; + margin-left: 10px; + } +} +@media all and (max-width: 720px) { + .mw-stack, .infobox, .vertical-navbox { + float: none !important; + } +} diff --git a/dist/www/-/s/css_modules/mw.MediaWikiPlayer.loader.css b/dist/www/-/s/css_modules/mw.MediaWikiPlayer.loader.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/s/css_modules/mw.MediaWikiPlayer.loader.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mw.PopUpMediaTransform.css b/dist/www/-/s/css_modules/mw.PopUpMediaTransform.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/s/css_modules/mw.PopUpMediaTransform.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/mw.TMHGalleryHook.js.css b/dist/www/-/s/css_modules/mw.TMHGalleryHook.js.css new file mode 100644 index 000000000..1abb920d7 --- /dev/null +++ b/dist/www/-/s/css_modules/mw.TMHGalleryHook.js.css @@ -0,0 +1,6 @@ +/** + * Dummy stylesheet + * + * This sheet returns an empty css from the ZIM, so it is included here + * to prevent useless retrieval of empty data. + */ \ No newline at end of file diff --git a/dist/www/-/s/css_modules/newstyle_main_page.css b/dist/www/-/s/css_modules/newstyle_main_page.css new file mode 100644 index 000000000..35ded7614 --- /dev/null +++ b/dist/www/-/s/css_modules/newstyle_main_page.css @@ -0,0 +1,166 @@ +html { + box-sizing: border-box; + height: 100%; +} + +/* *, +*:before, +*:after { + box-sizing: inherit; +} */ + +body { + margin: 0; + border-width: 0; + padding: 0; + display: flex; + justify-content: center; +} + +h1, +h2 { + color: #333; + text-shadow: #1114 1px 1px 1px; + text-align: center; + border-bottom: none; + padding: 0; +} + +a { + text-decoration: none; +} + +#content { + width: 100%; + overflow: hidden; + font-size: 1em; + background: black; +} + +#list { + padding: 40px; + background: white; +} + +.nojs #content { + column-count: 4; + column-gap: 0; +} + +.item { + display: block; + position: relative; + overflow: hidden; +} + +.nojs #content .item { + display: inline-block; + width: 100%; +} + +.item img { + width: 100%; + height: auto; + transition: all 0.3s; + transform: scale(1); +} + +.item:hover img { + transform: scale(1.1); +} + +.item figure { + margin: 0; +} + +.item figcaption { + position: absolute; + bottom: 0; + width: 100%; + vertical-align: bottom; + background: rgba(48, 48, 48, 0.5); + color: white; + padding: 0.6em; + font-weight: bold; + transition: all 0.3s; + transform: scale(1); +} + +/* .item:hover figcaption { + transform: scale(1); + bottom: 50%; +} */ + +#footer { + margin: 0; +} +#footer ul { + margin: 0; + margin-left: 10%; +} + +@media only screen and (min-width: 1024px) { + h1 { + font-size: 6vw; + } + h2 { + font-size: 4vw; + } + #content .item { + width: 25%; + } + .nojs #content { + column-count: 4; + } + ul { + column-count: 4; + } +} + +@media only screen and (max-width: 1023px) and (min-width: 768px) { + h1 { + font-size: 6vw; + } + h2 { + font-size: 4vw; + } + #content { + font-size: 1em; + } + #content .item { + width: 33.3333%; + } + .nojs #content { + column-count: 3; + } + ul { + column-count: 2; + } + #footer ul li { + font-size: 0.9em; + } +} + +@media only screen and (max-width: 767px) { + h1 { + font-size: 7vw; + } + h2 { + font-size: 5vw; + } + #content { + font-size: 1.2em; + } + #content .item { + width: 50% + } + .nojs #content { + column-count: 2; + } + ul { + column-count: 1; + } + #footer ul li { + font-size: 1em; + } +} \ No newline at end of file diff --git a/dist/www/-/s/css_modules/style.css b/dist/www/-/s/css_modules/style.css new file mode 100644 index 000000000..684f854aa --- /dev/null +++ b/dist/www/-/s/css_modules/style.css @@ -0,0 +1,7 @@ +/** + * Custom style meant to match the design of mwoffliner mobile version to the mobile version of wikipedia + + DUMMY STYLE: should be overridden by style or style-mobile + + */ + diff --git a/dist/www/-/s/original-style-mobile.css b/dist/www/-/s/original-style-mobile.css new file mode 100644 index 000000000..5ef28a97d --- /dev/null +++ b/dist/www/-/s/original-style-mobile.css @@ -0,0 +1,1093 @@ +html,body,div,span,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,ins,em,img,small,strike,strong,sub,sup,tt,b,u,i,center,dl,dt,dd,fieldset,form,label,legend,input,textarea,button,select,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline;background:none}table,caption,tbody,tfoot,thead,tr,th,td{font-size:100%}caption{font-weight:bold}button{border:0;background-color:transparent}body{line-height:1;-webkit-tap-highlight-color:transparent}input{line-height:normal} +table{border-collapse:collapse}html{-webkit-text-size-adjust:none;font-size:100%}body{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;line-height:1.4;color:#222222;background:#fff}.pre-content,.content,.post-content{margin:0 16px}.content{line-height:1.65;word-wrap:break-word}@media all and (max-width:280px){body{font-size:0.8em}.content{margin:0 12px}}.client-js .collapsible-block{display:none}.client-js .collapsible-block.open-block{display:block}.nomobile{display:none !important}@media all and (min-width:720px){.client-js [onclick] + .collapsible-block{display:block}}.content .thumb{margin:0.6em 0}.content .thumb .thumbinner{margin:0 auto;max-width:100% !important}.content .thumbcaption{margin:0.5em 0 0;font-size:0.8em;line-height:1.5;padding:0 !important;color:#54595d;width:auto !important}.content .thumbborder{border:1px solid #c8ccd1}.content .magnify{display:none}.content img{vertical-align:middle}.content .floatright{clear:right;float:right;margin:0 0 0.6em 0.6em}.content .floatleft{clear:left;float:left;margin:0 0.6em 0.6em 0}.content a > img{max-width:100% !important;height:auto !important}.content .noresize{max-width:100%;overflow-x:auto}.content .noresize a > img{max-width:none !important}h1{font-size:1.7em}h2{font-size:1.5em}h3{font-size:1.2em;font-weight:bold}h4{font-weight:bold}.pre-content h1,.content h1,.content h2{font-family:'Linux Libertine','Georgia','Times',serif}h3,h4,h5,h6{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif}.pre-content h1,.content h1,.content h2,h3,h4,h5,h6{line-height:1.3;word-wrap:break-word;word-break:break-word}.content h2,.content h3,.content h4,.content h5,.content h6{padding:0.5em 0}blockquote{border-left:3px solid #c8ccd1;font-family:'Linux Libertine','Georgia','Times',serif;font-size:1.1em;padding:1em 25px 1em 30px;position:relative;overflow:hidden}.hlist > ul li,ul.hlist li{display:inline-block;margin-right:8px}.content{}.content ul{list-style:square inside}.content ul > li > ul{list-style-type:disc}.content ul > li > ul > li > ul{list-style-type:circle}.content ol{list-style:decimal inside}.content ol ol,.content ul ol,.content ol ul,.content ul ul{margin-left:1em}.content ol li,.content ul li{margin-bottom:10px}.content ol li:last-child,.content ul li:last-child{margin-bottom:inherit}dl{margin-left:1em}dl dt{font-weight:bold}dl dd{display:block;overflow:auto}body.mw-hide-empty-elt .mw-empty-elt{display:none}.hlist-separated li:after{content:'¬タᄁ';padding-left:8px;color:#002bb8;font-size:16px;line-height:1}.hlist-separated :last-child:after{content:''}a{text-decoration:none;color:#002bb8}a:visited{color:#5a3696}a:active{color:#faa700}a:hover{text-decoration:underline}a.new,a.new:visited,a.new:hover{color:#cc0000}a.new > *,a.new:visited > *,a.new:hover > *{color:#cc0000}a.external{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVElEQVR42n3PgQkAIAhEUXdqJ3dqJ3e6IoTPUSQcgj4EQ5IlUiLE0Jil3PECXhcHGBhZ8kg4hwxAu3MZeCGeyFnAXp4hqNQPnt7QL0nADpD6wHccLvnAKksq8iiaAAAAAElFTkSuQmCC);background-image:url(/w/extensions/MobileFrontend/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf)!ie;background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2210%22%20height%3D%2210%22%3E%3Cpath%20fill%3D%22%23fff%22%20stroke%3D%22%2306c%22%20d%3D%22M.5%203.518h5.982V9.5H.5z%22%2F%3E%3Cpath%20d%3D%22M4.755-.16H9.99v5.39L8.417%206.774l-1.31-1.31L4.383%208.19%201.695%205.5l2.808-2.807-1.31-1.31z%22%20fill%3D%22%2306f%22%2F%3E%3Cpath%20d%3D%22M8.984.845l.022%204.884L7.19%203.91%204.308%206.79%203.08%205.567l2.882-2.88L4.112.833z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/extensions/MobileFrontend/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf);background-repeat:no-repeat;background-position:center right;padding-right:13px}.return-link,#mw-mf-last-modified{display:block;font-size:0.9em;margin-top:1.5em}.plainlinks a{background:none !important;padding:0 !important}.content p{margin:0.5em 0 1em 0}strong,b{font-weight:bold}em,i{font-style:italic}code,pre{font-family:monospace;border:solid 1px #c8ccd1;white-space:pre-wrap}code{padding:0.2em 0.5em}pre{padding:1em}sup{vertical-align:super}sub{vertical-align:sub} +sub,sup{line-height:1}.content table{margin:1em 0;overflow:auto;overflow-y:hidden;overflow-x:auto;display:block;width:100% !important}.content table caption{display:block;text-align:left}.content table.wikitable{border:1px solid #c8ccd1}.content table.wikitable > tr > th,.content table.wikitable > tr > td,.content table.wikitable > * > tr > th,.content table.wikitable > * > tr > td{border:1px solid #c8ccd1;padding:0.2em}.content table.wikitable > tr > th,.content table.wikitable > * > tr > th{background-color:#eaecf0}.collapsible td{width:auto !important}.content .tmbox,.content .ambox,.content #coordinates,.content .navbox,.content .vertical-navbox,.content .topicon,.content .metadata{display:none !important}.content table{float:none !important;margin-left:0 !important;margin-right:0 !important}.content table.infobox{font-size:90%;position:relative;border:1px solid #eaecf0;margin-bottom:2em;text-align:left;background-color:#f8f9fa}.content table.infobox th,.content table.infobox td{vertical-align:top;border:0;border-bottom:1px solid #eaecf0;padding:7px 10px}.content table.infobox td{width:100%}.content table.infobox tr:last-child th,.content table.infobox tr:last-child td{border:0}#filetoc,.mw-editsection{display:none}.skin-minerva .portal-column-left-wide,.skin-minerva .portal-column-left,.skin-minerva .portal-column-right,.skin-minerva .portal-column-right-narrow{float:none;width:100%}.references-column-count,.column-count{-moz-column-width:35em;-webkit-column-width:35em;column-width:35em}.references li:target{background-color:#def}.hatnote,.dablink,.rellink{padding:0 0 0.6em 0;color:#72777d;font-size:0.8em;font-style:italic}.quotebox{margin:0 0 0.8em !important;width:auto !important}@media all and (max-width:720px){.gallery .gallerybox{width:100% !important}.gallery .gallerybox div{width:100% !important}.content table.multicol > tr > td,.content table.multicol > tbody > tr > td{display:block !important;width:auto !important}.content .thumb .thumbinner{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;justify-content:center;flex-wrap:wrap;align-content:flex-start}.content .thumb .thumbinner > .thumbcaption{-webkit-box-pack:justify;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-moz-box-flex:1;width:100%;-ms-flex:1 0 100%;flex:1 0 100%;-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-ms-flex-order:1;order:1;display:block}} +span.mw-ref{vertical-align:super;line-height:1;font-size:smaller;unicode-bidi:embed}span.mw-ref a[data-mw-group]:after{content:'[' attr( data-mw-group ) ' ' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='decimal']:after{content:'[' counter( mw-Ref,decimal ) ']'}span.mw-ref a[data-mw-group='lower-alpha']:after{content:'[' counter( mw-Ref,lower-alpha ) ']'}span.mw-ref a[data-mw-group='upper-alpha']:after{content:'[' counter( mw-Ref,upper-alpha ) ']'}span.mw-ref a[data-mw-group='lower-greek']:after{content:'[' counter( mw-Ref,lower-greek ) ']'}span.mw-ref a[data-mw-group='lower-roman']:after{content:'[' counter( mw-Ref,lower-roman ) ']'}span.mw-ref a[data-mw-group='upper-roman']:after{content:'[' counter( mw-Ref,upper-roman ) ']'}span.mw-ref a[data-mw-group='error-test']:after{content:'[' counter( mw-Ref,symbols( cyclic 'first' 'second' 'last!' ) ) ']'} +x-thereisnoelementwiththisname:after{display:none}ol.mw-references{counter-reset:mw-ref-linkback}ol.mw-references li{counter-increment:mw-ref-linkback}[rel='mw:referencedBy']{counter-reset:mw-ref-linkback -1}[rel='mw:referencedBy']:before{content:'¬ニム '}span[rel='mw:referencedBy'] a:before{counter-increment:mw-ref-linkback;content:counters( mw-ref-linkback,'.',decimal );vertical-align:super;line-height:1;font-size:smaller}span[rel='mw:referencedBy'] a:after{content:' '}x-thereisnoelementwiththisname[rel='mw:referencedBy']:before,span.mw-linkback-text{display:none}@media print{li.gallerybox{vertical-align:top;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}ul.gallery,li.gallerybox{zoom:1;*display:inline}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:bold;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #c8ccd1;background-color:#f8f9fa;margin:2px}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.galleryfilename{display:block}.galleryfilename-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.mw-gallery-nolines li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-nolines li.gallerybox div.gallerytext{text-align:center}ul.mw-gallery-packed li.gallerybox div.thumb,ul.mw-gallery-packed-overlay li.gallerybox div.thumb,ul.mw-gallery-packed-hover li.gallerybox div.thumb{background-color:transparent;border:0}ul.mw-gallery-packed li.gallerybox div.thumb img,ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,ul.mw-gallery-packed-hover li.gallerybox div.thumb img{margin:0 auto}ul.mw-gallery-packed-hover li.gallerybox,ul.mw-gallery-packed-overlay li.gallerybox{position:relative}ul.mw-gallery-packed-hover div.gallerytextwrapper{overflow:hidden;height:0}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper{position:absolute;background:#fff;background:rgba( 255,255,255,0.8 );padding:5px 10px;bottom:0;left:0;height:auto;max-height:40%;overflow:hidden;font-weight:bold;margin:2px}ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover{overflow:visible;max-height:none}ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p,ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p{text-overflow:clip;white-space:normal;overflow:visible}ul.mw-gallery-packed-hover,ul.mw-gallery-packed-overlay,ul.mw-gallery-packed{text-align:center}ul.gallery.mw-gallery-slideshow{display:block;margin:4em 0}ul.gallery.mw-gallery-slideshow .gallerycaption{font-size:1.3em;margin:0}ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled{margin-bottom:1.3em}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons{opacity:0.5;padding:1.3em 0}ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement{margin:0 2em}.mw-gallery-slideshow li.gallerybox.slideshow-current{background:#efefef}.mw-gallery-slideshow .gallerybox > div{max-width:120px}ul.mw-gallery-slideshow li.gallerybox div.thumb{border:0;background:transparent}ul.mw-gallery-slideshow li.gallerycarousel{display:block;text-align:center}.mw-gallery-slideshow-img-container a{display:block}#issues_container div.hatnote{display:none}a.disambig_button{text-decoration:none;color:#555;float:left}a.disambig_button:active{color:#b0b0b0}a.edit_section_button{height:32px;width:32px;border:8px solid transparent;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAANlBMVEUAAAD///9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW9sbW+FiFraAAAAEXRSTlMAABAgMEBQYHCAkKCwwNDg8InUWv0AAAGfSURBVHhe7djBjsIgFIXhOwjFeltK3/9lJ4J6SG5dHGgyyaRn1dUXlb8slJ+T9//AC7zACxRiLu37EqXsDPCW9ue2cBLo8/7a/RQwFK9OTwDj3k6Hwbk6Mb/EeRDUojyaHzKMgG4pRmy/ehoAXcklT3h+buoGffU8vDJlQJtfuuG5busEY/Xc28N4EPkp7EHwUaODjSkLIr8Iu/VIELkE2Bj9psDzSBuLQoLIxX1sLEfhQHirQ9rwvLAgcoHdejx4b3IJ8PDOcCBysfklJzToipc9Piu2OKFA5LL5o/xUhAZ9Qi7W40Dkspj8as48OGXkYj0ORH73w/yC8OCMXA5y5sE2lwgPh86Bbi3h+i8506Brc3kYjwb9VkL7lh8N+jaXxXg0GBGayW8WCoSXq+dNzjyIXGx+UXhQm1yCyZkHA8JAfvBosF6h21RvU3vb86B+4lCTcxf4rkTV3PZ9IAiTcxcYvnm94P3Qi9IN6rHXDybL5SAD4IHnZQAMxtu8jIA4E+Q8BKr1xkCcybrOcwhOBsE3JOT+4G+WC7zAC7zAXxMIT+qGYJfyAAAAAElFTkSuQmCC);background-image:url(/w/extensions/MobileApp/images/edit.png?dd026)!ie;background-repeat:no-repeat;background-size:32px 32px;float:right;display:inline-float}a.edit_section_button.android{height:28px;width:28px;margin-right:8px;border:0;background-image:url(../../../I/s/css_modules/file:/android_asset/images/edit.png);background-size:28px 28px;background-position:center;position:relative}a.edit_section_button:active{background-color:rgba(128,128,128,0.1)}a.edit_section_button.android:active{background-color:transparent}a.edit_section_button.android:before{content:'';position:absolute;z-index:-1;border-radius:50%;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:transform 300ms cubic-bezier(0.25,0.46,0.45,0.94);transition:transform 300ms cubic-bezier(0.25,0.46,0.45,0.94)}a.edit_section_button.android:active:before{width:200%;height:200%;top:-50%;left:-50%;background-color:#eee;-webkit-transform:scale(0.6);transform:scale(0.6)}.no-editing a.edit_section_button{display:none}.page-protected a.edit_section_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAXVBMVEUAAAD////Pz89sbW/Pz89sbW/Pz89sbW/Pz89sbW/Pz89sbW/Pz89sbW/Pz89sbW/Pz8/Pz8/Pz89sbW/Pz89sbW/Pz8/Pz89sbW/Pz89sbW/Pz89sbW/Pz89sbW+fZUWwAAAAHXRSTlMAABAQICAwMEBAUFBgYHBwgJCgoLDAwNDQ4ODw8PGFG8cAAAHOSURBVHhe7dTLcoMwDAVQxVCXJAoByiPUEf//mcW0Gh5KFrbojrtidUYM9wKnnfOP4AEe4AGCT3JvmuHR3BOAXcDrc/jN87wLeBvmnCUIATnZEUyeC/A7UYHWjeDdQ48PSL68eNOA6GgEH9Nh3m9GsFGASOTB6S7wufrHeLCkGfycwLMKrGgBwm8UoKknD/cCTffn7QSmk+cup51A6ybP+hsGmUCQvd7CTiCST2dAB0pPAcr6VQY0oPRgCqpB005eydvTglxnPlYLWvZ4ezqQ65zxsVrwwvPg7SlBJJ4HH6sDc64ze0qwWnroSAHKeSDRDL6JBGX9eB4FKUH2Sj5WC9p+PQ8lyA1BPnYVZ4NBnOssvS4NvhBp4dl+45nAV+Yv2q3nwakMBICyztnWAwgEzcpDWgchABR1Fp5DCAXTlVdtPAuBINevEB5/pQBQ1rneeAZCQaTVPERdQsGMVn97UZdgMJ89UeccIsDaA7V55SHEgD0vDtCJukSAKQM5kvBiwAtxRF3iwPKtFwm2TIi6RIJvvGgwe+UhxIO55ByCAqylZ0ED9luvt6ABU1kXUIHLWru2LVoDOrAk6tu6KLKMJSVohaMAtTnA4BzgAf4Asb6U9nmPcP4AAAAASUVORK5CYII=);background-image:url(/w/extensions/MobileApp/images/edit-locked.png?2ded5)!ie}.page-protected a.edit_section_button.android{background-image:url(../../../I/s/css_modules/file:/android_asset/images/edit-locked.png)}#mainpage a.edit_section_button{display:none}.content-rtl a.edit_section_button{float:left;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.content-rtl a.edit_section_button.android{-webkit-transform:none;transform:none}.content-rtl .edit_section_button_wrapper.android{float:left;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.hide-when-compact{display:none}.mobile-float-reset{float:none !important;width:100% !important}#content .vertical-navbox,#content .navbox{display:none}@media all and (min-width:768px){#content .vertical-navbox,#content .navbox{display:inherit}}@media screen,handheld{.citation *.printonly{display:none}}.citation{word-wrap:break-word}.navbar{display:inline;font-size:88%;font-weight:normal}.navbar ul{display:inline;white-space:nowrap}.navbar li{word-spacing:-0.125em}.navbar.mini li span{font-variant:small-caps}.infobox .navbar{font-size:100%}.navbox .navbar{display:block;font-size:100%}.navbox-title .navbar{float:left;text-align:left;margin-right:0.5em;width:6em}.hlist dl,.hlist ol,.hlist ul{margin:0;padding:0}.hlist dd,.hlist dt,.hlist li{margin:0;display:inline}.hlist dl dl,.hlist dl ol,.hlist dl ul,.hlist ol dl,.hlist ol ol,.hlist ol ul,.hlist ul dl,.hlist ul ol,.hlist ul ul{display:inline}#content .hlist dt:after{content:':'}#content .hlist dd:after, +#content .hlist li:after{content:' · ';font-weight:bold}#content .hlist dd:last-child:after,#content .hlist dt:last-child:after,#content .hlist li:last-child:after{content:none}#content .hlist dd dd:first-child:before,#content .hlist dd dt:first-child:before,#content .hlist dd li:first-child:before,#content .hlist dt dd:first-child:before,#content .hlist dt dt:first-child:before,#content .hlist dt li:first-child:before,#content .hlist li dd:first-child:before,#content .hlist li dt:first-child:before,#content .hlist li li:first-child:before{content:' (';font-weight:normal}#content .hlist dd dd:last-child:after,#content .hlist dd dt:last-child:after,#content .hlist dd li:last-child:after,#content .hlist dt dd:last-child:after,#content .hlist dt dt:last-child:after,#content .hlist dt li:last-child:after,#content .hlist li dd:last-child:after,#content .hlist li dt:last-child:after,#content .hlist li li:last-child:after{content:') ';font-weight:normal}#content .hlist ol{counter-reset:list-item}#content .hlist ol > li{counter-increment:list-item}#content .hlist ol > li:before{content:' ' counter(list-item) ' '}#content .hlist dd ol > li:first-child:before,#content .hlist dt ol > li:first-child:before,#content .hlist li ol > li:first-child:before{content:' (' counter(list-item) ' '}.plainlist ul{list-style:none}.compact-ambox table .mbox-image,.compact-ambox table .mbox-imageright,.compact-ambox table .mbox-empty-cell{display:none}.compact-ambox table.ambox{border:0;border-collapse:collapse;background:transparent;margin:0 0 0 1.6em !important;padding:0 !important;width:auto;display:block}.compact-ambox table.mbox-small-left{font-size:100%;width:auto;margin:0}.compact-ambox table .mbox-text{padding:0 !important;margin:0 !important}.compact-ambox table .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:square;list-style-image:url(data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=)}.compact-ambox .hide-when-compact{display:none}.rellink,.dablink,.hatnote{font-style:italic}.rellink i,.dablink i,.hatnote i{font-style:normal}div.rellink,div.dablink,div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.geo-default,.geo-dms,.geo-dec{display:inline}.geo-nondefault,.geo-multi-punct{display:none}.longitude,.latitude{white-space:nowrap}.nowrap,.nowraplinks a,.nowraplinks .selflink,sup.reference a{white-space:nowrap}.wrap,.wraplinks a{white-space:normal}.sysop-show,.accountcreator-show,.autoconfirmed-show{display:none}#li-coordinates{background-image:url(/w/extensions/MobileApp/images/80px-Edge-firefox.png?120ff);float:right;display:none;-webkit-background-size:auto 30px;background-size:auto 30px}.client-js .content_block.coordinates{display:none;text-align:right;margin-bottom:0.5em;font-size:smaller}.client-js .content_block.coordinates .latitude{display:none;padding-left:20px;background-image:url(/w/extensions/MobileApp/images/50px-Edge-firefox.png?14d02);background-repeat:no-repeat;-webkit-background-size:auto 15px;background-size:auto 15px}.alpha #li-coordinates{display:list-item}.client-js .beta .content_block.coordinates{display:block}.client-js .beta .content_block.coordinates .latitude{display:inline}.topicon{display:none}td .sortkey,th .sortkey{display:none;speak:none}.transborder{border:solid transparent}.image_overflow_x_container{max-width:100%;overflow:auto}.visualhide{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}h2.section_heading{padding:20px 0 10px;margin-bottom:0}h3.section_heading{font-family:'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif;font-weight:bold;padding:15px 0 0 !important}div.issues_container{margin-top:-0.2em;margin-bottom:2.2em;padding-top:1px;padding-bottom:1px;width:100%;display:block;font-size:0.9em;letter-spacing:0.02em;color:#555}span.issues_separator{padding-left:0.6em;padding-right:0.6em;float:left}a.issues_button{text-decoration:none;color:#555;float:left}a.issues_button:active{color:#b0b0b0}.loading{border:4px solid rgba(0,0,0,0.1);border-top:4px solid rgba(0,0,0,0.4);border-radius:100%;-webkit-animation:rot 0.6s infinite linear}@-webkit-keyframes rot{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(359deg)}}#loading_sections{margin:8px auto;height:24px;width:24px}.ipa_button{display:inline-block;margin-bottom:-3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAgCAYAAABHA7voAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABBRJREFUWEfdWflPFkEM5U9HQUGj0WiMmnhrRBMVUeOt4fQG8cALBU8OEUEURK7aN06Xbr/Z/Wb59hd5yYtZ253Zt+203Y+6je0kpHVEp4mI6tajOGEiMGRMePkN0YHesK0M3hrixygRem1GvsDd94gWl4mWV4jufyba2h32WytPPXMP4bDCe2QxhDwfWZ+RL/DxqHNKMP2baMfdsG9RbmBmPXwWYt1lD0a2QAhZWHJOCYaniBo6wv5FWVRcEcgejGyBN945hxSO9ad9dt8n2lRQMNK8VnHVbpe9GNkCR386hwS4blD2zZ1EE7NEIzNEB/vS9+YRZ9oCgucX/YXBWt6F7MUIC9zFxQWFRePaYNqn9aU3MOD7gItQc1fax/Iwv4gYLAdeQgwkM2Q/Rlhg2ytnTAABEK19Pv/wRo/ZBaJtPWmfEMd++Rs81hKhapC9GGGBvSPOmACpqO04ezbCne/TPkhhfa3ZxtFHynfwPXYdAaIhzIO2R0fQRqd/LG2/9NobPPCQ6Jlih7gxFnD9LVFjlSLUMewXKQFRAlEVf/5xxgSoqNqnz0R4nNNO28+98AYGInUopwgdf+IdFfCgS9yiwCKIEtjEhWLJOwrODKR9Pkx7g0c/DwTa/pQjrjE9H24nONc6xWKQ5y/FSdZnVApEobA4rvofWsU3PpMa7Zxmeg3bYh5+SduFUzwZlYmoCGKCsTj8eNWOSeb7nDd43FQpjBdg7Rioxa55+vm/9EfVRpac5dS+yOf7PBch2Fr5Gi/HvrAsRAkMRVBPMBAwaQTcNgJGzAOhKmu7UA8OIWJexb+2tQB5qSr3MyoFolnb0o23qX0+mSr7yAh4Ys7g4GTaboXh2okJnNMLpifHnFm5l1EpcBOXeDRtjatmink27g0eaCvajnQD8KJ6Pub3RKEVfZSz5grvm9Un8yBrMCoFgtWKBPqbBubL7WqKgaD3/OVxgluAvs+ykf1a+Jtw3wNek88izmov7zVgXqBGzREEbZnHQK3t+x9WbmSjXO18gd0f/M2RiBEHyPqMsECkhoaL0J1VOx4e45sGSj56qF6nGvdw5Ow3ZxmQ9RlhgfsQIWdfBUq59rFpirRey9f+DA8BZUPWZoQFIkK2FQzxmdI+W/jDdYZHOhQB/F7TFFFIQoxNuyKQtRlhgWCXOR94Dpw97YPG3PI0/X9FOWcqdhmQtRnZAnE+7Ew68DXsWwtjIlg0yrI2I1sg+GrCOSVAOuqxrVbiKAybwb0MyPqMfIH4wVe/PXzj7TVpWgullaBg4RMNvTMW+rlshGV9Rr5AEFML7sdvLkXbQCwreiaPbFKRMTo2cwHDkH+Es8e2Jwu9DsMJzBW5kzc6WWMhqUYZqktm6o8vVSP5n9FpcgLr6+vXLYmo7i97FXYYGMQFoAAAAABJRU5ErkJggg==);background-image:url(/w/extensions/MobileApp/images/ipa.png?736e4)!ie;background-size:28px 16px;height:16px;width:28px}.mcs-ipa{display:none}.content figure{max-width:100%;-webkit-margin-before:0 !important;-webkit-margin-after:0 !important;-webkit-margin-start:0 !important;-webkit-margin-end:0 !important}.content figure img,.content figure video{margin:0.6em auto 0.6em auto;display:block;clear:both}.content figcaption{margin:0.5em 0 0;font-size:0.8em;line-height:1.5;padding:0 !important;color:#555;width:auto !important}.mw-body-content{counter-reset:mw-numbered-ext-link}.mw-body-content a[rel~='mw:ExtLink']:empty:after{content:'[' counter(mw-numbered-ext-link) ']';counter-increment:mw-numbered-ext-link}span.reference{font-size:80%;line-height:1;vertical-align:super;unicode-bidi:-moz-isolate;unicode-bidi:isolate}sup,sub{line-height:1}figure[typeof*='mw:Image'],figure[typeof*='mw:Video'],figure[typeof*='mw:Audio']{margin:0}figure[typeof*='mw:Image'] a,figure[typeof*='mw:Video'] a,figure[typeof*='mw:Audio'] a{border:0}figure[typeof*='mw:Image'].mw-halign-right,figure[typeof*='mw:Video'].mw-halign-right,figure[typeof*='mw:Audio'].mw-halign-right{margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof*='mw:Image'].mw-halign-left,figure[typeof*='mw:Video'].mw-halign-left,figure[typeof*='mw:Audio'].mw-halign-left{margin:0.5em 1.4em 1.3em 0;clear:left;float:left}figure[typeof*='mw:Image'].mw-halign-none,figure[typeof*='mw:Video'].mw-halign-none,figure[typeof*='mw:Audio'].mw-halign-none{margin:0;clear:none;float:none}figure[typeof*='mw:Image'].mw-halign-center,figure[typeof*='mw:Video'].mw-halign-center,figure[typeof*='mw:Audio'].mw-halign-center{margin:0 auto 0.5em auto;display:table;clear:none;float:none}figure[typeof*='mw:Image'] > figcaption,figure[typeof*='mw:Video'] > figcaption,figure[typeof*='mw:Audio'] > figcaption{display:table-caption;caption-side:bottom;font-size:88.4%;line-height:1.4em;text-align:left;border:1px solid #c8ccd1;border-top:0;padding:0 6px 6px 6px;background-color:#f8f9fa}figure[typeof*='mw:Image'] > figcaption table,figure[typeof*='mw:Video'] > figcaption table,figure[typeof*='mw:Audio'] > figcaption table{caption-side:top}figure[typeof~='mw:Image/Thumb'],figure[typeof~='mw:Video/Thumb'],figure[typeof~='mw:Audio/Thumb'],figure[typeof~='mw:Image/Frame'],figure[typeof~='mw:Video/Frame'],figure[typeof~='mw:Audio/Frame']{display:table;overflow:auto;text-align:center;border:1px solid #c8ccd1;border-bottom:0;border-collapse:collapse;background-color:#f8f9fa;margin:0.5em 0 1.3em 1.4em;clear:right;float:right}figure[typeof~='mw:Image/Thumb'] > *:first-child > img,figure[typeof~='mw:Video/Thumb'] > *:first-child > img,figure[typeof~='mw:Audio/Thumb'] > *:first-child > img,figure[typeof~='mw:Image/Frame'] > *:first-child > img,figure[typeof~='mw:Video/Frame'] > *:first-child > img,figure[typeof~='mw:Audio/Frame'] > *:first-child > img,figure[typeof~='mw:Image/Thumb'] > *:first-child > video,figure[typeof~='mw:Video/Thumb'] > *:first-child > video,figure[typeof~='mw:Audio/Thumb'] > *:first-child > video,figure[typeof~='mw:Image/Frame'] > *:first-child > video,figure[typeof~='mw:Video/Frame'] > *:first-child > video,figure[typeof~='mw:Audio/Frame'] > *:first-child > video{border:1px solid #c8ccd1;margin:3px;background:#fff}.mw-image-border > *:first-child > img,.mw-image-border > *:first-child > video{border:1px solid #eaecf0}figure[typeof~='mw:Image/Frameless'] > figcaption,figure[typeof~='mw:Video/Frameless'] > figcaption,figure[typeof~='mw:Audio/Frameless'] > figcaption,figure[typeof~='mw:Image'] > figcaption,figure[typeof~='mw:Video'] > figcaption,figure[typeof~='mw:Audio'] > figcaption{display:none} + +.ombox-content { + display: none !important; +} + +div.float-right, table.float-right, ul.float-right, .float-right { + clear: right; + float: none; + margin: 1em 0 1em 1em; +} + +/* BEGIN Map caption - used with MapExpander JS */ +.map-expand-link { + float: right; + margin-left: 1.5em; +} + +/* BEGIN Template:Listing CSS */ +.listing-metadata { + font-size: 0.8em; +} +/* this style should match span.vcard-edit-button a */ +.listing-lastedit { + color: rgb(150,150,150); +} +/* END Template:Listing CSS */ + +/* BEGIN: style used on the Destinations page */ +.rounded-blue-section-heading { + background-color: #cedff2; + border-radius: 15px; + clear:both; + color: black; + font-weight: bold; + margin: 0 8% 1em; + padding: .5em 1em; + text-align: center; + vertical-align: middle; +} +/* END: style used on the Destinations page */ + +/* BEGIN: styles used with Template:Sleeppricerange and Template:Eatpricerange */ +.pricerange-table { + border: 1px solid #ccc; + border-spacing: 0; + background: #f9f9f9; + float: right; + clear: right; + margin: 0.5em 0 0.5em 1em; + width: 30%; + padding: 8px; +} +.pricerange-table td { + padding: 0; +} +/* END: styles used with Template:Sleeppricerange and Template:Eatpricerange */ + +/* CSS for article status templates, eg Usablecity, Guidepark */ +.article-status { + width: 60%; + background: #fff; + margin: 0 auto; + border: solid 2px lightblue; + text-align: center; + font-size:90%; + font-style:italic; +} + +/* CSS for Template:Routebox */ +.routeBox { + font-size: small; + border-style: none; + border-spacing: 0 0; + border-collapse: collapse; + margin: 0 auto; +} + +.routeBox td { + padding: 1px 2px; +} + +/* BEGIN: CSS for Template:Climate */ +table.climate-table { + width: 30em; + margin: 1em; + padding: 0.5em; + text-align: center; + font-size: 80%; + border: 1px solid #9EBDC7; + box-shadow: 2px 2px 5px #9EBDC7; + border-radius: 3px; + background: #f3f3ff; + white-space:nowrap; +} +table.climate-table th { + background: #CEE0E7; +} +/* END: CSS for Template:Climate */ + + +/* +MediaWiki:Common.css +*/ +/* Le CSS placé ici sera appliqué à tous les habillages. */ + +/* https://phabricator.wikimedia.org/T134352 */ +#banner-drapeau a { + display: inline-block; + width: auto; + height: auto; +} + +/* DEBUT des styles pour pagebanner extension */ +h1.wpb-name a { + margin-right: 5px; +} +h1.wpb-name { + font-family: sans-serif; + border-bottom: none; +} +.ext-wpb-pagebanner { + clear: both; +} + +/* Fix problem with banner overlay */ +div.toctitle {display:none;} + +/* Remove when https://phabricator.wikimedia.org/T113642 fixed */ +.client-js #contentSub { display: none; } +.client-js .ext-wpb-pagebanner { padding-top: 1em; } +.client-js #contentSub.visible { font-size: 0.875em; margin: 0; display: block; } +.client-js .ext-wpb-pagebanner.bugfix-T113642 { padding-top: 0; } +/* end https://phabricator.wikimedia.org/T113642 */ + +/* hide upload link in toolbox */ + +.routeBox { + font-size: small; + border-style: none; + border-spacing: 0 0; + border-collapse: collapse; + margin: 0 auto; +} + +/* Styles for Geo template */ + +#geoCoord table { + border-collapse: collapse; + background: transparent; +} +#geoCoord td { + font-size: 0.9em; + line-height: 100%; + vertical-align: middle; + padding: 0 0 0 10px; + text-align: right; + border-left: 1px solid #88a; +} +#geoCoord td.icon { + border-left: none; + height: 27px; + width: 35px; + padding: 0 10px 0 0; +} + +#DoM { + background: transparent; + padding: 0; +} + +/* Styles pour les bannières de pages */ + +.topbanner { + position: relative; + overflow: hidden; + max-width: 1800px; + height: auto; +} + +.topbanner img { + max-width: 100%; + height: auto; + width: auto; +} + +.topbanner-box { + position: absolute; + z-index: 2; + margin-top: 1.5em; + color: white; + width: 50%; + min-width: 20em; + left: 2%; + text-align: left; +} + +.topbanner .name { + position: absolute; + z-index: 2; + margin: 0.6em 0 0 0.4em; + padding: 8px 7px; + font-size: 2.2em; + background: rgb(16,16,16); + background: rgba(0,0,0,0.5); + border-radius: 4px; + color: white; + white-space: nowrap; + line-height: 0.9em; +} + +/* Styles pour les infos du coin supérieur droit des bannières de pages */ +.iconbox { + position: absolute; + top: 6px; + right: 0; + padding: 3px; + z-index: 3; + background: rgb(16,16,16); + background: rgba(0,0,0,0.7); + border-bottom-left-radius: 5px; +} + +/* Style pour table des matières horizontale copiée de Common.css sur en.wikivoyage le 19 mai 2013 + Style for hlist class - pulled from Wikipedia's Common.css file on 20 Mar 2013 + Style for horizontal lists (separator following item). + Note: hlist formatting will break if the resulting HTML lacks a breakable character + between list items. This happens when the following conditions are true: + 1) The list is made using wiki markup (where HTML is built by parser.php) + 2) HTMLTidy is disabled or unavailable (such as on Special: pages) + In such cases, building lists with .hlist using HTML instead of wiki markup + will work around this problem. See also [[Bugzilla:39617]]. + IE8-specific classes are assigned in [[MediaWiki:Common.js/IEFixes.js]]. + Last updated: January 24, 2013 + @source mediawiki.org/wiki/Snippets/Horizontal_lists + @maintainer: [[User:Edokter]] + @revision: 3.1 +*/ +.skin-monobook .hlist dl, +.skin-modern .hlist dl, +.skin-vector .hlist dl { + line-height: 1.1em; +} +.hlist dl, +.hlist ol, +.hlist ul { + margin: 0; + padding: 0; + line-height: 1.1em; +} +/* Display list items inline and make them nowrap */ +.hlist dd, +.hlist dt, +.hlist li { + display: inline; + white-space: nowrap; +} +/* Allow wrapping for list items (in tight spaces) */ +.hlist.hwrap dd, +.hlist.hwrap dt, +.hlist.hwrap li { + white-space: normal; +} +/* Display nested lists inline and allow them to wrap */ +.hlist dl dl, .hlist dl ol, .hlist dl ul, +.hlist ol dl, .hlist ol ol, .hlist ol ul, +.hlist ul dl, .hlist ul ol, .hlist ul ul { + display: inline; + white-space: normal; +} +/* Generate interpuncts */ +.hlist dt:after { + content: ":"; +} +.hlist dd:after, +.hlist li:after { + content: " ·"; + font-weight: bold; + padding: 0 0.3em; +} +.hlist dd:last-child:after, +.hlist dt:last-child:after, +.hlist li:last-child:after { + content: none; +} +/* For IE8 */ +.hlist dd.hlist-last-child:after, +.hlist dt.hlist-last-child:after, +.hlist li.hlist-last-child:after { + content: none; +} +/* Add parentheses around nested lists */ +.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before, +.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before, +.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before { + content: "("; + font-weight: normal; +} +.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after, +.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after, +.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after { + content: ")"; + font-weight: normal; +} +/* For IE8 */ +.hlist dd dd.hlist-last-child:after, .hlist dd dt.hlist-last-child:after, .hlist dd li.hlist-last-child:after, +.hlist dt dd.hlist-last-child:after, .hlist dt dt.hlist-last-child:after, .hlist dt li.hlist-last-child:after, +.hlist li dd.hlist-last-child:after, .hlist li dt.hlist-last-child:after, .hlist li li.hlist-last-child:after { + content: ")"; + font-weight: normal; +} +/* allow ToC to stretch across screen when it is part of a horizontal list, change background and font colours */ +.hlist #toc.tocFloat { + width: 100%; + max-width: 170em; + color: black; +} + +.hlist.tocbox-s #toc.tocFloat { + width: 100%; + max-width: 170em; + margin: 0; + padding: 0; + line-height: 1.1em; + color: black; + background-color: #e0e0e0; +} + +.hlist.tocbox-b #toc.tocFloat { + width: 100%; + max-width: 170em; + margin: 0; + padding: 0; + line-height: 1.1em; + color: white; + background: rgb(16,16,16); + background: rgba(0,0,0,0.5); + border: none; +} + +.hlist.tocbox-w #toc.tocFloat { + width: 100%; + max-width: 170em; + margin: 0; + padding: 0; + line-height: 1.1em; + color: black; + background: rgb(225,225,225); + background: rgba(160,160,160,0.6); + border: none; +} + +.hlist #toc table, +.hlist #toc tr, +.hlist #toc td { + margin: 0; + padding: 0; + line-height: 1.1em; +} + +/* links in the horizontal ToC should be black... */ +.hlist #toc a { + color: black; + font-size: 0.8em; + font-weight: bold; +} + +/* ... except when the ToC box is black ... */ +.hlist.tocbox-b #toc a { + color: white; + font-size: 0.8em; + font-weight: bold; +} + +/* ... or except when being hovered over */ +.hlist #toc.tocFloat a:hover { + color: #bdddfd; +} + +/* don't display ToC title when in horizontal ToC */ +.hlist #toctitle { + display: none; +} + +.mf-mobile-only { + display: none; +} + +/* Prevent display of subheadings in horizontal ToC */ +.hlist #toc .toclevel-2, +.hlist #toc .toclevel-3, +.hlist #toc .toclevel-4, +.hlist #toc .toclevel-5, +.hlist #toc .toclevel-6 { + display: none; +} + +.hlist .toggleNode { + display: none; +} + +/* Corporate Design */ + +.containerTabs { + border: 1px solid #6cc8f3; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -khtml-border-radius-topleft: 5px; + -khtml-border-radius-topright: 5px; + + margin: 0 0 0 0.75em; + padding: 0.2em 1em; + background: #f0f0f0; + float: left; + position: relative; + top: 1px; +} +#content div.mainTab { + border-bottom: 1px solid #f0f0f0; +} +#content > .boxTabsEnd { /* Verstecken vor IE 6 */ + display: none; +} +.tabbedContainers .containerTabs { + font-weight: normal; + text-decoration: none; + color: #002bb8; + cursor: pointer; + display: none; +} +.tabbedContainers .mainTab { + font-weight: bold; + text-decoration: none; + color: #000000; + cursor: text; + display: none; +} +.tabbedContainers .showIt { + display: block; +} +@media print { + .tabbedContainers .containerTabs, .tabbedContainers .mainTab, + .tabbedContainers .showIt, .tabbedContainers .boxTabsEnd { + display: none; + } +} + +.container { + border: 1px solid #6cc8f3; + padding: 0 0 3px; + margin: 0.75em 0 0; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -khtml-border-radius: 5px; +} + +/* Color border's variations */ +/* Light green */ +#content .var2 { + border-color: #80f000; +} + +/* Dark green */ +#content .var3 { + border-color: #158200; +} + +/* Orange */ +#content .var4 { + border-color: #EDAA02; +} + +/* Red */ +#content .var5 { + border-color: #DB0003; +} + +/* Brown */ +#content .var6 { + border-color: #AD5A1B; +} + +/* Violet */ +#content .var7 { + border-color: #9154AD; +} + +/* Black */ +#content .var8 { + border-color: #000000; +} + +/* Dark blue */ +#content .var9 { + border-color: #0400FF; +} + +.container .header, .infobox .header { + background: #f0f0f0; + color: #004f80; + margin-top: 0; + margin-bottom: 0.4em; + padding: 0.3em 0.35em; + border-bottom: none; + font-size: 1.3em; +} + +.container .header:first-child, .container .editLink:first-child + .header, .infobox .header:first-child { + border-top-left-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -khtml-border-radius-topleft: 5px; + -khtml-border-radius-topright: 5px; + margin-top: 0; + border-top: none; +} + +.container * ~ .header { + margin-top: 0.75em; + border-top: 1px solid #c0c0c0; +} + +.container .centered { + text-align: center; +} + +.container .justified { + text-align: justify; +} + +/* Color title's variations */ +/* Light green */ +.var2 .header, .var2 .header a { + color: #00804f; +} + +/* Dark green */ +.var3 .header, .var3 .header a { + color: #158200; +} + +/* Orange */ +.var4 .header, .var4 .header a { + color: #EDAA02; + } + +/* Red */ +.var5 .header, .var5 .header a { + color: #DB0003; +} + +/* Brown */ +.var6 .header, .var6 .header a { + color: #AD5A1B; +} + +/* Violet */ +.var7 .header, .var7 .header a { + color: #9154AD; +} + +/* Black */ +.var8 .header, .var8 .header a { + color: #000000; +} + +/* Dark blue */ +.var9 .header, .var9 .header a { + color: #0400FF; +} + +.container .editLink { + float: right; + font-size: 90%; + background: transparent; + margin: 0.5em 0.75em; +} + +.container h2 { + padding: 0.5em 0.35em; +} + +.container h3 { + padding: 0.3em 0.35em; +} + +.container p, .container ul, .container .div { + padding: 0 0.5em; + margin-bottom: 0.3em; +} + +.container .emph { + font-size: 110%; + font-weight: bold; +} + +.container ul ul { + padding: 0; +} + +@media print { + .container ul, .container ul ul { + padding-left: 1em; + } +} + +.container ol { + padding-right: 0.5em; +} + +.container ol ol { + padding-right: 0em; +} + +.container h4, .container h5, .container h6, .container dl { + padding-left: 0.5em; + padding-right: 0.5em; +} + +.container > .divBox, .container > .prettytable, .container > .multiline, +.container > .gallery, .container > div.center { + margin-left: 0.5em; + margin-right: 0.5em; +} + +.container div.floatleft { + margin-left: 0.5em; +} + +.container div.floatright { + margin-right: 0.5em; +} + +.container .usr-code div.center { + margin: 0; +} + +.container hr { + margin: 0 0.5em; +} + +table.container { + margin: 0; + border-style: none; + border-spacing: 0 0; + border-collapse: collapse; +} + +div.cFirst, table.cFirst, .containerTabs + .container, .boxTabsEnd + .container { + margin: 0; + clear: both; +} + +div.cInner, table.cInner { + margin: 0.75em; +} + +table.container td { + margin: 0; + padding: 0 0 0 0.75em; + vertical-align: top; +} + +table.container td:first-child { + padding: 0; +} + +* html table.container td { /* Stern-HTML-Hack fuer IE6 */ + padding-left: expression((this.parentNode.firstChild == this)? "0" : "0.75em" ); +} + +@media print { + .container { border: 0.25mm solid #6cc8f3; } + .container .header, .infobox .header { + font-size: 1em; + border-top: 0.25mm solid #c0c0c0; + } +} + +.regionFlag { + border: 1px solid #404040; + width: 20px; + height: 15px; + margin: 0 0.5em 0 0; + float: left; +} + +#socialbm iframe { + display: inline; + height: 45px; + margin: 0; +} +#socialbm a img { + vertical-align: 23px; +} + +.ImageGroup { + text-align: center; + border: 1px solid #6cc8f3; + background-color: #ffffff; +} +* html .ImageGroup { // IE6-Hack; + width: 220px; +} +.ImageGroup .header { + font-size: 110%; + font-weight: bold; + padding: 0 3px; + background: #f0f0f0; +} +.ImageGroup .thumb { + margin-bottom: 0; +} +.ImageGroup .thumbinner { + margin: 0 auto; +} +.ImageGroup .ImageGrUnitHeader { + background: #f0f0f0; +} + +.topicsTable { + width: 100%; + border-collapse: collapse; + empty-cells: show; + background: transparent; + border-spacing: 0 0; +} +.topicsTable td { + width: 50%; + vertical-align: top; + padding: 1em 0; +} +.topicsTable td:first-child { + padding-right: 1em; +} +.topicsTable td .floatright { + border: solid 1px #cccccc; + background: #eeeeee; + padding: 3px; + margin: 5px 0 0 1em; +} + +@media print { + .ImageGroup { + border: none; + padding: 0; + } + .ImageGroup .header, .ImageGroup .ImageGrUnitHeader { + display: none; + } +} + +#altIsIn { + line-height: 1.8em; +} + +/* Quickbar styles */ + +#content .qb { + border: 1px solid #6cc8f3; + margin: 0 0 1em; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -khtml-border-radius: 5px; +} +#content .qbRight { + clear: right; + float: right; + margin: 0 0 1em 1em; + width: 300px; +} +#content .qbRightDiv { + clear: right; + float: right; + margin: 0 0 1em 1em; +} +#content .qbTopBorder { +} +#content .qbLeft { + clear: left; + float: left; + margin: 0 1em 0 1em; + width: 300px; +} +.qb td { + padding: 2px 0.4em; + vertical-align: baseline; +} +.qb th { + padding: 2px 0.4em; + vertical-align: baseline; + text-align: left; + font-weight: bold; +} +#content .qb .qbHeader { + text-align: center; + color: #004f80; + padding: 0.3em 0.35em; + font-size: 1.2em; + background: #f0f0f0; + border-top: 1px solid #c0c0c0; +} +#content .qb tr:first-child .qbHeader { + border-top: none; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -khtml-border-radius-topleft: 5px; + -khtml-border-radius-topright: 5px; +} +.qbImage { +/* border-top: 1px solid #4D64CF; */ + text-align: center; + padding: 5px 2px; + margin-left: auto; + margin-right: auto; +} +.qbImage div.thumb { + border-style: none; + margin-bottom: 0; +} +.qbImage div.thumbinner { + border-style: none; + padding: 0 !important; + background: transparent; + margin: 0 auto; +} +.qbImage div.tright { + float: none; + margin: 0; +} +.qb .qbImageCell { + padding: 0; +} +.qbImageCell .qbHeader { + border-bottom: none; +} +.qbEmpty { + display: none; +} +.qbEmpty td { + height: 1px; +} +.breakable { + font-size: 7%; + line-height: 0.1%; + text-decoration: none !important; + visibility: hidden; +} +@media print { + #content .qb { border-width: 0.25mm; } + #content .qb .qbHeader { + font-size: 1em; + background: #f0f0f0; + border-top: 0.25mm solid #c0c0c0; + border-bottom: 0.25mm solid #c0c0c0; + } +} + +/*** styles and counter for mapping listings ***/ +@media screen { + .printonly { display:none !important; } +} + +@media screen, print { + span.listing-map { + display: inline-block; + width: 12px; height: 13px; + text-align: right; + color: white; + font-size: 0.85em; + font-family: Arial,Verdana,sans-serif; + padding: 0px 2px 3px 1px; + -webkit-print-color-adjust: exact; //force printing on safari and chrome + } + + h2 { counter-reset: mapnumber; } + span.listing-map:before { + content: counter(mapnumber); + counter-increment: mapnumber; + } + + body { counter-reset: generalnumber; } + span.listing-map.listing-general:before { + content: counter(generalnumber); + counter-increment: generalnumber; + } + +} + +/* Externalisation des modèles de style pour améliorer les performances - Auslagerung von Stil-Vorlagen zur Performance-Steigerung */ + +#contentSub img { + vertical-align: baseline; +} + +.prettytable { + border: 1px solid #6cc8f3; + border-collapse: collapse; + empty-cells: show; + margin: 1em 0; + background: transparent; + border-spacing: 0 0; +} +.prettytable td, .prettytable th { + border: 1px solid #6cc8f3; + padding: 0.25em; + vertical-align: baseline; +} +.prettytable th { /* hightlighting */ + text-align: center; + border-bottom: 1px solid #6cc8f3; + border-top: 1px solid #6cc8f3; + background: #f0f0f0; + color: #004f80; +} +.sortable th { /* ab Version 1.9 */ + text-align: left; +} +.verticalCentered td, .verticalCentered th { + vertical-align: middle; +} +.textCentered td, .textCentered th { + text-align: center; +} +.framedBox { + margin: 1em 0; + padding: 0.5em; + border: 1px solid #6cc8f3; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -khtml-border-radius: 5px; + -o-border-radius: 5px; +} +.noFloat { + clear: both; + float: none; + margin: 0; +} + +/**** STYLES AIDE ET ACCUEIL ****/ +/* contruction des éléments */ +#aa-bloc-tete { + display:table; + width: 100%; +} + +#aa-bloc-gauche, +#aa-bloc-droite { + display:table-cell; + vertical-align:center; +} +#aa-bloc-droite { + width:30%; +} +#aa-bloc-dessous { + padding:5px 10px; +} +#aa-bloc-tete h2 { + margin-top:4pt; /* Correction du style des titres par défaut pour une meilleure intégration */ +} +/* Couleur et apparence des éléments */ +.aa-fond-gris { + background-color:#F6F6F6; + padding:10px; + font-size: 1.1em; + } +.aa-filet-gris { + border:1px solid #CCC; + } +.aa-fond-blanc { + background-color:#FFF; + padding:10px; + } +.aa-fond-avertissement { + display:block; + border-bottom:1px solid #C00; + background-color:#FFF; + padding: 10px; +} +.aa-titre-bleu { + color:#3366BB; + border:none; +} + +.aa-titre-rouge { + color:#C00; + border:none; +} +.aa-titre-vert { + color:#008769; + border:none; +} +.aa-faux-h2 { + font-weight:normal; + font-size:150%; +} +.aa-faux-h3 { + font-weight:normal; + font-size:132%; +} + +/* Styles pour [[Modèle:Animation]] */ + +.diaporamaControl img { + background-color: white; + border: 1px solid #DDDDDD; +} + +.diaporamaControl .ScrollBar { + background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Round_Edge.png/5px-Round_Edge.png); + background-position: top; + background-repeat: repeat-x; +} + +.diaporamaControl .ScrollBarContainer { + background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Round_Edge_bis.png/5px-Round_Edge_bis.png); + background-position: top; + background-repeat: repeat-x; +} + +.diaporama .magnify { + display: none; +} + +.diaporama select { + font-size: 12px; +} + +/* CHIFFRES ROMAINS */ + +/* Affichage des chiffres romains, voir [[modèle:Rom]] ou [[modèle:Romain]]. */ + +.romain { + text-transform: lowercase; + font-variant: small-caps; +} + +/* [[Modèle:Indication de langue]] */ + +.indicateur-langue { + font-family: monospace; + font-weight: bold; + font-size: small; + font-style: normal; +} + +.indicateur-format { + font-family: monospace; + font-weight: bold; + font-size: small; + font-style: normal; +} + +/* +MediaWiki:Vector.css +*/ +/* CSS placed here will affect users of the Vector skin */ + +#contentSub, #contentSub2 { font-size: 100% } + +.ns-8 pre { font-size: 125% } + +#geoCoord, #DoM { + position: absolute; + z-index: 1; + right: 12px; + right: 0; + top: -36px; + float: right; +} + +#DoM { + top: -4px; +} \ No newline at end of file diff --git a/dist/www/-/s/style-dark-darkreader-static.css b/dist/www/-/s/style-dark-darkreader-static.css new file mode 100644 index 000000000..6f041314a --- /dev/null +++ b/dist/www/-/s/style-dark-darkreader-static.css @@ -0,0 +1,68 @@ +/* Common theme */ +html, +body, +:not([style*="background-color:"]):not(iframe) { + background-color: rgb(19, 21, 22) !important; +} +html, +body, +:not([style*="color:"]), +.sr-reader *:not([class*='sr-pivot']) { + color: rgb(181, 168, 142) !important; +} +h1:not([style*="color:"]), +h2:not([style*="color:"]), +h3:not([style*="color:"]), +h4:not([style*="color:"]), +h5:not([style*="color:"]), +h6:not([style*="color:"]) { + color: rgb(241, 160, 118) !important; +} +cite:not([style*="color:"]) { + color: rgb(160, 206, 153) !important; +} +input:not([style*="background-color:"]), +textarea:not([style*="background-color:"]), +button:not([style*="background-color:"]), +[role="button"] { + background-color: rgb(41, 50, 58) !important; +} +input:not([style*="background-color:"]):hover, +textarea:not([style*="background-color:"]):hover, +button:not([style*="background-color:"]):hover, +[role="button"]:hover { + background-color: rgb(38, 56, 73) !important; +} +input:not([style*="background-color:"]):active, input:not([style*="background-color:"]):focus, +textarea:not([style*="background-color:"]):active, textarea:not([style*="background-color:"]):focus, +button:not([style*="background-color:"]):active, button:not([style*="background-color:"]):focus, +[role="button"]:active, [role="button"]:focus { + background-color: rgb(37, 58, 78) !important; +} +a:not([style*="color:"]) { + color: rgb(158, 189, 190) !important; +} +a:not([style*="color:"]):hover { + color: rgb(164, 198, 206) !important; +} +a:not([style*="color:"]):active, a:not([style*="color:"]):focus { + color: rgb(170, 207, 223) !important; +} +:not([style*="border-color:"]), +::before, +::after { + border-color: rgb(100, 120, 124) !important; +} +div:empty, +.sr-reader *, +.sr-backdrop { + background-color: rgba(19, 21, 22, 0.5) !important; +} +input::placeholder, +textarea::placeholder { + color: rgba(181, 168, 142, 0.5) !important; +} +input:not([style*="background-image:"]), +textarea:not([style*="background-image:"]) { + background-image: none !important; +} \ No newline at end of file diff --git a/dist/www/-/s/style-dark-invert.css b/dist/www/-/s/style-dark-invert.css new file mode 100644 index 000000000..519454214 --- /dev/null +++ b/dist/www/-/s/style-dark-invert.css @@ -0,0 +1,33 @@ +html, +img, +video { + filter: invert(1) hue-rotate(180deg); +} + +img[class|="mwe-math-fallback-image"], img[class^="latex"] { + filter: hue-rotate(180deg); +} + +body { + background: black !important; +} + +::-webkit-scrollbar { + height: 10px; +} + +::-webkit-scrollbar-button:start:decrement, +::-webkit-scrollbar-button:end:increment { + height: 30px; + background-color: transparent; +} + +::-webkit-scrollbar-track-piece { + background-color: #3b3b3b; +} + +::-webkit-scrollbar-thumb:vertical { + height: 50px; + background-color: #666; + border: 1px solid #eee; +} \ No newline at end of file diff --git a/dist/www/-/s/style-dark.css b/dist/www/-/s/style-dark.css new file mode 100644 index 000000000..501eacc93 --- /dev/null +++ b/dist/www/-/s/style-dark.css @@ -0,0 +1,427 @@ + +/* Wikipedia Dark Theme v1.0.23 (1/17/2017) + * https://github.com/StylishThemes/Wikipedia-Dark + * http://userstyles.org/styles/ + * Modified from https://userstyles.org/styles/47161/dark-wikipedia-rounded + * In turn, the styles have been modified to work with Kiwix JS and Kiwix JS Windows. + * The source file for this adapted version can be found at: + * https://github.com/kiwix/kiwix-js-pwa/ + * + * This CSS file is licensed with a CC-BY-SA Creative Commons Free Culture Licence: + * https://creativecommons.org/licenses/by-sa/4.0/ + * This licence applies *only* to this CSS file within the Kiwix JS and Kiwix JS Windows projects. + * + */ + + /* transparent background */ +div, span:not(.legend-color):not([class*="wikEd"]):not([style*="background"]), .MainPageBG, .navbox-list, +div#mw-head, .mw-wsmfinal-content, #bodyContent, .referencetooltip > li + li, +div.vectorTabs ul li, tr[style*="background:#F5FFFA"], +th[style*="background-color: #fff"], .mw-echo-notifications-badge, +.ext-cards-card-list .ext-cards-card, .infobox span.plainlinks *, +.tracklist, p[style*="background"] { + background-color: transparent !important; +} + + /*** Overall ***/ + p, li, td:not([style*="background"]), th:not([style*="background"]), caption, div { + color: lightgray !important; + background-image: none !important; + } + + th.infobox-above, th.infobox-header { + background-color: darkslategray !important; + } + + td.infobox-subheader { + background-color: dimgray !important; + } + + p code, label code, dl code { + background-color: #111; + color: lightgray !important; + } + +blockquote { + background-color: transparent !important; +} + + td[style*="color"], td span[style*="color"], .table-author { + color: lightslategray !important; + } + + h1, h2, h3, h4, h5, h6, #footer li, .infobox th[style*="background"], + div[style*="color"], input[type="search"], input[type="submit"], + input[type="number"], select, .suggestions-result + { + color: gainsboro !important; + } + +a, .CategoryTreeToggle, #toc a, #toc a span, body .ui-button { + color: lightblue !important; +} + +td[style*="background"]:not([class*="translations"]):not([style*="transparent"]) a:first-child { + color: dimgray !important +} + + a:visited, #toc a:visited, #toc a:visited span + { + color: palevioletred !important; + } + + a:hover, a:hover span, #toc a:hover, #toc a:hover span, + .suggestions-result .highlight, .suggestions-special .special-query + { + color: #fff !important; + text-decoration: underline !important; + } + +#content .qb .qbHeader, .pure-input-rounded, .site-header { + background: #1d3030; + color: whitesmoke; +} + +.prettytable th { /* hightlighting */ + background: #1d3030; +} + +a span { + color: lightblue !important; +} + + /* text selection */ + ::selection + { + background-color: lightgray !important; + color: #fff !important; + } + + ::-moz-selection + { + background-color: lightgray !important; + color: #fff !important; + } + + /*** Red links (non-existant pages) ***/ + a.new + { + color: #980000 !important; + } + + /*** Background ***/ +html, body { + background-color: #000010 !important; + /*background-image: [[bg-choice]] !important;*/ + background-clip: border-box !important; + background-origin: padding-box !important; + /*background-attachment: [[bg-attachment]]!important;*/ + /*[[bg-options]];*/ +} + +::-webkit-scrollbar { + height: 10px; +} + +::-webkit-scrollbar-button:start:decrement, +::-webkit-scrollbar-button:end:increment { + height: 30px; + background-color: transparent; +} +::-webkit-scrollbar-track-piece { + background-color: #3b3b3b; +} +::-webkit-scrollbar-thumb:vertical { + height: 50px; + background-color: #666; + border: 1px solid #eee; +} + +.mw-ui-button, .mw-ui-button * { + background-color: lightgray !important; + color: #fff !important; +} + +#mw-page-base, div.vectorTabs, div.vectorTabs *, .wikiEditor-ui-toolbar, #p-cactions-label, +.client-js #preftoc, .client-js #preftoc li, .client-js #preftoc li.selected a, +.ui-widget-content, .ext-cards-card-list h3:after, #simpleSearch, div[style*="background-image:linear-gradient(180deg, #E8E8E8, white)"] { + background-image: none !important; +} + + .ui-widget-overlay + { + background: rgba(0, 0, 0, 0.8) !important; + } + + #bodyContent pre, .mw-body-content pre, #bodyContent code, .mw-body-content code, span.plainlinks * + { + background-color: #111 !important; + border-color: #555 !important; + color: #b9b9b9 !important; + } + +td[style*="background"], .jfk-bubble, .navpopup, div span[style*="background-color:#FFFF"], div span[style*="background: #fb"] { + background-color: #181818 !important; +} + +table, input, button, select, textarea:not([class*="mw-editfont"]), +tr[style*="background: antiquewhite"], tr[style*="background-color:#ee"], tr[style*="background-color:#ff"], tr[style*="background-color:#FF"], tr[style*="background-color:#ccc"], +#toc, td[style*="background-color"], td[style*="background:#F5FAFF"], td[style*="background:#F8"], tr[style*="background:#f8"], tr[style*="background:#f4"], td[style*="background:WhiteSmoke"], td[style*="background:GhostWhite"], span[style*="background:moccasin"], td[style*="background:#f5"], #mw-content-text div[style*="background: #"], .vevent td, .referencetooltip li, .suggestions, +.mw-ui-button[style*="background"], .mw-ui-button[style*="background"] *, .wikiEditor-ui, +table.navbox.collapsible tr:nth-child(2) > td, div.menu, div.NavHead, .oo-ui-popupWidget-popup, +.oo-ui-buttonElement-button, .mw-notification, .mwe-popups, .mwe-popups-is-not-tall, .mwe-popups-is-tall, +.ui-widget-content, .oo-ui-window-body, #pagehistory li.selected, .tracklist tr, .dataTable tr { + background-color: #222 !important; +} + +table.dataTable.display tbody tr:hover, +table.dataTable.display tbody tr.odd:hover, +table.dataTable.display tbody tr.even:hover { + background-color: darkslategray !important; +} + +#hauptseite > table { + background-color: transparent !important; +} + +.navbox th, .climate-table th, .wikitable th, .navbox-title, th[bgcolor], td[bgcolor], th[style*="background"], li.current a { + background-color: darkslategray !important; + border-color: #555 !important; + color: lightgray; +} + +tr[bgcolor], tr[style*="background-color: rgb"], tr[style*="background-color:#ddd"] { + background-color: #2F3F4F !important; + border-color: #524B4B !important; +} + + body .ui-button + { + background: #282828 !important; + border-color: #555 !important; + } + +table[style*="background-color:#fff;"], .search-form fieldset, table.ambox, tr[style*="background-color: #fff;"], +.mw-ui-button[style*="background-color:#008B6D"], tr[style*="background-color: #f5faff;"], tr[style*="background:#EF"], tr[style*="background:#FF"], +tr[style*="background:#E9E9E9"] > *, table.infobox.hproduct > tbody > tr[style*="background: #F0F0F0;"], +td[style*="background:lightgray"], td[style*="background:#f0f0f0"], td[style*="background:#eeeeff"], td[style*="background:#e8e8e8"], +td[style*="background:#ddddff"], td[style*="background:#efefef"], td[style*="background:#e9e9e9"], td[style*="background:#f1f1f1"], +.oo-ui-buttonElement-button:hover, .tracklist tr[style*="background-color:#f7f7f7"], caption[style*="background:#e3e3e3"] { + background-color: #282828 !important; +} + + table.wikitable > tr > th, table.wikitable > * > tr > th, div.barbox > table > tbody > tr > th + { + background-color: #333; + /* don't include !important flag */ + } + +td[style*="background: #ececec;"], th[style*="background:#eee"], th[style*="background-color: #eee"], +tr[style*="background-color: #f7f7f7;"], th[style*="background:#F2F2F2"], th[style*="background:#ffffff"], #filetoc, .toccolours, th[style*="background:#F9F9F9"], th[style*="background:#e8e8e8"], table.plainlinks, th[style*="background-color: lightgrey"], th[style*="background:#ddd"], .infobox th[style*="background"], .infobox td[style*="background"], +td[style*="background:#F2F2F2"], table.wikitable > tbody > tr[style*="background-color:#F6F6F6"], td[style*="background:#e1e1e1"], +.tlheader { + background-color: #333 !important; +} + + /* remove background image/gradient */ + .keyboard-key, div#editpage-specialchars a, body div.ui-dialog .ui-widget-header { + background: #333 !important; + border-color: #555 !important; + } + + body .ui-button:hover { + background: #444 !important; + border-color: #555 !important; + } + /* add a white background to transparent images; see + * https://forum.userstyles.org/discussion/48549/x */ + img[data-file-type*="drawing"][data-kiwixsrc*=".svg"], img[data-kiwixsrc*="Kiwix_logo"], a.image img, a[href*=".svg"] img, img.selogo { + background: #ddd !important; +} + + /* white background to wikEd - see #24 */ + .wikEdFrameBodySyntax { + background: #fff !important; + } + +blockquote[style*="white"] { + background-color: black !important; + color: lightgray !important; +} + +.keyboard-key { + box-shadow: 0.1em 0.2em 0.2em #444 !important; +} + + hr { + background-color: #555 !important; + } + + /*** Background Color Styles ***/ + /* Red */ + td[style*="background: #FDD;"], .table-no { + background: #722 !important; + } + + /* Green */ + #mp-left h2, #mp-left h2 span, td[style*="background: #99FF99;"], .table-yes { + background: #244024 !important; + } + + /* Blue */ +div[style*="background"] h2, div[style*="background"] h2 *, #mp-right h2, #mp-right h2 span, .navbox th, +.navbox-title, .navbox-title *, tr[style*="background-color:tan;"], +div[style*="background: #444444;"], div[style*="background: #444444;"] *, +ol.references li:target, sup.reference:target, span.citation:target, +ol.references li:target *, sup.reference:target *, span.citation:target *, +td[style*="background:#CEDFF2"], tr[bgcolor="#CEDFF2"], table[style*="background-color:#cef2e0"] *, +div[style*="background-color: #cee0f2"], div[style*="background-color: #cedff2"] { + background-color: black !important; +} + + .navbox-abovebelow, th.navbox-group, td.navbox-group, .navbox-subgroup .navbox-title, + .navbox-abovebelow *, th.navbox-group *, .navbox-subgroup .navbox-title * { + background-color: #212C43 !important; + } + + /* Purple */ + #mp-bottom h2, #mp-bottom h2 span, th[style*="background:lavender"], td[style*="background:lavender"] { + background-color: #382B4A !important; + } + + /* Brown */ + #mp-center h2, #mp-center h2 span, .table-partial, tr[style*="background:orange"] { + background-color: #321 !important; + } + + /*** Border ***/ + fieldset { + border-color: lightgray !important; + } + + div:not([style*="-color"]), div[style*="background-color"], span:not([class*="color"]), + summary:not([style*="-color"]), table, tr:not([style*="border-bottom"]), th, td:not([style*="border-bottom"]), + h1, h2, h3, h4, h5, h6, ul, li, input, select, #bodyContent code { + border-color: #555 !important; + } + +td[style*="border-bottom"] { + border-right-color: #555 !important; + border-left-color: #555 !important; + border-top-color: #555 !important; + } + + .mwe-popups:before { + border-bottom-color: #555 !important; + } + .mwe-popups.flipped_y:before, .mwe-popups.flipped_x_y:before, + .wikiEditor-toolbar-dialog .ui-dialog-buttonpane { + border-top-color: #555 !important; + } + .mwe-popups:after { + border-bottom-color: #222 !important; + } + .mwe-popups.flipped_y:after, .mwe-popups.flipped_x_y:after { + border-top-color: #222 !important; + } + + div.vectorTabs li:not(.selected), .oo-ui-popupWidget-anchor:after, + .oo-ui-popupWidget-head { + border-bottom: #555 1px solid !important; + } + + /* arrow down */ + .referencetooltip > li + li, .referencetooltip > li + li::after { + border-top-color: #555 !important; + border-right-color: transparent !important; + border-left-color: transparent !important; + } + /* Bookmark Icon */ + #ca-watch.icon a { + background-image: url('data:image/svg+xml,<%3Fxml%20version%3D"1.0"%20encoding%3D"UTF-8"%3F><%2Fsvg>') !important; + } + #ca-unwatch.icon a { + background-image: url('data:image/svg+xml,<%3Fxml%20version%3D"1.0"%20encoding%3D"UTF-8"%3F><%2FlinearGradient><%2Fdefs><%2Fsvg>') !important; + } + + /* Orange */ + #centralNotice > div { + border-color: #e08b26 !important; + } + + table.ambox-content, table.ambox-style { + border-left-color: #e08b26 !important; + } + + /* add border */ + div.vectorTabs li, #p-cactions-label, .client-js #preftoc li { + border-right: #555 1px solid !important; + } + div.vectorTabs li.selected, .client-js #preftoc li.selected { + border-bottom: #e08b26 1px solid !important; + } + + /*** Text ***/ + .wikitable tr:not([style*="color:black"]) th, + table.wikitable > tbody > tr[style*="background-color:#F6F6F6"] > td > * { + color: #fff !important; + } + +span[style*="color:black"] { + color: whitesmoke !important; +} + +span[style*="color:#555"], span[style*="background-color:#EE"] { + color: darkgray !important; +} + + .CategoryTreeEmptyBullet { + color: #ccc !important; + } + + /*** Misc ***/ + #p-cactions li.selected a, #p-cactions li a, #p-cactions li a:hover { + padding: 0 1em 0.1em !important; + } + +ul, .portlet li { + list-style-image: none !important; + background-color: #000010 !important; +} + + table[style*="border:4px ridge"], .jfk-bubble-closebtn { + border: none !important; + } + + /*** invert images ***/ +img[title="Wikipedia"], .bookshelf-container .bookend, img[class|="mwe-math-fallback-image"], img[class^="latex"], +#mw-wsmfinal-close, img[data-kiwixsrc*="Speaker_Icon"], .infobox img[alt*="structure"][data-kiwixsrc*=".svg"], img[data-kiwixsrc*=".png"]:active, +img[data-kiwixsrc*=".svg"][height="16"], img[data-kiwixsrc*=".svg"][height="17"], img[data-kiwixsrc*=".svg"][height="18"], img[data-kiwixsrc*="Kiwix_icon"], +.oo-ui-iconElement-icon:not(.mw-echo-notifications-badge), .RTsettings, #gtx-host, .jfk-bubble-closebtn, +#pt-notifications-notice .mw-echo-notifications-badge:before, .oo-ui-pendingElement-pending, +#pt-notifications-alert .mw-echo-notifications-badge:before, .mw-ui-icon-arrow { + -webkit-filter: invert(100%) !important; + filter: invert(100%) !important; + background-color: transparent !important; +} + +.oo-ui-icon-bell { + opacity: 0.7 !important; +} + +/* Mathoverflow styles */ +.comment { + background-color: #111 !important; +} + +#question, #comment, p.question, p.comment, .post-container, .tags ul { + background-color: #222 !important; +} + +div.tagsblob, .tagsblob ul, .tags li, .tags a, .post-tag, .nav-links--link { + background: darkslategray !important; +} + +a.button { + background-color: darkslateblue !important; +} \ No newline at end of file diff --git a/dist/www/-/s/style-dark2.css b/dist/www/-/s/style-dark2.css new file mode 100644 index 000000000..498e20a9e --- /dev/null +++ b/dist/www/-/s/style-dark2.css @@ -0,0 +1,803 @@ + body + { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; + color: #ddd; + background-color: #222 !important; + } + + a + { + color: #608dff !important; + text-decoration: none; + } + + a:hover + { + color: #637ab5 !important; + text-decoration: underline; + } + + h1 + { + border: 0px !important; + font-family: 'Arial' !important; + font-weight: 700 !important; + font-size: 36px !important; + color: #eee !important; + } + + h2 + { + border: 0px !important; + font-family: 'Arial' !important; + font-weight: 400 !important; + font-size: 26px !important; + color: #eee !important; + } + + h3 + { + border: 0px !important; + font-family: 'Arial' !important; + font-weight: 400 !important; + font-size: 16px !important; + color: #ddd !important; + } + + h4 + { + color: #ccc !important; + } + + .reflist, .refbegin + { + background-color: #282828 !important; + } + + .thumbcaption + { + color: #888 !important; + } + + #content h3 + { + font-size: 20px !important; + } + + p + { + font-weight: 300 !important; + line-height: 1.9 !important; + } + + .portal-column-right span, .portal-column-left span, body.ns-100 .mw-body-content h2, + .mw_metadata th, .tracklist th + { + color: #ddd !important; + background-color: #444 !important; + } + + body.ns-100 .mw-body-content th, body.ns-100 .mw-body-content div, body.ns-100 #portal td, + .mw_metadata td, .tracklist td, .tracklist div + { + color: #ddd !important; + border-width: 0px !important; + background-color: #333 !important; + } + + .portal-column-right, .portal-column-left, body.ns-100 .mw-body-content .subpages + { + color: #ddd !important; + background-color: #222 !important; + border-width: 0px !important; + } + + .mw-highlight + { + background-color: #222 !important; + } + + .mw-highlight .nc + { + color: #068dff; + } + + .mw-highlight .nf + { + color: #068dff; + } + + #Example + { + color: #ddd !important; + } + + table,td,th + { + border: 0px !important; + border-collapse: collapse !important; + padding: 5px !important; + } + + ul,li + { + background: transparent !important; + border: 0px !important; + line-height: 1.8 !important; + font-size: 14px !important; + font-weight: 300 !important; + } + + li span + { + background: transparent !important; + border: 0px !important; + font-size: 14px !important; + } + + .referencetooltip + { + background-color: #282828 !important; + } + + dl + { + font-weight: 300 !important; + } + + dt + { + font-style: italic; + font-size: 16px !important; + margin-top: 10px !important; + } + + dd + { + font-size: 15px !important; + } + + #p-logo a + { + background-image: url('https://i.imgur.com/lNORoSn.png') !important; + background-color: #222 !important; + } + + .mw-wiki-logo + { + padding-left: 15px !important; + padding-top: 10px !important; + border: none !important; + } + + code + { + padding: 3px !important; + background: transparent !important; + color: #39892f !important; + border: 1px solid #555 !important; + } + + .hatnote span + { + color: #888 !important; + background-color: #222 !important; + } + + tt + { + font-family: 'Source Code Pro','Lucida Sans Unicode','Courier New' !important; + font-size: 16px !important; + } + + .new,.new:link,.new:visited + { + color: #cd5b45 !important; + } + + blockquote + { + border: 0px !important; + font-style: italic !important; + font-size: 20px !important; + margin: 35px 75px !important; + line-height: 1.5 !important; + font-weight: 300 !important; + background: transparent !important; + } + + select + { + padding: 0px 10px; + } + + .mw-ui-button,.mw-ui-progressive + { + border: 1px solid #888 !important; + color: #347Bff !important; + background: #222 !important; + text-shadow: 0px 0px 0px; + } + + .mw-ui-button.mw-ui-progressive:hover,.mw-ui-button.mw-ui-progressive:focus,.mw-ui-button.mw-ui-progressive:active,.mw-ui-button:hover,.mw-ui-progressive:hover,.mw-ui-button:focus,.mw-ui-progressive:focus + { + box-shadow: 0px 0px 0px !important; + text-shadow: 0px 0px 0px !important; + border: 1px solid #347Bff !important; + } + + #wpSave,#wpPreview,#wpDiff + { + border-radius: 4px !important; + border: 1px solid #347Bff !important; + color: #347Bff !important; + background: #222 !important; + text-shadow: 0px 0px 0px; + padding: 0.5em 1em; + cursor: pointer; + } + + #wpSave:hover,#wpPreview:hover,#wpDiff:hover + { + color: rgba(52,123,255,0.5) !important; + } + + /* Search */ + #simpleSearch + { + background: transparent !important; + border-color: #666 !important; + } + + #searchInput + { + color: #ddd !important; + background: transparent !important; + } + + .mw-ui-input + { + border: 1px solid #888 !important; + color: #ddd !important; + background: #222 !important; + font-size: 16px !important; + } + + .mw-ui-input:focus + { + box-shadow: 0px 0px 0px !important; + } + + .mwe-math-fallback-image-inline + { + -webkit-filter: invert(100%); + filter: url("data:image/svg+xml;utf8,#invert"); + } + + .mwe-math-fallback-image-inline img, .mwe-math-element img + { + filter: invert(100%); + } + + .mw-headline + { + color: #ddd !important; + } + + .mw-content-ltr pre + { + font-family: "Courier New", Lucida Console, sans-serif !important; + color: #a5c4ff !important; + } + + .suggestions + { + font-weight: 300 !important; + font-size: 15px !important; + max-width: 300px !important; + margin-top: 15px !important; + border: 0px !important; + box-shadow: 2px 2px 10px 2px rgba(0,0,0,0.5); + } + + .suggestions-results + { + border: 0px !important; + } + + .suggestions-result + { + padding: 10px !important; + } + + .imeselector,#searchEngines + { + display: none !important; + } + + .mw-search-formheader + { + border: 0px !important; + background: transparent !important; + } + + .central-featured-logo-wrapper + { + height: 350px; + background: transparent url("https://i.imgur.com/5uRX9M2.png") no-repeat scroll center center / 200px auto; + } + + .central-featured-logo + { + display: none; + } + + .central-textlogo + { + filter: invert(1) !important; + } + + .bookend + { + background-image: none !important; + } + + .link-box em, .link-box small + { + color: #bbb !important; + } + + .search-form fieldset + { + background-color: #444 !important; + border-color: #888 !important; + border-width: 1px !important; + } + + #searchInput, #searchLanguage, #langsearch-input + { + background-color: #222 !important; + border-color: #888 !important; + border-width: 1px !important; + } + + .formBtn + { + background-color: #222 !important; + border-color: #888 !important; + border-width: 1px !important; + border-radius: 0px !important; + } + + .mw-search-result-heading,.searchresult,.searchmatch + { + font-size: 14px !important; + font-weight: 400 !important; + padding: 3px 0px !important; + } + + .searchmatch + { + font-weight: 700 !important; + } + + .mw-search-result-data,.mw-search-createlink + { + display: none; + } + + #mw-page-base,.vectorTabs + { + background: transparent !important; + border-width: 0px !important; + } + + #content + { + color: #ddd !important; + border: 0px !important; + margin-left: 215px !important; + } + + .portal, .portal table + { + background: transparent !important; + } + + #mw-panel + { + width: 200px !important; + border-right: 1px solid #666; + background-color: #222 !important; + padding-left: 10px !important; + ; + } + + #p-logo + { + left: 0px; + padding-left: 10px !important; + ; + background-color: white; + } + + #p-logo a + { + width: 11em !important; + padding-left: 40px; + background-color: white; + left: 0px; + border-right: 1px solid #666; + margin-left: -1em; + } + + #p-logo a:hover + { + opacity: 1.0; + } + + #mw-head + { + color: #ddd !important; + background-color: #3b3b3b; + opacity: 1.0; + box-shadow: 0px 1px 2px #2b2b2b; + -webkit-transition-property: opacity !important; + -moz-transition-property: opacity !important; + -o-transition-property: opacity !important; + -ms-transition-property: opacity !important; + transition-property: opacity !important; + -webkit-transition-duration: 0.5s !important; + -moz-transition-duration: 0.5s !important; + -o-transition-duration: 0.5s !important; + -ms-transition-duration: 0.5s !important; + transition-duration: 0.25s !important; + } + + #mw-head:hover + { + opacity: 1.0 !important; + } + + .uls-settings-trigger + { + display: none !important; + } + + #left-navigation + { + margin-left: 233px !important; + } + + .wikitable + { + font-weight: 300 !important; + } + + .wikitable td, .wikitable th + { + border: 1px solid #444 !important; + } + + pre + { + line-height: 1.3 !important; + font-family: "Courier New", Lucida Console, sans-serif !important; + border: 0px !important; + background: 0px !important; + font-size: 16px !important; + color: aliceblue !important; + } + + .mw-code + { + border: 0px !important; + padding: 17px !important; + background: 0px !important; + font-size: 16px !important; + } + + #bodyContent tbody, #mp-left, .MainPageBG, #mp-left div, #mp-right div, #mp-topbanner, .list, + .collapsible th, .autocollapse th + { + color: #ddd !important; + background-color: #333 !important; + border-color: #444 !important; + } + + #js-lang-list-button + { + background-color: #444 !important; + } + + .app-badges + { + background-color: #2e2e2e !important; + } + + .wikitable, .wikitable th, .wikitable rh, .plainrowheaders, .nounderlines, .wikitable tr, .wikitable td, + .navbox-title, .navbox-group, .navbox-odd, .navbox-even, .hlist, #mp-left h2, #mp-right h2, #mp-bottom h2, + .navbox-abovebelow, .group + { + color: #ddd !important; + background-color: #444 !important; + } + + body.ns-0 #content tbody code + { + color: #39892f !important; + background-color: #222 !important; + border-width: 0px !important; + } + + .suggestions-results, .suggestions-special + { + background-color: #444 !important; + } + + .suggestions-results :hover, .suggestions-special :hover + { + background-color: #2c5699 !important; + } + + .suggestions-results span, .special-query + { + color: #ddd !important; + } + + .suggestions-result, special-label + { + color: #bbb !important; + } + + .highlight + { + color: #393939 !important; + } + + .mw-search-profile-tabs + { + color: #ddd !important; + background-color: #333 !important; + border-color: #555 !important; + } + + .wikitable tr, .wikitable td, .homonymie, .plainlinks + { + color: #eee !important; + background-color: #333 !important; + } + + .quotebox + { + color: #eee !important; + background-color: #252525 !important; + border-color: #555 !important; + } + + .toc + { + background: transparent !important; + border-color: #444 !important; + border-style: solid !important; + display: block !important; + max-width: 300px !important; + } + + .toctoggle + { + display: none !important; + } + + body.mediawiki table.mbox-small-left + { + background-color: #222 !important; + } + + .thumbinner,.thumb,.toccolours,.graytable + { + background: transparent !important; + border: 0px !important; + font-size: 16px !important; + } + + .thumbimage + { + border: 0px !important; + } + + .thumbcaption + { + font-style: italic !important; + margin: 7px 0px !important; + } + + .thumbimage:hover + { + opacity: 0.85 !important; + } + + .dablink + { + margin: 14px 0px !important; + font-weight: 300 !important; + font-size: 18px !important; + } + + #siteSub,.flaggedrevs_preview + { + display: none !important; + } + + .ambox,.tmbox,.Note,.informationbox + { + margin: 5px 0px !important; + font-size: 18px !important; + line-height: 1.5 !important; + max-width: 550px !important; + font-weight: 300 !important; + } + + .ambox td,.tmbox td + { + padding: 10px !important; + } + + .ambox-text-small,.mbox-text,.Note td + { + font-size: 14px !important; + font-weight: 300 !important; + color: #ddd !important; + } + + .ambox-image,.mbox-image + { + display: none; + } + + #request_for_deletion,.ambox-serious + { + background: rgba(255,0,0,0.1) !important; + border: 1px solid rgba(255,0,0,0.15) !important; + color: #a00000 !important; + } + + .tmbox-notice,.tmbox-move,.Note + { + background: rgba(150,75,0,0.1) !important; + border: 1px solid rgba(150,75,0,0.15) !important; + } + + .informationbox + { + background: #222 !important; + padding: 10px !important; + font-size: 14px !important; + } + + .editOptions + { + background: #222 !important; + border: 0px !important; + } + + .catlinks + { + background: transparent !important; + border: 1px solid #aaa !important; + font-size: 16px !important; + } + + .infobox, .tright, .toccolours + { + color: #ddd !important; + border: 0px !important; + background: transparent !important; + border-collapse: collapse !important; + } + + .infobox td,.infobox th,.tright td,.tright th,.toccolours td,.toccolours th + { + padding: 5px !important; + background: #333 !important; + font-weight: 400 !important; + } + + .infobox_v3 + { + background: #333 !important; + border-color: transparent !important; + } + + .infobox_v3 .entete div + { + background-color: #333 !important; + color: #ddd !important; + } + + .image img:hover + { + opacity: 0.85 !important; + } + + .globegris + { + background: transparent !important; + } + + .mw-editsection-bracket,.references-small b,.mw-cite-backlink,.plainlinksneverexpand + { + display: none !important; + } + + .mw-body + { + background-color: #222 !important; + } + + #floating_object + { + display: none; + } + + .navbox,.nowraplinks + { + margin: 10px 0px !important; + border: 0px !important; + background: transparent !important; + } + + .navbox td,.navbox th,.nowraplinks td,.nowraplinks th + { + padding: 9px 6px !important; + font-size: 14px !important; + font-weight: 300 !important; + border: 1px solid #222 !important; + } + + .vertical-navbox th + { + background-color: #444 !important; + } + + .NavFrame + { + border: 0px !important; + background: transparent !important; + padding: 0px !important; + } + + .NavHead + { + margin: 10px 0px !important; + padding: 12px !important; + font-size: 16px !important; + font-weight: 700 !important; + background: transparent !important; + } + + .Boxmerge + { + border: 0px !important; + } + + #coordinates + { + display: none !important; + } + + #mw-fr-revisiontag,#mw-fr-reviewnotice + { + display: none !important; + } + + div#footer + { + margin-left: 14em !important; + padding: 1.25em 1.5em 1.5em !important; + } + + #footer-info-copyright, #footer-info-lastmod + { + color: #777 !important; + } diff --git a/dist/www/-/s/style-mobile.css b/dist/www/-/s/style-mobile.css new file mode 100644 index 000000000..4e6abd6f0 --- /dev/null +++ b/dist/www/-/s/style-mobile.css @@ -0,0 +1,5638 @@ +/*-/s/css_modules/skins.minerva.base.reset|skins.minerva.content.styles|ext.cite.style|mobile.app.pagestyles.android|mediawiki.page.gallery.styles|mediawiki.skinning.content.parsoid.css*/ +html, body, div, span, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, ins, em, img, small, strike, strong, sub, sup, tt, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, input, textarea, button, select, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; + background: none +} + +table, caption, tbody, tfoot, thead, tr, th, td { + font-size: 100% +} + +caption { + font-weight: bold +} + +button { + border: 0; + background-color: transparent +} + +body { + line-height: 1 +} + +input { + line-height: normal +} + +ul { + list-style: none +} + +table { + border-collapse: collapse +} + +html { + -webkit-text-size-adjust: none; + font-size: 100% +} + +body { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + line-height: 1.4; + color: #222222; + background: #fff; +} + +.content { + line-height: 1.65; + word-wrap: break-word +} + +@media all and (max-width:320px) { + body { + font-size: 0.8em + } + + .content { + margin: 0 12px + } +} + +.client-js .collapsible-block { + display: none +} + + .client-js .collapsible-block.open-block { + display: block + } + +.nomobile { + display: none !important +} + +@media all and (min-width:720px) { + .client-js [onclick] + .collapsible-block { + display: block + } +} + +.content figure, .content .thumb { + margin: 0.6em 0 +} + + .content figure .thumbinner, .content .thumb .thumbinner { + margin: 0 auto; + max-width: 100% !important + } + +.content figcaption, .content .thumbcaption { + margin: 0.5em 0 0; + font-size: 0.8em; + line-height: 1.5; + padding: 0 !important; + color: #54595d +} + +.content .thumbcaption { + width: auto !important +} + +.content .thumbborder { + border: 1px solid #c8ccd1 +} + +.content .magnify, .content figure[typeof*='mw:Image/Thumb'] > a:after, .content figure[typeof*='mw:Video/Thumb'] > a:after, .content figure[typeof*='mw:Audio/Thumb'] > a:after { + display: none +} + +.content img { + vertical-align: middle +} + +.content .floatright { + clear: right; + float: right; + margin: 0 0 0.6em 0.6em +} + +.content .floatleft { + clear: left; + float: left; + margin: 0 0.6em 0.6em 0 +} + +.content a > img { + max-width: 100% !important; + height: auto !important +} + +.content .noresize { + max-width: 100%; + overflow-x: auto +} + + .content .noresize a > img { + max-width: none !important + } + +h1 { + font-size: 1.7em +} + +h2 { + font-size: 1.5em +} + +h3 { + font-size: 1.2em; + font-weight: bold +} + +h4 { + font-weight: bold +} + +.pre-content h1, .content h1, .content h2 { + font-family: 'Linux Libertine','Georgia','Times',serif +} + +h3, h4, h5, h6 { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif +} + +.pre-content h1, .content h1, .content h2, h3, h4, h5, h6 { + line-height: 1.3; + word-wrap: break-word; + word-break: break-word +} + +blockquote { + border-left: 3px solid #c8ccd1; + font-family: 'Linux Libertine','Georgia','Times',serif; + font-size: 1.1em; + padding: 1em 25px 1em 30px; + position: relative; + overflow: hidden +} + +.content { +} + + .content ul { + list-style: square outside; + padding-left: 1em + } + + .content ul > li > ul { + list-style-type: disc + } + + .content ul > li > ul > li > ul { + list-style-type: circle + } + + .content ol { + list-style: decimal inside + } + + .content ol ol, .content ul ol, .content ol ul, .content ul ul { + margin-left: 1em + } + + .content ol li, .content ul li { + margin-bottom: 10px + } + + .content ol li:last-child, .content ul li:last-child { + margin-bottom: inherit + } + +dl { + margin-left: 1em +} + + dl dt { + font-weight: bold + } + + dl dd { + display: block; + overflow: auto + } + +body.mw-hide-empty-elt .mw-empty-elt { + display: none +} + +a { + text-decoration: none; + color: #002bb8 +} + + a:visited { + color: #5a3696 + } + + a:active { + color: #faa700 + } + + a:hover { + text-decoration: underline + } + + a.new, a.new:visited, a.new:hover { + color: #dd3333 + } + + a.new > *, a.new:visited > *, a.new:hover > * { + color: #dd3333 + } + + a.external { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVElEQVR42n3PgQkAIAhEUXdqJ3dqJ3e6IoTPUSQcgj4EQ5IlUiLE0Jil3PECXhcHGBhZ8kg4hwxAu3MZeCGeyFnAXp4hqNQPnt7QL0nADpD6wHccLvnAKksq8iiaAAAAAElFTkSuQmCC); + background-image: url(/w/skins/MinervaNeue/resources/skins.minerva.content.styles/images/external-link-ltr-icon.png?948bf) !ie; + background-image: linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2210%22 height=%2210%22 viewBox=%220 0 10 10%22%3E%3Cpath fill=%22%23fff%22 stroke=%22%2336c%22 d=%22M.5 3.518h5.982V9.5H.5z%22/%3E%3Cpath fill=%22%2336c%22 d=%22M4.755-.16H9.99v5.39L8.417 6.774l-1.31-1.31L4.383 8.19 1.695 5.5l2.808-2.807-1.31-1.31z%22/%3E%3Cpath fill=%22%23fff%22 d=%22M8.984.845l.022 4.884L7.19 3.91 4.308 6.79 3.08 5.567l2.882-2.88L4.112.833z%22/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center right; + padding-right: 13px + } + +.return-link, #mw-mf-last-modified { + display: block; + font-size: 0.9em; + margin-top: 1.5em +} + +.plainlinks a { + background: none !important; + padding: 0 !important +} + +.mw-parser-output { + counter-reset: mw-numbered-ext-link +} + + .mw-parser-output a[rel~='mw:ExtLink']:empty:after { + content: '[' counter(mw-numbered-ext-link) ']'; + counter-increment: mw-numbered-ext-link + } + +.content p { + margin: 0.5em 0 1em 0 +} + +strong, b { + font-weight: bold +} + +em, i { + font-style: italic +} + +kbd, samp, code, pre { + font-family: monospace,monospace; + border: solid 1px #c8ccd1; + white-space: pre-wrap +} + +code { + padding: 0.2em 0.5em +} + +pre { + padding: 1em +} + +.mw-ref, sup { + vertical-align: super +} + +sub { + vertical-align: sub +} + +.mw-ref, sub, sup { + font-size: 0.75em; + line-height: 1 +} + +.content table { + margin: 1em 0; + overflow: auto; + overflow-y: hidden; + overflow-x: auto; + display: block; + width: 100% !important +} + + .content table caption { + display: block; + text-align: left + } + + .content table.wikitable { + border: 1px solid #54595d; + border-color: rgba(84,89,93,0.3) + } + + .content table.wikitable > tr > th, .content table.wikitable > tr > td, .content table.wikitable > * > tr > th, .content table.wikitable > * > tr > td { + border: 1px solid #54595d; + border-color: rgba(84,89,93,0.3); + padding: 0.2em + } + + .content table.wikitable > tr > th, .content table.wikitable > * > tr > th { + background-color: #eaecf0 + } + +.collapsible td { + width: auto !important +} + +.content .vertical-navbox, .content .navbox { + display: none +} + +.content .action-edit .fmbox, .content .tmbox, .content .ambox, .content #coordinates, .content .topicon, .content .metadata { + display: none !important +} + +.content table { + float: none !important; + margin-left: 0 !important; + margin-right: 0 !important +} + + .content table.infobox { + font-size: 90%; + position: relative; + border: 1px solid #eaecf0; + margin-bottom: 2em; + text-align: left; + background-color: #f8f9fa; + display: flex; + flex: 1 1 100%; + flex-flow: column nowrap + } + + .content table.infobox th, .content table.infobox td { + vertical-align: top; + border: 0; + border-bottom: 1px solid #eaecf0; + padding: 7px 10px + } + + .content table.infobox tbody > tr > td, .content table.infobox tbody > tr > th { + flex: 1 0 + } + + .content table.infobox td:only-child, .content table.infobox th:only-child { + width: 100% + } + + .content table.infobox tr:last-child th, .content table.infobox tr:last-child td { + border: 0 + } + + .content table.infobox > tbody { + display: flex; + flex-flow: column nowrap + } + + .content table.infobox > tbody > tr { + min-width: 100%; + display: flex; + flex-flow: row nowrap + } + +.infobox .infobox-header,.infobox .infobox-subheader,.infobox .infobox-image,.infobox .infobox-full-data,.infobox .infobox-below { + text-align: center !important +} + +.infobox .infobox-above,.infobox .infobox-title,.infobox caption { + font-size: 125%; + font-weight: bold; + padding: 0.2em; + text-align: center !important +} + +#filetoc, .mw-editsection { + display: none +} + +.skin-minerva .portal-column-left-wide, .skin-minerva .portal-column-left, .skin-minerva .portal-column-right, .skin-minerva .portal-column-right-narrow { + float: none; + width: 100% +} + +.references-column-count, .column-count { + -moz-column-width: 35em; + -webkit-column-width: 35em; + column-width: 35em +} + +.references li:target { + background-color: #def +} + +.hatnote, .dablink, .rellink { + padding: 5px 7px; + color: #54595d; + font-size: 0.8em; + background-color: #f8f9fa; + margin-bottom: 1px +} + + .hatnote a, .dablink a, .rellink a { + color: #3366cc + } + +.quotebox { + margin: 0 0 0.8em !important; + width: auto !important +} + +@media all and (min-width:720px) { + .content .vertical-navbox, .content .navbox { + display: inherit + } + + /* Support lists that automatically split into limited-width columns (for translations tables and the like): */ + .multicolumn-list > ul { + -webkit-column-width: 25em; + -moz-column-width: 25em; + -ms-column-width: 25em; + column-width: 25em; + column-gap: 20px; + } + .multicolumn-list-wide > ul { + -webkit-column-width: 55em; + -moz-column-width: 55em; + -ms-column-width: 55em; + column-width: 55em; + column-gap: 20px; + } + .multicolumn-list-narrow > ul { + -webkit-column-width: 22em; + -moz-column-width: 22em; + -ms-column-width: 22em; + column-width: 22em; + column-gap: 20px; + } + + /* Used by column templates (see [[Module:columns]]). */ + .ul-column-count[data-column-count="2"] > ul, + .ul-column-count[data-column-count="2"] > ol, + .ul-column-count[data-column-count="2"] > dl { + -moz-column-count: 2; -webkit-column-count: 2; -ms-column-count: 2; column-count: 2; + } + + .ul-column-count[data-column-count="3"] > ul, + .ul-column-count[data-column-count="3"] > ol, + .ul-column-count[data-column-count="3"] > dl { + -moz-column-count: 3; -webkit-column-count: 3; -ms-column-count: 3; column-count: 3; + } + + .ul-column-count[data-column-count="4"] > ul, + .ul-column-count[data-column-count="4"] > ol, + .ul-column-count[data-column-count="4"] > dl { + -moz-column-count: 4; -webkit-column-count: 4; -ms-column-count: 4; column-count: 4; + } + + .ul-column-count[data-column-count="5"] > ul, + .ul-column-count[data-column-count="5"] > ol, + .ul-column-count[data-column-count="5"] > dl { + -moz-column-count: 5; -webkit-column-count: 5; -ms-column-count: 5; column-count: 5; + } + + .ul-column-count[data-column-count="6"] > ul, + .ul-column-count[data-column-count="6"] > ol, + .ul-column-count[data-column-count="6"] > dl { + -moz-column-count: 6; -webkit-column-count: 6; -ms-column-count: 6; column-count: 6; +} + +} + +@media all and (max-width:720px) { + .gallery .gallerybox { + width: 100% !important + } + + .gallery .gallerybox div { + width: 100% !important + } + + .content table.multicol > tr > td, .content table.multicol > tbody > tr > td { + display: block !important; + width: auto !important + } + + .content .thumb .thumbinner { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + justify-content: center; + flex-wrap: wrap; + align-content: flex-start + } + + .content .thumb .thumbinner > .thumbcaption { + -webkit-box-pack: justify; + -moz-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-flex: 1; + -moz-box-flex: 1; + width: 100%; + -ms-flex: 1 0 100%; + flex: 1 0 100%; + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -ms-flex-order: 1; + order: 1; + display: block + } +} + +[dir='rtl'] .content .infobox { + text-align: left +} + +.mw-ref { + vertical-align: super; + line-height: 1; + font-size: smaller; + unicode-bidi: embed +} + + .mw-ref a[data-mw-group]:after { + content: '[' attr(data-mw-group) ' ' counter(mw-Ref,decimal) ']' + } + + .mw-ref a[data-mw-group='decimal']:after { + content: '[' counter(mw-Ref,decimal) ']' + } + + .mw-ref a[data-mw-group='lower-alpha']:after { + content: '[' counter(mw-Ref,lower-alpha) ']' + } + + .mw-ref a[data-mw-group='upper-alpha']:after { + content: '[' counter(mw-Ref,upper-alpha) ']' + } + + .mw-ref a[data-mw-group='lower-greek']:after { + content: '[' counter(mw-Ref,lower-greek) ']' + } + + .mw-ref a[data-mw-group='lower-roman']:after { + content: '[' counter(mw-Ref,lower-roman) ']' + } + + .mw-ref a[data-mw-group='upper-roman']:after { + content: '[' counter(mw-Ref,upper-roman) ']' + } + + .mw-ref a[data-mw-group='error-test']:after { + content: '[' counter(mw-Ref,symbols(cyclic 'first' 'second' 'last!')) ']' + } + + .mw-ref a:after { + content: '[' counter(mw-Ref,decimal) ']' + } + +x-thereisnoelementwiththisname:after, span.mw-reflink-text { + display: none +} + +ol.mw-references { + counter-reset: mw-ref-linkback +} + + ol.mw-references li { + counter-increment: mw-ref-linkback + } + +[rel='mw:referencedBy'] { + counter-reset: mw-ref-linkback -1 +} + + [rel='mw:referencedBy']:before { + content: '¬ニム ' + } + +span[rel='mw:referencedBy'] a:before { + counter-increment: mw-ref-linkback; + content: counters(mw-ref-linkback,'.',decimal); + vertical-align: super; + line-height: 1; + font-size: smaller +} + +span[rel='mw:referencedBy'] a:after { + content: ' ' +} + +#issues_container div.hatnote { + display: none +} + +a.disambig_button { + text-decoration: none; + color: #555; + float: left +} + + a.disambig_button:active { + color: #b0b0b0 + } + +.hide-when-compact { + display: none +} + +.mobile-float-reset { + float: none !important; + width: 100% !important +} + +#content .vertical-navbox, #content .navbox { + display: none +} + +@media all and (min-width:768px) { + #content .vertical-navbox, #content .navbox { + display: inherit + } +} + +@media screen,handheld { + .citation *.printonly { + display: none + } +} + +.citation { + word-wrap: break-word +} + +.navbar { + display: inline; + font-size: 88%; + font-weight: normal +} + + .navbar ul { + display: inline; + white-space: nowrap + } + + .navbar li { + word-spacing: -0.125em + } + + .navbar.mini li span { + font-variant: small-caps + } + +.infobox .navbar { + font-size: 100% +} + +.navbox .navbar { + display: block; + font-size: 100% +} + +.navbox-title .navbar { + float: left; + text-align: left; + margin-right: 0.5em; + width: 6em +} + +.hlist dl, .hlist ol, .hlist ul { + margin: 0; + padding: 0 +} + +.hlist dd, .hlist dt, .hlist li { + margin: 0; + display: inline +} + +.hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { + display: inline +} + +#content .hlist dt:after { + content: ':' +} + +#content .hlist dd:after, #content .hlist li:after { + content: ' · '; + font-weight: bold +} + +#content .hlist dd:last-child:after, #content .hlist dt:last-child:after, #content .hlist li:last-child:after { + content: none +} + +#content .hlist dd dd:first-child:before, #content .hlist dd dt:first-child:before, #content .hlist dd li:first-child:before, #content .hlist dt dd:first-child:before, #content .hlist dt dt:first-child:before, #content .hlist dt li:first-child:before, #content .hlist li dd:first-child:before, #content .hlist li dt:first-child:before, #content .hlist li li:first-child:before { + content: ' ('; + font-weight: normal +} + +#content .hlist dd dd:last-child:after, #content .hlist dd dt:last-child:after, #content .hlist dd li:last-child:after, #content .hlist dt dd:last-child:after, #content .hlist dt dt:last-child:after, #content .hlist dt li:last-child:after, #content .hlist li dd:last-child:after, #content .hlist li dt:last-child:after, #content .hlist li li:last-child:after { + content: ') '; + font-weight: normal +} + +#content .hlist ol { + counter-reset: list-item +} + + #content .hlist ol > li { + counter-increment: list-item + } + + #content .hlist ol > li:before { + content: ' ' counter(list-item) ' ' + } + +#content .hlist dd ol > li:first-child:before, #content .hlist dt ol > li:first-child:before, #content .hlist li ol > li:first-child:before { + content: ' (' counter(list-item) ' ' +} + +.plainlist ul { + list-style: none +} + +.compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { + display: none +} + +.compact-ambox table.ambox { + border: 0; + border-collapse: collapse; + background: transparent; + margin: 0 0 0 1.6em !important; + padding: 0 !important; + width: auto; + display: block +} + +.compact-ambox table.mbox-small-left { + font-size: 100%; + width: auto; + margin: 0 +} + +.compact-ambox table .mbox-text { + padding: 0 !important; + margin: 0 !important +} + +.compact-ambox table .mbox-text-span { + display: list-item; + line-height: 1.5em; + list-style-type: square; + list-style-image: url(data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=) +} + +.compact-ambox .hide-when-compact { + display: none +} + +.rellink, .dablink, .hatnote { + font-style: italic +} + + .rellink i, .dablink i, .hatnote i { + font-style: normal + } + +div.rellink, div.dablink, div.hatnote { + padding-left: 1.6em; + margin-bottom: 0.5em +} + +.geo-default, .geo-dms, .geo-dec { + display: inline +} + +.geo-nondefault, .geo-multi-punct { + display: none +} + +.longitude, .latitude { + white-space: nowrap +} + +.nowrap, .nowraplinks a, .nowraplinks .selflink, sup.reference a { + white-space: nowrap +} + +.wrap, .wraplinks a { + white-space: normal +} + +.sysop-show, .accountcreator-show, .autoconfirmed-show { + display: none +} + +#li-coordinates { + background-image: url(/w/extensions/MobileApp/images/80px-Edge-firefox.png?120ff); + float: right; + display: none; + -webkit-background-size: auto 30px; + background-size: auto 30px +} + +.client-js .content_block.coordinates { + display: none; + text-align: right; + margin-bottom: 0.5em; + font-size: smaller +} + + .client-js .content_block.coordinates .latitude { + display: none; + padding-left: 20px; + background-image: url(/w/extensions/MobileApp/images/50px-Edge-firefox.png?14d02); + background-repeat: no-repeat; + -webkit-background-size: auto 15px; + background-size: auto 15px + } + +.alpha #li-coordinates { + display: list-item +} + +.client-js .beta .content_block.coordinates { + display: block +} + + .client-js .beta .content_block.coordinates .latitude { + display: inline + } + +.topicon { + display: none +} + +td .sortkey, th .sortkey { + display: none; + speak: none +} + +.transborder { + border: solid transparent +} + +.image_overflow_x_container { + max-width: 100%; + overflow: auto +} + +.visualhide { + position: absolute; + left: -10000px; + top: auto; + width: 1px; + height: 1px; + overflow: hidden +} + +@media screen and (max-width:981px) { + .portail-gauche, .portail-droite { + float: none; + width: auto !important + } + + .portail-gauche-inner { + padding-right: 0 + } +} + +h2.section_heading { + padding: 20px 0 10px; + margin-bottom: 0 +} + +h3.section_heading { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + font-weight: bold; + padding: 15px 0 0 !important +} + +div.issues_container { + margin-top: -0.2em; + margin-bottom: 2.2em; + padding-top: 1px; + padding-bottom: 1px; + width: 100%; + display: block; + font-size: 0.9em; + letter-spacing: 0.02em; + color: #555 +} + +span.issues_separator { + padding-left: 0.6em; + padding-right: 0.6em; + float: left +} + +a.issues_button { + text-decoration: none; + color: #555; + float: left +} + + a.issues_button:active { + color: #b0b0b0 + } + +.loading { + border: 4px solid rgba(0,0,0,0.1); + border-top: 4px solid rgba(0,0,0,0.4); + border-radius: 100%; + -webkit-animation: rot 0.6s infinite linear +} + +@-webkit-keyframes rot { + from { + -webkit-transform: rotate(0deg) + } + + to { + -webkit-transform: rotate(359deg) + } +} + +#loading_sections { + margin: 8px auto; + height: 24px; + width: 24px +} + +.ipa_button { + display: inline-block; + margin-bottom: -3px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAgCAYAAABHA7voAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABBRJREFUWEfdWflPFkEM5U9HQUGj0WiMmnhrRBMVUeOt4fQG8cALBU8OEUEURK7aN06Xbr/Z/Wb59hd5yYtZ253Zt+203Y+6je0kpHVEp4mI6tajOGEiMGRMePkN0YHesK0M3hrixygRem1GvsDd94gWl4mWV4jufyba2h32WytPPXMP4bDCe2QxhDwfWZ+RL/DxqHNKMP2baMfdsG9RbmBmPXwWYt1lD0a2QAhZWHJOCYaniBo6wv5FWVRcEcgejGyBN945hxSO9ad9dt8n2lRQMNK8VnHVbpe9GNkCR386hwS4blD2zZ1EE7NEIzNEB/vS9+YRZ9oCgucX/YXBWt6F7MUIC9zFxQWFRePaYNqn9aU3MOD7gItQc1fax/Iwv4gYLAdeQgwkM2Q/Rlhg2ytnTAABEK19Pv/wRo/ZBaJtPWmfEMd++Rs81hKhapC9GGGBvSPOmACpqO04ezbCne/TPkhhfa3ZxtFHynfwPXYdAaIhzIO2R0fQRqd/LG2/9NobPPCQ6Jlih7gxFnD9LVFjlSLUMewXKQFRAlEVf/5xxgSoqNqnz0R4nNNO28+98AYGInUopwgdf+IdFfCgS9yiwCKIEtjEhWLJOwrODKR9Pkx7g0c/DwTa/pQjrjE9H24nONc6xWKQ5y/FSdZnVApEobA4rvofWsU3PpMa7Zxmeg3bYh5+SduFUzwZlYmoCGKCsTj8eNWOSeb7nDd43FQpjBdg7Rioxa55+vm/9EfVRpac5dS+yOf7PBch2Fr5Gi/HvrAsRAkMRVBPMBAwaQTcNgJGzAOhKmu7UA8OIWJexb+2tQB5qSr3MyoFolnb0o23qX0+mSr7yAh4Ys7g4GTaboXh2okJnNMLpifHnFm5l1EpcBOXeDRtjatmink27g0eaCvajnQD8KJ6Pub3RKEVfZSz5grvm9Un8yBrMCoFgtWKBPqbBubL7WqKgaD3/OVxgluAvs+ykf1a+Jtw3wNek88izmov7zVgXqBGzREEbZnHQK3t+x9WbmSjXO18gd0f/M2RiBEHyPqMsECkhoaL0J1VOx4e45sGSj56qF6nGvdw5Ow3ZxmQ9RlhgfsQIWdfBUq59rFpirRey9f+DA8BZUPWZoQFIkK2FQzxmdI+W/jDdYZHOhQB/F7TFFFIQoxNuyKQtRlhgWCXOR94Dpw97YPG3PI0/X9FOWcqdhmQtRnZAnE+7Ew68DXsWwtjIlg0yrI2I1sg+GrCOSVAOuqxrVbiKAybwb0MyPqMfIH4wVe/PXzj7TVpWgullaBg4RMNvTMW+rlshGV9Rr5AEFML7sdvLkXbQCwreiaPbFKRMTo2cwHDkH+Es8e2Jwu9DsMJzBW5kzc6WWMhqUYZqktm6o8vVSP5n9FpcgLr6+vXLYmo7i97FXYYGMQFoAAAAABJRU5ErkJggg==); + background-image: url(/w/extensions/MobileApp/images/ipa.png?736e4) !ie; + background-size: 28px 16px; + height: 16px; + width: 28px +} + +.mcs-ipa { + display: none +} + +.mw-body-content { + counter-reset: mw-numbered-ext-link +} + + .mw-body-content a[rel~='mw:ExtLink']:empty:after { + content: '[' counter(mw-numbered-ext-link) ']'; + counter-increment: mw-numbered-ext-link + } + +.mw-body h3, .mw-body h2 { + /*clear: both; + width: 100%;*/ + margin-bottom: 0.5em; + border-bottom: solid 1px #eaecf0; + font-family: 'Linux Libertine', 'Georgia', 'Times', serif; +} + +.mw-body h3 { + border-bottom: 0px solid #eaecf0; + font-weight: bold; +} + +.mw-body h4 { + border-bottom: 0px solid #eaecf0; +} + +h1[tabindex="0"].collapsible-heading > .indicator { + display: none; + /* hide the "v" icone for the main title */ +} + +.section-heading > h1, +.section-heading > h2, +.section-heading > h3, +.section-heading > h4 { + display: inline; + border: none; +} + +summary.section-heading { + display: list-item !important; + cursor: pointer; +} + +.content figure img, .content figure video { + margin: 0.6em auto 0.6em auto; + display: block +} + +li.gallerybox { + vertical-align: top; + display: -moz-inline-box; + display: inline-block +} + +ul.gallery, li.gallerybox { + zoom: 1; + *display: inline +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word +} + +li.gallerybox div.thumb { + text-align: center; + margin: 2px +} + + li.gallerybox div.thumb img { + display: block; + margin: 0 auto + } + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word +} + +.galleryfilename { + display: block +} + +.galleryfilename-truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +ul.mw-gallery-nolines li.gallerybox div.thumb { + background-color: transparent; + border: 0 +} + +ul.mw-gallery-nolines li.gallerybox div.gallerytext { + text-align: center +} + +ul.mw-gallery-packed li.gallerybox div.thumb, ul.mw-gallery-packed-overlay li.gallerybox div.thumb, ul.mw-gallery-packed-hover li.gallerybox div.thumb { + background-color: transparent; + border: 0 +} + + ul.mw-gallery-packed li.gallerybox div.thumb img, ul.mw-gallery-packed-overlay li.gallerybox div.thumb img, ul.mw-gallery-packed-hover li.gallerybox div.thumb img { + margin: 0 auto + } + +ul.mw-gallery-packed-hover li.gallerybox, ul.mw-gallery-packed-overlay li.gallerybox { + position: relative +} + +ul.mw-gallery-packed-hover div.gallerytextwrapper { + overflow: hidden; + height: 0 +} + +ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { + position: absolute; + background: #fff; + background: rgba(255,255,255,0.8); + padding: 5px 10px; + bottom: 0; + left: 0; + height: auto; + max-height: 40%; + overflow: hidden; + font-weight: bold; + margin: 2px +} + + ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden + } + + ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover { + overflow: visible; + max-height: none + } + + ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p { + text-overflow: clip; + white-space: normal; + overflow: visible + } + +ul.mw-gallery-packed-hover, ul.mw-gallery-packed-overlay, ul.mw-gallery-packed { + text-align: center +} + +ul.gallery.mw-gallery-slideshow { + display: block; + margin: 4em 0 +} + + ul.gallery.mw-gallery-slideshow .gallerycaption { + font-size: 1.3em; + margin: 0 + } + + ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled { + margin-bottom: 1.3em + } + + ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons { + opacity: 0.5; + padding: 1.3em 0 + } + + ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement { + margin: 0 2em + } + +.mw-gallery-slideshow li.gallerybox.slideshow-current { + background: #efefef +} + +.mw-gallery-slideshow .gallerybox > div { + max-width: 120px +} + +ul.mw-gallery-slideshow li.gallerybox div.thumb { + border: 0; + background: transparent +} + +ul.mw-gallery-slideshow li.gallerycarousel { + display: block; + text-align: center +} + +.mw-gallery-slideshow-img-container a { + display: block +} + +@media screen { + li.gallerybox div.thumb { + border: 1px solid #c8ccd1; + background-color: #f8f9fa + } +} + +@media print { + li.gallerybox { + vertical-align: top; + display: inline-block + } + + ul.gallery, li.gallerybox { + zoom: 1; + *display: inline + } + + ul.gallery { + margin: 2px; + padding: 2px; + display: block + } + + li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word + } + + li.gallerybox div.thumb { + background-color: #fff; + border: 1px solid #ccc + } + + div.gallerytext { + overflow: visible + } + + ul.mw-gallery-packed-hover div.gallerytextwrapper { + overflow: visible; + height: auto + } + + ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { + position: static; + background: transparent; + padding: 0; + bottom: 0; + max-height: none; + overflow: visible; + font-weight: normal; + margin: 0 + } + + ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p { + text-overflow: clip; + white-space: normal; + overflow: visible + } +} + +.mw-parser-output { + counter-reset: mw-numbered-ext-link +} + + .mw-parser-output a[rel~='mw:ExtLink']:empty:after { + content: '[' counter(mw-numbered-ext-link) ']'; + counter-increment: mw-numbered-ext-link + } + +span.reference { + font-size: 80%; + line-height: 1; + vertical-align: super; + unicode-bidi: -moz-isolate; + unicode-bidi: isolate +} + +sup, sub { + line-height: 1 +} + +figure[typeof*='mw:Image'], figure[typeof*='mw:Video'], figure[typeof*='mw:Audio'] { + margin: 0 +} + + figure[typeof*='mw:Image'] a, figure[typeof*='mw:Video'] a, figure[typeof*='mw:Audio'] a { + border: 0 + } + + figure[typeof*='mw:Image'].mw-halign-right, figure[typeof*='mw:Video'].mw-halign-right, figure[typeof*='mw:Audio'].mw-halign-right { + margin: 0.5em 0 1.3em 1.4em; + clear: right; + float: right + } + + figure[typeof*='mw:Image'].mw-halign-left, figure[typeof*='mw:Video'].mw-halign-left, figure[typeof*='mw:Audio'].mw-halign-left { + margin: 0.5em 1.4em 1.3em 0; + clear: left; + float: left + } + + figure[typeof*='mw:Image'].mw-halign-none, figure[typeof*='mw:Video'].mw-halign-none, figure[typeof*='mw:Audio'].mw-halign-none { + margin: 0; + clear: none; + float: none + } + + figure[typeof*='mw:Image'].mw-halign-center, figure[typeof*='mw:Video'].mw-halign-center, figure[typeof*='mw:Audio'].mw-halign-center { + margin: 0 auto 0.5em auto; + display: table; + border-collapse: collapse; + clear: none; + float: none + } + + figure[typeof*='mw:Image'] > figcaption, figure[typeof*='mw:Video'] > figcaption, figure[typeof*='mw:Audio'] > figcaption { + display: none + } + +figure[typeof~='mw:Image/Thumb'], figure[typeof~='mw:Video/Thumb'], figure[typeof~='mw:Audio/Thumb'], figure[typeof~='mw:Image/Frame'], figure[typeof~='mw:Video/Frame'], figure[typeof~='mw:Audio/Frame'] { + display: table; + text-align: center; + border: 1px solid #c8ccd1; + border-collapse: separate; + border-spacing: 3px; + background-color: #f8f9fa; + width: 1px; + margin: 0.5em 0 1.3em 1.4em; + clear: right; + float: right +} + + figure[typeof~='mw:Image/Thumb'].mw-halign-center, figure[typeof~='mw:Video/Thumb'].mw-halign-center, figure[typeof~='mw:Audio/Thumb'].mw-halign-center, figure[typeof~='mw:Image/Frame'].mw-halign-center, figure[typeof~='mw:Video/Frame'].mw-halign-center, figure[typeof~='mw:Audio/Frame'].mw-halign-center { + border-collapse: separate + } + + figure[typeof~='mw:Image/Thumb'] > *:first-child > img, figure[typeof~='mw:Video/Thumb'] > *:first-child > img, figure[typeof~='mw:Audio/Thumb'] > *:first-child > img, figure[typeof~='mw:Image/Frame'] > *:first-child > img, figure[typeof~='mw:Video/Frame'] > *:first-child > img, figure[typeof~='mw:Audio/Frame'] > *:first-child > img, figure[typeof~='mw:Image/Thumb'] > *:first-child > video, figure[typeof~='mw:Video/Thumb'] > *:first-child > video, figure[typeof~='mw:Audio/Thumb'] > *:first-child > video, figure[typeof~='mw:Image/Frame'] > *:first-child > video, figure[typeof~='mw:Video/Frame'] > *:first-child > video, figure[typeof~='mw:Audio/Frame'] > *:first-child > video { + border: 1px solid #c8ccd1; + background: #fff + } + + figure[typeof~='mw:Image/Thumb'] > figcaption, figure[typeof~='mw:Video/Thumb'] > figcaption, figure[typeof~='mw:Audio/Thumb'] > figcaption, figure[typeof~='mw:Image/Frame'] > figcaption, figure[typeof~='mw:Video/Frame'] > figcaption, figure[typeof~='mw:Audio/Frame'] > figcaption { + display: block; + font-size: 88.4%; + line-height: 1.4em; + text-align: left; + padding: 3px + } + +figure[typeof*='mw:Image/Thumb'] > a:after, figure[typeof*='mw:Video/Thumb'] > a:after, figure[typeof*='mw:Audio/Thumb'] > a:after { + content: ''; + width: 15px; + height: 11px; + margin: 3px; + margin-bottom: 0 +} + +.mw-content-ltr figure[typeof*='mw:Image/Thumb'] > a:after, .mw-content-ltr figure[typeof*='mw:Video/Thumb'] > a:after, .mw-content-ltr figure[typeof*='mw:Audio/Thumb'] > a:after { + float: right; + background-image: url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704); + background-image: linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.svg?7fa0a) +} + +.mw-content-rtl figure[typeof*='mw:Image/Thumb'] > a:after, .mw-content-rtl figure[typeof*='mw:Video/Thumb'] > a:after, .mw-content-rtl figure[typeof*='mw:Audio/Thumb'] > a:after { + float: left; + background-image: url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.png?a9fb3); + background-image: linear-gradient(transparent,transparent),url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.svg?96de0) +} + +.mw-image-border > *:first-child > img, .mw-image-border > *:first-child > video { + border: 1px solid #eaecf0 +} + +.mw-gallery-traditional .gallerybox .thumb:before { + content: ''; + vertical-align: middle; + display: inline-block; + height: 100% +} + +.mw-gallery-traditional .gallerybox .thumb > * { + vertical-align: middle; + display: inline-block +} + +.mw-valign-middle > *:first-child > img, .mw-valign-middle > *:first-child > video { + vertical-align: middle +} + +.mw-valign-baseline > *:first-child > img, .mw-valign-baseline > *:first-child > video { + vertical-align: baseline +} + +.mw-valign-sub > *:first-child > img, .mw-valign-sub > *:first-child > video { + vertical-align: sub +} + +.mw-valign-super > *:first-child > img, .mw-valign-super > *:first-child > video { + vertical-align: super +} + +.mw-valign-top > *:first-child > img, .mw-valign-top > *:first-child > video { + vertical-align: top +} + +.mw-valign-text-top > *:first-child > img, .mw-valign-text-top > *:first-child > video { + vertical-align: text-top +} + +.mw-valign-bottom > *:first-child > img, .mw-valign-bottom > *:first-child > video { + vertical-align: bottom +} + +.mw-valign-text-bottom > *:first-child > img, .mw-valign-text-bottom > *:first-child > video { + vertical-align: text-bottom +} + +/* Content of inserted_style_mobile.css*/ +/* style from https://fr.m.wikipedia.org/w/load.php?debug=false&lang=fr&modules=ext.cite.styles%7Cext.math.styles%7Cext.timeline.styles%7Cmediawiki.page.gallery.styles%7Cmediawiki.ui.button%2Cicon%7Cskins.minerva.base.reset%2Cstyles%7Cskins.minerva.content.styles%7Cskins.minerva.icons.images%7Cskins.minerva.tablet.styles&only=styles&skin=minerva */ +.mw-cite-backlink, .cite-accessibility-label { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none +} + +.mw-references-columns { + -webkit-column-width: 35em; + -moz-column-width: 35em; + column-width: 35em +} + + .mw-references-columns li { + -webkit-column-break-inside: avoid; + page-break-inside: avoid; + break-inside: avoid-column + } + +sup.reference { + unicode-bidi: -moz-isolate; + unicode-bidi: -webkit-isolate; + unicode-bidi: isolate; + white-space: nowrap +} + + ol.references li:target, sup.reference:target { + background-color: #def; + background-color: rgba( 0,127,255,0.133 ) + } + +.mw-ext-cite-error { + font-weight: bold; + unicode-bidi: embed +} + +@media print { + .mw-cite-backlink { + display: none + } +} + +@namespace m url(../../../A/s/css_modules/http:/www.w3.org/1998/Math/MathML); + +.mwe-math-mathml-inline { + display: inline !important +} + +.mwe-math-mathml-display { + display: block !important; + margin-left: auto; + margin-right: auto +} + +.mwe-math-mathml-a11y { + clip: rect( 1px,1px,1px,1px ); + overflow: hidden; + position: absolute; + width: 1px; + height: 1px; + opacity: 0 +} + +.mwe-math-fallback-image-inline { + display: inline-block; + vertical-align: middle +} + +.mwe-math-fallback-image-display { + display: block; + margin-left: auto !important; + margin-right: auto !important +} + +.mwe-math-fallback-source-inline { + display: inline; + vertical-align: middle +} + +.mwe-math-fallback-source-display { + display: block; + margin-left: auto; + margin-right: auto +} + +img.tex { + vertical-align: middle +} + +.mwe-math-element { + overflow-x: auto; + max-width: 100% +} + +.timeline-wrapper { + max-width: 100%; + overflow: auto +} + +@media print { + li.gallerybox { + vertical-align: top; + display: inline-block + } + + ul.gallery, li.gallerybox { + zoom: 1; + *display: inline + } + + ul.gallery { + margin: 2px; + padding: 2px; + display: block + } + + li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word + } + + li.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + margin: 2px + } + + div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word + } +} + +li.gallerybox { + vertical-align: top; + display: -moz-inline-box; + display: inline-block +} + +ul.gallery, li.gallerybox { + zoom: 1; + *display: inline +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word +} + +li.gallerybox div.thumb { + text-align: center; + border: 1px solid #c8ccd1; + background-color: #f8f9fa; + margin: 2px +} + + li.gallerybox div.thumb img { + display: block; + margin: 0 auto + } + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word +} + +.galleryfilename { + display: block +} + +.galleryfilename-truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +ul.mw-gallery-nolines li.gallerybox div.thumb { + background-color: transparent; + border: 0 +} + +ul.mw-gallery-nolines li.gallerybox div.gallerytext { + text-align: center +} + +ul.mw-gallery-packed li.gallerybox div.thumb, ul.mw-gallery-packed-overlay li.gallerybox div.thumb, ul.mw-gallery-packed-hover li.gallerybox div.thumb { + background-color: transparent; + border: 0 +} + + ul.mw-gallery-packed li.gallerybox div.thumb img, ul.mw-gallery-packed-overlay li.gallerybox div.thumb img, ul.mw-gallery-packed-hover li.gallerybox div.thumb img { + margin: 0 auto + } + +ul.mw-gallery-packed-hover li.gallerybox, ul.mw-gallery-packed-overlay li.gallerybox { + position: relative +} + +ul.mw-gallery-packed-hover div.gallerytextwrapper { + overflow: hidden; + height: 0 +} + +ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { + position: absolute; + background: #fff; + background: rgba( 255,255,255,0.8 ); + padding: 5px 10px; + bottom: 0; + left: 0; + height: auto; + max-height: 40%; + overflow: hidden; + font-weight: bold; + margin: 2px +} + + ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper p, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper p, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper p { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden + } + + ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover { + overflow: visible; + max-height: none + } + + ul.mw-gallery-packed-hover li.gallerybox div.gallerytextwrapper:hover p, ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper:hover p, ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper:hover p { + text-overflow: clip; + white-space: normal; + overflow: visible + } + +ul.mw-gallery-packed-hover, ul.mw-gallery-packed-overlay, ul.mw-gallery-packed { + text-align: center +} + +ul.gallery.mw-gallery-slideshow { + display: block; + margin: 4em 0 +} + + ul.gallery.mw-gallery-slideshow .gallerycaption { + font-size: 1.3em; + margin: 0 + } + + ul.gallery.mw-gallery-slideshow .gallerycarousel.mw-gallery-slideshow-thumbnails-toggled { + margin-bottom: 1.3em + } + + ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons { + opacity: 0.5; + padding: 1.3em 0 + } + + ul.gallery.mw-gallery-slideshow .mw-gallery-slideshow-buttons .oo-ui-buttonElement { + margin: 0 2em + } + +.mw-gallery-slideshow li.gallerybox.slideshow-current { + background: #efefef +} + +.mw-gallery-slideshow .gallerybox > div { + max-width: 120px +} + +ul.mw-gallery-slideshow li.gallerybox div.thumb { + border: 0; + background: transparent +} + +ul.mw-gallery-slideshow li.gallerycarousel { + display: block; + text-align: center +} + +.mw-gallery-slideshow-img-container a { + display: block +} + +.mw-ui-button { + font-family: inherit; + font-size: 1em; + display: inline-block; + min-width: 4em; + max-width: 28.75em; + padding: 0.546875em 1em; + line-height: 1.286; + margin: 0; + border-radius: 2px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + *display: inline; + zoom: 1; + vertical-align: middle; + background-color: #f8f9fa; + color: #222222; + border: 1px solid #a2a9b1; + text-align: center; + font-weight: bold; + cursor: pointer +} + + .mw-ui-button:visited { + color: #222222 + } + + .mw-ui-button:hover { + background-color: #ffffff; + color: #444444; + border-color: #a2a9b1 + } + + .mw-ui-button:focus { + background-color: #ffffff; + color: #222222; + border-color: #3366cc; + box-shadow: inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff + } + + .mw-ui-button:active, .mw-ui-button.is-on, .mw-ui-button.mw-ui-checked { + background-color: #d9d9d9; + color: #000000; + border-color: #72777d; + box-shadow: none + } + + .mw-ui-button:disabled { + background-color: #c8ccd1; + color: #fff; + border-color: #c8ccd1 + } + + .mw-ui-button:disabled:hover, .mw-ui-button:disabled:active { + background-color: #c8ccd1; + color: #fff; + box-shadow: none; + border-color: #c8ccd1 + } + + .mw-ui-button:focus { + outline-width: 0 + } + + .mw-ui-button:focus::-moz-focus-inner { + border-color: transparent; + padding: 0 + } + + .mw-ui-button:not( :disabled ) { + -webkit-transition: background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms; + -moz-transition: background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms; + transition: background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms + } + + .mw-ui-button:disabled { + text-shadow: none; + cursor: default + } + + .mw-ui-button.mw-ui-big { + font-size: 1.3em + } + + .mw-ui-button.mw-ui-block { + display: block; + width: 100%; + margin-left: auto; + margin-right: auto + } + + .mw-ui-button.mw-ui-progressive, .mw-ui-button.mw-ui-constructive { + background-color: #3366cc; + color: #fff; + border: 1px solid #3366cc; + text-shadow: 0 1px rgba(0,0,0,0.1) + } + + .mw-ui-button.mw-ui-progressive:hover, .mw-ui-button.mw-ui-constructive:hover { + background-color: #447ff5; + border-color: #447ff5 + } + + .mw-ui-button.mw-ui-progressive:focus, .mw-ui-button.mw-ui-constructive:focus { + box-shadow: inset 0 0 0 1px #3366cc,inset 0 0 0 2px #ffffff + } + + .mw-ui-button.mw-ui-progressive:active, .mw-ui-button.mw-ui-constructive:active, .mw-ui-button.mw-ui-progressive.is-on, .mw-ui-button.mw-ui-constructive.is-on, .mw-ui-button.mw-ui-progressive.mw-ui-checked, .mw-ui-button.mw-ui-constructive.mw-ui-checked { + background-color: #2a4b8d; + border-color: #2a4b8d; + box-shadow: none + } + + .mw-ui-button.mw-ui-progressive:disabled, .mw-ui-button.mw-ui-constructive:disabled { + background-color: #c8ccd1; + color: #fff; + border-color: #c8ccd1 + } + + .mw-ui-button.mw-ui-progressive:disabled:hover, .mw-ui-button.mw-ui-constructive:disabled:hover, .mw-ui-button.mw-ui-progressive:disabled:active, .mw-ui-button.mw-ui-constructive:disabled:active, .mw-ui-button.mw-ui-progressive:disabled.mw-ui-checked, .mw-ui-button.mw-ui-constructive:disabled.mw-ui-checked { + background-color: #c8ccd1; + color: #fff; + border-color: #c8ccd1; + box-shadow: none + } + + .mw-ui-button.mw-ui-progressive.mw-ui-quiet, .mw-ui-button.mw-ui-constructive.mw-ui-quiet { + color: #222222 + } + + .mw-ui-button.mw-ui-progressive.mw-ui-quiet:hover, .mw-ui-button.mw-ui-constructive.mw-ui-quiet:hover { + background-color: transparent; + color: #447ff5 + } + + .mw-ui-button.mw-ui-progressive.mw-ui-quiet:active, .mw-ui-button.mw-ui-constructive.mw-ui-quiet:active, .mw-ui-button.mw-ui-progressive.mw-ui-quiet.mw-ui-checked, .mw-ui-button.mw-ui-constructive.mw-ui-quiet.mw-ui-checked { + color: #2a4b8d + } + + .mw-ui-button.mw-ui-progressive.mw-ui-quiet:focus, .mw-ui-button.mw-ui-constructive.mw-ui-quiet:focus { + background-color: transparent; + color: #3366cc + } + + .mw-ui-button.mw-ui-progressive.mw-ui-quiet:disabled, .mw-ui-button.mw-ui-constructive.mw-ui-quiet:disabled { + color: #c8ccd1 + } + + .mw-ui-button.mw-ui-destructive { + background-color: #dd3333; + color: #fff; + border: 1px solid #dd3333; + text-shadow: 0 1px rgba(0,0,0,0.1) + } + + .mw-ui-button.mw-ui-destructive:hover { + background-color: #ff4242; + border-color: #ff4242 + } + + .mw-ui-button.mw-ui-destructive:focus { + box-shadow: inset 0 0 0 1px #dd3333,inset 0 0 0 2px #ffffff + } + + .mw-ui-button.mw-ui-destructive:active, .mw-ui-button.mw-ui-destructive.is-on, .mw-ui-button.mw-ui-destructive.mw-ui-checked { + background-color: #b32424; + border-color: #b32424; + box-shadow: none + } + + .mw-ui-button.mw-ui-destructive:disabled { + background-color: #c8ccd1; + color: #fff; + border-color: #c8ccd1 + } + + .mw-ui-button.mw-ui-destructive:disabled:hover, .mw-ui-button.mw-ui-destructive:disabled:active, .mw-ui-button.mw-ui-destructive:disabled.mw-ui-checked { + background-color: #c8ccd1; + color: #fff; + border-color: #c8ccd1; + box-shadow: none + } + + .mw-ui-button.mw-ui-destructive.mw-ui-quiet { + color: #222222 + } + + .mw-ui-button.mw-ui-destructive.mw-ui-quiet:hover { + background-color: transparent; + color: #ff4242 + } + + .mw-ui-button.mw-ui-destructive.mw-ui-quiet:active, .mw-ui-button.mw-ui-destructive.mw-ui-quiet.mw-ui-checked { + color: #b32424 + } + + .mw-ui-button.mw-ui-destructive.mw-ui-quiet:focus { + background-color: transparent; + color: #dd3333 + } + + .mw-ui-button.mw-ui-destructive.mw-ui-quiet:disabled { + color: #c8ccd1 + } + + .mw-ui-button.mw-ui-quiet { + background: transparent; + border: 0; + text-shadow: none; + color: #222222 + } + + .mw-ui-button.mw-ui-quiet:hover { + background-color: transparent; + color: #444444 + } + + .mw-ui-button.mw-ui-quiet:active, .mw-ui-button.mw-ui-quiet.mw-ui-checked { + color: #000000 + } + + .mw-ui-button.mw-ui-quiet:focus { + background-color: transparent; + color: #222222 + } + + .mw-ui-button.mw-ui-quiet:disabled { + color: #c8ccd1 + } + + .mw-ui-button.mw-ui-quiet:hover, .mw-ui-button.mw-ui-quiet:focus { + box-shadow: none + } + + .mw-ui-button.mw-ui-quiet:active, .mw-ui-button.mw-ui-quiet:disabled { + background: transparent + } + +input.mw-ui-button::-moz-focus-inner, button.mw-ui-button::-moz-focus-inner { + margin-top: -1px; + margin-bottom: -1px +} + +a.mw-ui-button { + text-decoration: none +} + + a.mw-ui-button:hover, a.mw-ui-button:focus { + text-decoration: none + } + +.mw-ui-button-group > * { + min-width: 48px; + border-radius: 0; + float: left +} + + .mw-ui-button-group > *:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px + } + + .mw-ui-button-group > *:not( :first-child ) { + border-left: 0 + } + + .mw-ui-button-group > *:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px + } + +.mw-ui-button-group .is-on .button { + cursor: default +} + +.mw-ui-icon { + position: relative; + line-height: 1.5em; + min-height: 1.5em; + min-width: 1.5em +} + + .mw-ui-icon.mw-ui-icon-element { + text-indent: -999px; + overflow: hidden; + width: 3.5em; + min-width: 3.5em; + max-width: 3.5em + } + + .mw-ui-icon.mw-ui-icon-element:before { + left: 0; + right: 0; + position: absolute; + margin: 0 1em + } + + .mw-ui-icon.mw-ui-icon-before:before, .mw-ui-icon.mw-ui-icon-element:before { + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: 100% auto; + float: left; + display: block; + min-height: 1.5em; + content: '' + } + + .mw-ui-icon.mw-ui-icon-before:before { + position: relative; + width: 1.5em; + margin-right: 1em + } + + .mw-ui-icon.mw-ui-icon-small:before { + background-size: 66.67% auto + } + +table, caption, tbody, tfoot, thead, tr, th, td { + font-size: 100% +} + +caption { + font-weight: bold +} + +button { + border: 0; + background-color: transparent +} + +body { + line-height: 1; + -webkit-tap-highlight-color: transparent +} + +input { + line-height: normal +} + +table { + border-collapse: collapse +} + +html, body { + height: 100% +} + +body { + background-color: #eaecf0 +} + +#content { + border-top: solid 1px transparent; + background-color: #ffffff; + padding-bottom: 32px +} + +.header-container { + border-bottom: solid 1px #dddddd +} + + .header-container.header-chrome { + background-color: #eaecf0; + border: 0; + box-shadow: inset 0 -1px 3px rgba(0,0,0,0.08) + } + +#searchIcon input { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + color: transparent +} + + #searchIcon input:focus { + outline: none + } + +.last-modified-bar { + background-color: transparent; + display: block; + color: #54595d; + transition: background-color 0.2s ease,color 0.2s ease +} + + .last-modified-bar a, .last-modified-bar a:visited { + color: #666666 + } + + .last-modified-bar a:nth-child( 2 ), .last-modified-bar a:visited:nth-child( 2 ) { + font-weight: bold + } + + .last-modified-bar #mw-mf-last-modified { + padding: 5px 16px; + background-color: #eaecf0 + } + + .last-modified-bar.active { + color: #fff + } + + .last-modified-bar.active #mw-mf-last-modified { + background-color: #00af89 + } + + .last-modified-bar.active a { + color: #fff + } + +.header { + display: table; + width: 100%; + border-spacing: 0; + border-collapse: collapse; + height: 3.35em; + white-space: nowrap; + border-top: 1px solid #c8ccd1; + margin-top: -1px +} + + .header > div { + width: 3.35em; + position: relative; + vertical-align: middle; + display: table-cell + } + + .header > div a { + display: block + } + + .header .branding-box { + width: auto + } + + .header .branding-box h1 { + margin-left: 5px; + font-size: 1em + } + + .header .branding-box h1 span { + line-height: 1; + font-size: inherit + } + + .header .branding-box h1 img { + vertical-align: middle + } + + .header .branding-box h1 > * { + float: left + } + + .header .branding-box h1 sup { + color: #54595d; + display: none + } + +.beta .header .branding-box h1 sup { + display: initial +} + +.header > .header-title { + vertical-align: middle +} + +.header .header-action > * { + min-height: 3.35em +} + +.header > form, .overlay-header .overlay-title { + padding: 0.15em 0 +} + + .header > form:last-child, .overlay-header .overlay-title:last-child { + padding-right: 1em + } + +@media all and (max-width:280px) { + .header .search { + border: 1px solid #c8ccd1; + padding: 0.5em 0.1em; + background: none + } +} + +.search-box, .header .search-box { + display: none; + width: auto +} + +.search-box { + -webkit-tap-highlight-color: rgba(255,255,255,0) +} + + .search-box .search { + background-image: url(/w/extensions/MobileFrontend/resources/skins.minerva.base.styles/magnifying-glass.png?0d442); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23777%22%20d%3D%22M5.9%2015.2c1.2%201.2%202.7%201.8%204.4%201.8%201.5%200%202.9-.5%204-1.4l4.3%203.9s1-.3%201.3-1.4l-4.3-3.9c1.6-2.4%201.3-5.7-.8-7.8-1.2-1.2-2.7-1.8-4.4-1.8-1.7-.1-3.3.6-4.4%201.8-2.5%202.4-2.5%206.4-.1%208.8zM7%207.7s.1-.1.2-.1c.9-.9%202-1.3%203.2-1.3%201.2%200%202.4.5%203.2%201.3%201.8%201.8%201.8%204.7%200%206.4-.9.9-2%201.3-3.2%201.3-1.2%200-2.4-.5-3.2-1.3-1.8-1.7-1.8-4.5-.2-6.3z%22%2F%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/extensions/MobileFrontend/resources/skins.minerva.base.styles/magnifying-glass.png?0d442); + outline: 0; + width: 100%; + background-color: #fff !important; + -webkit-appearance: none; + padding: 0.5em 0 0.5em 32px; + background-position: left 6px center; + background-repeat: no-repeat; + -webkit-background-size: 20px 20px; + background-size: 20px 20px; + border-radius: 2px; + box-shadow: 0 1px 1px rgba(0,0,0,0.05); + margin-top: 0 + } + +input.search::-webkit-search-decoration, input.search::-webkit-search-cancel-button, input.search::-webkit-search-results-button, input.search::-webkit-search-results-decoration { + display: none +} + +.content h1 .edit-page { + font-size: 0.58823529em +} + +/*.content h2 { + clear: both +}*/ + +.content h2 .edit-page { + font-size: 0.66666667em +} + +.content h3 .edit-page { + font-size: 0.83333333em +} + +.content .edit-page { + display: inline-block; + visibility: hidden +} + +.content .open-block .edit-page { + visibility: visible +} + +.content .section-heading { + /* width: 100%; */ + border-bottom: solid 1px #eaecf0; + margin-bottom: 0.5em; + margin-top: 0.5em; +} + + .content .section-heading .indicator { + font-size: 0.4em + } + +.content .section-heading, .content .in-block { + display: table +} + + .content .section-heading .mw-headline, .content .in-block .mw-headline { + width: 100% + } + + .content .section-heading > span, .content .in-block > span { + display: table-cell; + vertical-align: middle + } + +.client-nojs .section-heading .indicator { + display: none; +} + +#page-secondary-actions { + clear: both +} + + #page-secondary-actions a { + margin: 10px 2px 2px 0 + } + + #page-secondary-actions .language-selector { + margin-top: 1em + } + +.truncated-text { + white-space: nowrap; + overflow: hidden; + -webkit-text-overflow: ellipsis; + text-overflow: ellipsis +} + + .truncated-text.multi-line { + white-space: normal; + display: -webkit-box; + -webkit-box-orient: vertical + } + + .truncated-text.two-line { + -webkit-line-clamp: 2; + max-height: 2.6em + } + +.overlay #secondary-button.user-button, .header #secondary-button.user-button, .overlay .user-button, .header .user-button { + position: relative +} + + .overlay #secondary-button.user-button .label, .header #secondary-button.user-button .label, .overlay .user-button .label, .header .user-button .label { + visibility: hidden + } + + .overlay #secondary-button.user-button.loading span, .header #secondary-button.user-button.loading span, .overlay .user-button.loading span, .header .user-button.loading span { + display: none + } + +.notification-count { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + height: 24px; + background: #eaecf0; + color: #54595d; + cursor: pointer +} + + .notification-count .circle { + border-radius: 50%; + border: 2px solid #54595d; + margin: auto; + height: 22px; + width: 22px; + display: block; + text-align: center; + display: -webkit-box; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center + } + + .notification-count .circle span { + font-weight: bold; + font-size: 13px; + line-height: 1; + letter-spacing: -0.5px + } + + .notification-count.notification-unseen { + color: #ffffff + } + + .notification-count.notification-unseen .circle { + background: #dd3333; + border-color: #dd3333 + } + + .notification-count.zero { + display: none + } + + .notification-count.max { + right: 0.2em; + width: 2em; + height: 2em; + line-height: 2em; + font-size: 0.7em + } + +.mw-ui-button-group { + text-align: center +} + + .mw-ui-button-group * { + float: none !important + } + + .mw-ui-button-group .mw-ui-block { + width: auto + } + +.transparent-shield, .navigation-drawer { + position: absolute; + z-index: 0; + visibility: hidden +} + +.content .nojs-edit { + display: inline-block; + visibility: visible; + float: right +} + +.client-nojs #ca-watch, .client-nojs #ca-edit, #ca-talk.selected { + display: none !important +} + +#page-actions .nojs-edit { + display: inline-block +} + +.heading-holder { + padding: 20px 0 3.6em; + overflow: hidden; + position: relative +} + + .heading-holder h1 { + padding-right: 16px + } + + .heading-holder .tagline { + color: #54595d; + font-size: 0.85em; + margin: 4px 0 0 + } + + .heading-holder .tagline:first-letter { + text-transform: capitalize + } + +#section_0 { + padding-top: 0; + padding-bottom: 0; + border-bottom: 0 +} + +#page-actions { + font-size: 1.1em; + float: none; + border: 0; + overflow: hidden; + position: absolute; + bottom: 0; + width: 100%; + border-top: 1px solid #eaecf0; + border-bottom: 1px solid #c8ccd1; + padding: 0.5em 0 +} + + #page-actions li { + display: inline-block; + position: relative; + cursor: pointer; + margin-right: 0; + margin-bottom: 0; + float: right + } + + #page-actions li input { + opacity: 0 + } + + #page-actions li input, #page-actions li a, #page-actions li span, #page-actions li button { + position: absolute; + display: block; + width: 100%; + height: 100%; + margin: 0 0 8px + } + + #page-actions li button { + text-indent: inherit; + outline: none + } + + #page-actions li:first-child { + margin-top: 0 + } + + #page-actions .language-selector { + float: left; + margin-left: -1em + } + + #page-actions .language-selector.disabled { + cursor: default; + opacity: 0.25 + } + + #page-actions #ca-edit { + margin-right: -1em + } + +@media all and (max-width:280px) { + .client-nojs #page-actions { + display: none + } + + .client-nojs #section_0 { + border: 0 + } +} + +@media all and (min-width:720px) { + #page-actions { + position: initial; + float: right; + width: auto; + border: 0; + margin: 0 0 1em 1em + } + + #page-actions .language-selector { + float: inherit + } +} + +.cloaked-element { + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +.view-border-box *, .view-border-box { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +.mw-mf-image-replacement { + font-style: italic; + color: #72777d; + text-decoration: underline; + border: dotted 1px #c8ccd1; + padding: 10px; + display: inline-block +} + +textarea { + padding: 5px 0 5px 5px; + width: 100%; + resize: none +} + +.toc-mobile, .client-nojs .toc-mobile, .client-js .no-js-only, .client-js .mw-redirectedfrom, .printfooter, .jsonly { + display: none +} + +.no-js-only, .client-js .jsonly { + display: inherit +} + +.position-fixed { + position: fixed !important +} + +.touch-events :focus { + outline: 0 +} + +.hidden { + display: none !important +} + +#mw-mf-page-center { + background-color: #ffffff +} + +span.mw-ui-icon { + display: inline-block +} + +.open-block .mw-ui-icon-arrow:before { + -webkit-transform: scaleY(-1); + transform: scaleY(-1) +} + +.lazy-image-placeholder { + background-color: #eaecf0; + display: block +} + +li .lazy-image-placeholder, span .lazy-image-placeholder { + display: inline +} + +.client-nojs .lazy-image-placeholder { + display: none +} + +.lazy-image-placeholder img { + opacity: 0 +} + +.lazy-image-placeholder.loaded { + -webkit-animation: fadeOutContainer 0.3s ease-in; + -moz-animation: fadeOutContainer 0.3s ease-in; + -o-animation: fadeOutContainer 0.3s ease-in; + animation: fadeOutContainer 0.3s ease-in; + background-color: transparent; + border: 0 +} + + .lazy-image-placeholder.loaded img { + -webkit-animation: fadeInImage 0.3s ease-in; + -moz-animation: fadeInImage 0.3s ease-in; + -o-animation: fadeInImage 0.3s ease-in; + animation: fadeInImage 0.3s ease-in; + opacity: 1 + } + +@-webkit-keyframes fadeInImage { + from { + opacity: 0 + } + + to { + opacity: 1 + } +} + +@keyframes fadeInImage { + from { + opacity: 0 + } + + to { + opacity: 1 + } +} + +@-webkit-keyframes fadeOutContainer { + from { + background-color: #eaecf0 + } + + to { + background-color: transparent + } +} + +@keyframes fadeOutContainer { + from { + background-color: #eaecf0 + } + + to { + background-color: transparent + } +} + +footer { + border-top: solid 1px #c8ccd1; + overflow: auto; + padding-bottom: 6px +} + + footer .last-modified-bar { + border-bottom: solid 1px #c8ccd1; + background-color: #eaecf0; + display: block; + color: #666666; + line-height: 1.5em; + transition: background-color 0.2s ease,color 0.2s ease + } + + footer .last-modified-bar.active { + background-color: #00af89; + color: #fff + } + + footer .last-modifier-tagline { + display: block; + width: 100%; + font-size: 0.9em; + padding: 7px 2em 7px 0 + } + + footer .indicator { + position: absolute; + right: -1em + } + + footer .indicator:before { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg) + } + +.client-nojs footer .indicator { + display: none +} + +footer > .post-content { + overflow: auto; + margin-top: 42px +} + + footer > .post-content > * { + margin-bottom: 9px + } + + footer > .post-content > h2 { + border-bottom: solid 1px #c8ccd1; + padding-bottom: 10px; + margin-top: 42px; + font-size: 1em; + font-weight: bold + } + + footer > .post-content > h2:first-child { + margin-top: 0 + } + + footer > .post-content .hlist, footer > .post-content .license { + font-size: 0.875em + } + +.rtl footer .indicator:before { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +@media (min-width:720px) { + footer .last-modified-bar { + padding-left: 0; + padding-right: 0; + font-size: 1em + } +} + +@media print { + .noprint, .banner-container, .header, .pre-content, .post-content { + display: none + } + + h1, h2, h3, h4, h5, h6 { + page-break-after: avoid + } + + table, figure, img, .lazy-image-placeholder { + page-break-inside: avoid + } + + img { + max-width: 100% + } +} + +html { + -webkit-text-size-adjust: none; + font-size: 100% +} + +body { + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + line-height: 1.4; + color: #222222; + background: #fff; +} + +.pre-content, .content, .post-content { + margin: 0 16px +} + +.content { + line-height: 1.65; + word-wrap: break-word +} + +@media all and (max-width:280px) { + body { + font-size: 0.8em + } + + .content { + margin: 0 12px + } +} + +.client-js .collapsible-block { + display: none +} + + .client-js .collapsible-block.open-block { + display: block + } + +.nomobile { + display: none !important +} + +@media all and (min-width:720px) { + .client-js .collapsible-block, .client-js + .collapsible-block { + display: block + } +} + +.content .thumb { + margin: 0.6em 0 +} + + .content .thumb .thumbinner { + margin: 0 auto; + max-width: 100% + } + +.content .thumbcaption { + margin: 0.5em 0 0; + font-size: 0.8em; + line-height: 1.5; + padding: 0 !important; + color: #54595d; + width: auto !important +} + +.content .thumbborder { + border: 1px solid #c8ccd1 +} + +.content .magnify { + display: none +} + +.content img { + vertical-align: middle +} + +.content .floatright { + clear: right; + float: right; + margin: 0 0 0.6em 0.6em +} + +.content .floatleft { + clear: left; + float: left; + margin: 0 0.6em 0.6em 0 +} + +.content a > img { + max-width: 100% !important; + height: auto !important +} + +.content .noresize { + max-width: 100%; + overflow-x: auto +} + + .content .noresize a > img { + max-width: none !important + } + +h1 { + font-size: 1.7em +} + +h2 { + font-size: 1.5em +} + +h3 { + font-size: 1.2em; + font-weight: bold +} + +h4 { + font-weight: bold +} + +.pre-content h1, .content h1, .content h2, h3, h4, h5, h6 { + font-family: 'Linux Libertine','Georgia','Times',serif; + line-height: 1.3; + word-wrap: break-word; + word-break: break-word +} + +blockquote { + font-family: 'Linux Libertine','Georgia','Times',serif; + font-size: 1.1em; + quotes: '\201C' '\201D'; + padding: 1em 25px 1em 30px; + position: relative; + overflow: hidden +} + + blockquote:before { + content: open-quote; + font-size: 3em; + position: absolute; + left: 0; + top: 0 + } + + blockquote:after { + content: close-quote; + font-size: 3em; + line-height: 1; + position: absolute; + right: 0; + bottom: 0 + } + +.hlist > ul li, ul.hlist li { + display: inline-block; + margin-right: 8px +} + +.content { +} + + .content ul { + list-style: square inside + } + + .content ul > li > ul { + list-style-type: disc + } + + .content ul > li > ul > li > ul { + list-style-type: circle + } + + .content ol { + list-style: decimal inside + } + + .content ol ol, .content ul ol, .content ol ul, .content ul ul { + margin-left: 1em + } + + .content ol li, .content ul li { + margin-bottom: 10px + } + + .content ol li:last-child, .content ul li:last-child { + margin-bottom: inherit + } + +dl { + margin-left: 1em +} + + dl dt { + font-weight: bold + } + +body.mw-hide-empty-elt .mw-empty-elt { + display: none +} + +.hlist-separated li:after { + content: '¬タᄁ'; + padding-left: 8px; + color: #002bb8; + font-size: 16px; + line-height: 1 +} + +.hlist-separated :last-child:after { + content: '' +} + +.return-link, #mw-mf-last-modified { + display: block; + font-size: 0.9em; + margin-top: 1.5em +} + +.plainlinks a { + background: none !important; + padding: 0 !important +} + +.content p { + margin: 0.5em 0 1em 0 +} + +strong, b { + font-weight: bold +} + +em, i { + font-style: italic +} + +code, pre { + font-family: monospace; + border: solid 1px #c8ccd1; + white-space: pre-wrap +} + +code { + padding: 0.2em 0.5em +} + +pre { + padding: 1em +} + +sup { + vertical-align: super +} + +sub { + vertical-align: sub +} + +sub, sup { + font-size: 0.75em; + line-height: 1 +} + +.content table { + margin: 1em 0; + overflow: auto; + overflow-y: hidden; + overflow-x: auto; + display: block; + width: 100% !important +} + + .content table caption { + display: block; + text-align: left + } + + .content table.wikitable { + border: 1px solid #c8ccd1 + } + + .content table.wikitable > tr > th, .content table.wikitable > tr > td, .content table.wikitable > * > tr > th, .content table.wikitable > * > tr > td { + border: 1px solid #c8ccd1; + padding: 0.2em + } + + .content table.wikitable > tr > th, .content table.wikitable > * > tr > th { + background-color: #eaecf0 + } + +.collapsible td { + width: auto !important +} + +.content .tmbox, .content .ambox, .content #coordinates, .content .navbox, .content .vertical-navbox, .content .topicon, .content .metadata { + display: none !important +} + +.content table { + float: none !important; + margin-left: 0 !important; + margin-right: 0 !important +} + + .content table.infobox { + font-size: 90%; + position: relative; + border: 0; + margin-bottom: 2em; + text-align: left; + background-color: #f8f9fa + } + + .content table.infobox th, .content table.infobox td { + vertical-align: top; + border: 0; + border-bottom: 1px solid #dddddd; + padding: 0.2em + } + + .content table.infobox tr:last-child th, .content table.infobox tr:last-child td { + border: 0 + } + +#filetoc, .mw-editsection { + display: none +} + +.skin-minerva .portal-column-left-wide, .skin-minerva .portal-column-left, .skin-minerva .portal-column-right, .skin-minerva .portal-column-right-narrow { + float: none; + width: 100% +} + +.references-column-count, .column-count { + -moz-column-width: 35em; + -webkit-column-width: 35em; + column-width: 35em +} + +.references li:target { + background-color: #def +} + +.hatnote, .dablink, .rellink { + padding: 0 0 0.6em 0; + color: #72777d; + font-size: 0.8em; + font-style: italic +} + +.quotebox { + margin: 0 0 0.8em !important; + width: auto !important +} + +@media all and (max-width:720px) { + .gallery .gallerybox { + width: 100% !important + } + + .gallery .gallerybox div { + width: 100% !important + } + + .content table.multicol > tr > td, .content table.multicol > tbody > tr > td { + display: block !important; + width: auto !important + } + + .content .thumb .thumbinner { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + justify-content: center; + flex-wrap: wrap; + align-content: flex-start + } + + .content .thumb .thumbinner > .thumbcaption { + -webkit-box-pack: justify; + -moz-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-flex: 1; + -moz-box-flex: 1; + width: 100%; + -ms-flex: 1 0 100%; + flex: 1 0 100%; + -webkit-box-ordinal-group: 1; + -moz-box-ordinal-group: 1; + -ms-flex-order: 1; + order: 1; + display: block + } +} + +.mw-ui-icon-notifications:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=notifications&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Ctitle%3E%0A%20%20%20%20%20%20%20%20icon-export%0A%20%20%20%20%3C%2Ftitle%3E%0A%20%20%20%20%3Cdefs%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M9.643%2021.364c1.234%200%202.235-.956%202.235-2.136h-4.47c0%201.18%201%202.136%202.234%202.136z%22%20id%3D%22path-1%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cmask%20id%3D%22mask-2%22%20x%3D%220%22%20y%3D%220%22%20width%3D%224.471%22%20height%3D%222.136%22%20fill%3D%22%23fff%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20xlink%3Ahref%3D%22%23path-1%22%2F%3E%0A%20%20%20%20%20%20%20%20%3C%2Fmask%3E%0A%20%20%20%20%3C%2Fdefs%3E%0A%20%20%20%20%3Cg%20id%3D%22Page-1%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%20%20%20%20%3Cg%20id%3D%22icon-export%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22notificationIcon%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22Bell%22%20transform%3D%22translate%282%201%29%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cuse%20id%3D%22Page-1-Copy%22%20stroke%3D%22%2354595D%22%20mask%3D%22url%28%23mask-2%29%22%20stroke-width%3D%224%22%20xlink%3Ahref%3D%22%23path-1%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M16.893%209.08v3.998l1.769%203.603v1.096H.623V16.68l1.769-3.603V9.08c0-2.894%201.824-5.41%204.477-6.47C7.13%201.327%208.285.383%209.643.383c1.357%200%202.511.944%202.773%202.227%202.653%201.06%204.477%203.576%204.477%206.47zM10.92%203.974H8.366c-2.438.553-4.255%202.64-4.255%205.14v4.474l-1.702%202.44h14.467l-1.702-2.44V9.114c.024-4.076-3.616-5.09-4.255-5.14z%22%20id%3D%22Combined-Shape%22%20fill%3D%22%2354595D%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=notifications&format=rasterized&lang=fr&skin=minerva) +} + +.mw-ui-icon-mainmenu:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=mainmenu&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ctitle%3E%0A%20%20%20%20%20%20%20%20icon-export%0A%20%20%20%20%3C%2Ftitle%3E%0A%20%20%20%20%3Cg%20id%3D%22Page-1%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%20%20%20%20%3Cg%20id%3D%22icon-export%22%20fill%3D%22%2354595D%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22menuIcon%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M21%2019H2v-2h19v2zm0-6H2v-2h19v2zm0-6H2V5h19v2z%22%20id%3D%22Combined-Shape%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=mainmenu&format=rasterized&lang=fr&skin=minerva) +} + +.mw-ui-icon-edit:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=edit&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%20-410%202048%202048%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23777%22%3E%0A%20%20%20%20%3Cg%20id%3D%22g4%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M1670.264-159.32q-108.757%200-108.757%20124.825l1.236%20109.993h216.278l-1.233-109.993q1.236-124.824-107.52-124.824zm0-144.596q102.577%200%20171.787%2077.86%2069.21%2077.86%2069.21%20190.324v111.23h108.76v484.46h-699.505V75.5h109.993V-36.968q0-112.464%2069.21-189.09%2069.208-76.623%20170.55-77.86zm-469.632%20984.992h170.55l-795.9%20716.807-510.417%2055.614L173.622%20955.44l1027.01-918.254v164.37l-892.3%20805.79q32.132%2022.245%2096.398%2086.51l795.902-719.277v306.493z%22%20id%3D%22path6%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=edit&format=rasterized&lang=fr&skin=minerva) +} + +.mw-ui-icon-edit-enabled:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=edit-enabled&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%20-410%202048%202048%22%20width%3D%2224%22%20height%3D%2224%22%3E%0A%20%20%20%20%3Cg%20id%3D%22g4%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M307.05%201073.838q32.507%2022.505%2097.522%2087.52L1659.846%2026.108q-33.757-60.014-101.272-82.52zm-135.03-51.26L1563.576-225.197q156.284%2026.256%20276.31%20155.034Q1959.91%2058.617%201968.663%20217.4L575.858%201470.177%2060.746%201525.19z%22%20id%3D%22path6%22%20fill%3D%22%23777%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=edit-enabled&format=rasterized&lang=fr&skin=minerva) +} + +.mw-ui-icon-magnifying-glass:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=magnifying-glass&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ctitle%3E%0A%20%20%20%20%20%20%20%20icon-export%0A%20%20%20%20%3C%2Ftitle%3E%0A%20%20%20%20%3Cg%20id%3D%22Page-1%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%20%20%20%20%3Cg%20id%3D%22icon-export%22%20fill%3D%22%2354595D%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cg%20id%3D%22SearchIcon%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M16.474%2015.441c1.147-1.376%201.835-3.212%201.835-5.162a7.98%207.98%200%200%200-8.03-8.029%207.98%207.98%200%200%200-8.029%208.03%207.98%207.98%200%200%200%208.03%208.029c1.72%200%203.211-.459%204.473-1.377l4.473%204.474c.46.459%201.262.459%201.836%200l.688-.688-5.276-5.277zM4.544%2010.28c0-3.211%202.524-5.735%205.735-5.735%203.212%200%205.736%202.524%205.736%205.735%200%203.212-2.524%205.736-5.736%205.736-3.211%200-5.735-2.638-5.735-5.736z%22%20id%3D%22Page-1%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=magnifying-glass&format=rasterized&lang=fr&skin=minerva) +} + +.mw-ui-icon-language-switcher:before { + background-image: url(/w/load.php?modules=skins.minerva.icons.images&image=language-switcher&format=rasterized&lang=fr&skin=minerva); + background-image: linear-gradient(transparent,transparent),url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2221%22%20viewBox%3D%220%200%2028%2021%22%3E%0A%20%20%20%20%3Ctitle%3E%0A%20%20%20%20%20%20%20%20uniE021%20-%20translation%0A%20%20%20%20%3C%2Ftitle%3E%0A%20%20%20%20%3Cg%20id%3D%22Page-1%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%20%20%20%20%3Cg%20id%3D%22uniE021---translation%22%20fill%3D%22%23777%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M23.89%2016l1.72%205h2.37L22.44%203.94h-3.3L13.34%2021h2.37l1.59-5h6.59zm-3.3-10.09l2.77%208.13h-5.54l2.77-8.13z%22%20id%3D%22Shape%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M8.2%202.63h1.18L8.07%200H5.43l.66%201.31A2.34%202.34%200%200%200%208.2%202.63z%22%20id%3D%22Shape%22%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M16.51%204H.15v2h2.51c.79%202.27%201.98%204.24%203.69%206.08-1.85%201.44-4.09%202.23-6.33%203.01l.66%201.97c2.64-.79%205.01-1.83%207.25-3.54%201.19.92%202.77%201.84%204.62%202.36l.66-1.97c-1.45-.39-2.64-1.05-3.69-1.83%202.5-2.5%203.29-4.99%203.42-5.25l.27-.83h2.64l.66-2zm-8.58%206.67C6.61%209.41%205.43%207.77%204.9%206h6.2c-.66%201.77-1.85%203.28-3.17%204.67-2.11-2.15%200%200%200%200z%22%20id%3D%22Shape%22%2F%3E%0A%20%20%20%20%20%20%20%20%3C%2Fg%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A); + background-image: -o-linear-gradient(transparent,transparent),url(/w/load.php?modules=skins.minerva.icons.images&image=language-switcher&format=rasterized&lang=fr&skin=minerva) +} + +@media all and (min-width:720px) { + .client-js #searchIcon { + display: none + } + + .header .branding-box { + width: 11.0625em + } + + .header .search-box { + display: table-cell; + width: auto + } + + .header .search-box .search { + width: 23.4375em + } + + .toc-mobile { + display: block; + visibility: visible; + position: relative; + font-size: 1.3em; + float: left; + clear: left; + margin: 1em 0; + border: solid 1px transparent + } + + .toc-mobile > h2 { + visibility: hidden; + font-family: 'Helvetica Neue','Helvetica','Nimbus Sans L','Arial','Liberation Sans',sans-serif; + font-size: 0.8em; + font-weight: bold; + border-bottom: 0; + padding: 0.7em 0 + } + + .content_block { + width: auto; + clear: none + } + + .heading-holder { + padding: 20px 0; + position: relative + } + + .heading-holder #section_0 { + border-bottom: 0; + padding: 0 0 7px 0; + font-size: 2.6525em + } + + #page-actions { + padding: 18px 0 0 0 + } + + #page-actions li { + display: inline-block + } + + #page-actions li:first-child { + margin-top: 0 + } + + .pre-content, .content, .post-content { + max-width: 55.8em; + margin: 0 3.35em + } + + .content .thumb.tleft { + float: left; + clear: left; + margin-right: 1.4em + } + + .content .thumb.tright { + float: right; + clear: right; + margin-left: 1.4em + } + + .content blockquote { + padding-right: 35px; + padding-left: 40px + } + + .content table { + display: table; + width: auto !important + } + + .content table caption { + display: flex; + } + + .content table tbody { + display: table-row-group + } + + #mw-mf-last-modified { + padding: 5px 0 + } + + .last-modified-bar { + background-color: transparent; + padding-left: 0; + padding-right: 0; + font-size: 1em + } +} + +@media all and (min-width:62.5em) { + #mw-mf-page-center .mw-mf-banner, .banner-container, .header, .page-header-bar, .content-header, .overlay-header, .content, .overlay-content, .content-unstyled, .pre-content, .post-content, #mw-mf-page-center .pointer-overlay { + margin-left: auto; + margin-right: auto; + max-width: 55.8em + } + + .header { + max-width: 57.8em + } +} + +@media all and (min-width:720px) { + table.infobox, table.sistersitebox { + margin: 0.5em 0 1em 35px !important; + max-width: 320px; + width: auto !important; + float: right !important; + clear: right !important + } + + #mw-mf-page-center .mw-mf-banner { + background-clip: content-box !important + } +} + +/* starting inserted + + + + + + + + + + + + + + +
+
+
+ +
+ +
+

+ Main Page +

+
+
+
+
+

Welcome to Wikivoyage

+

The free worldwide travel guide that you can edit.
The official, non-commercial sister site + of Wikipedia for sightseeing, activities, cuisine and accommodation around the + world.

+
+ +
+
+

Wikivoyage LogoWelcome to Wikivoyage + The free worldwide travel guide that you can edit. +

+
+
+
AntarcticaOceaniaAsiaAfricaEuropeNorth AmericaSouth AmericaWikivoyage World Map
+
+
+

Europe + Africa
Asia + Oceania
North America + South + America
Antarctica + Other + destinations
The official, non-commercial sister site of Wikipedia for sightseeing, activities, cuisine and + accommodation around the world; with 30,110 articles in English written by travellers like + you. +

+

Read about a location near you. +

+

Got a specific question?
Ask it at the tourist office

+

Destinations + Itineraries
Phrasebooks + Travel + topics

+
+
+
+
+
+
+ + +
+
+
+ + +
+
+

Discover

+
Newport RI Cliff Walk
+
    +
  • Every day at midday a trumpeter dressed in historic costume walks up 120 stairs and + plays a tune from the top of the Fire Tower in Grodno.
  • +
  • The cliff walk (pictured) in Newport (Rhode Island) offers some of the most beautiful + views in New England, and wildlife can be seen everywhere throughout the walk.
  • +
  • The SATS General Botha site + is considered one of the more interesting wreck dives of False Bay, and the depth appeals + to the more adventurous divers.
  • +
+
+
    +
  • New to Wikivoyage and have a question? Post it here!
  • +
  • How to edit a page
  • +
  • Tips on contributing
  • +
  • Community portal
  • +
  • Policies
  • +
  • Expeditions
  • +
  • Requested articles
  • +
  • Travellers' pub
  • +
  • Collaboration of the month: Improving the article for Rio de Janeiro by moving listings to district articles
  • +
+
+
+ + +
+
+
+
Wikimedia-logo.svg
+
+
+
Wikivoyage is part of the Wikimedia Foundation family
+

+ Meta Wikimedia
Meta-Wiki
Coordination
+ Wikipedia
Wikipedia
Encyclopedia
+ Wiktionary
Wiktionary
Dictionary
+ Wikiquote
Wikiquote
Quotations
+ Wikisource
Wikisource
Documents
+ Wikibooks
Wikibooks
Textbooks
+ Wikiversity
Wikiversity
Learning tools
+ Wikinews
Wikinews
News
+ Wikimedia Commons
Commons
Media
+ Wikispecies
Wikispecies
Species
+ Wikidata
Wikidata
Structured data
+ MediaWiki
MediaWiki
Wiki + software
+
+

+
+ + +
+ +
+
+ This article is issued from + + Wikivoyage. + The text is licensed under Creative + Commons - Attribution - Sharealike. + Additional terms may apply for the media files. +
+
+ +
+
+
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/dist/www/A/Wikipedia%3AWikiProject_Medicine/Open_Textbook_of_Medicine2 b/dist/www/A/Wikipedia%3AWikiProject_Medicine/Open_Textbook_of_Medicine2 new file mode 100644 index 000000000..4ff3838b4 --- /dev/null +++ b/dist/www/A/Wikipedia%3AWikiProject_Medicine/Open_Textbook_of_Medicine2 @@ -0,0 +1,425 @@ + + + + + + Wikipedia:WikiProject Medicine/Open Textbook of Medicine + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+

+ Open Textbook of Medicine +

+
+

Welcome to the Offline Medical Encyclopedia by Wikipedia’s WikiProject Medicine. + Please bear in mind that this is volunteer generated content. While we try our best to + make it as accurate as possible, it is not perfect. Thus we request that you use common + sense when consulting this app.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ This article is issued from + + Wikipedia + . + The text is licensed under + Creative + Commons - Attribution - Sharealike + . + Additional terms may apply for the media files. +
+ +

 

 

 

+
+ +
+
+
+
+
+ + + + +

 

 

 

 

+ + + + \ No newline at end of file diff --git a/dist/www/C/static/css/sotoki.css b/dist/www/C/static/css/sotoki.css new file mode 100644 index 000000000..98ac17c46 --- /dev/null +++ b/dist/www/C/static/css/sotoki.css @@ -0,0 +1,241 @@ +/* we don't include SE's topbar */ +body { + padding-top: 0; +} +/* outbound array icon for all external links */ +a.external-link { + /* overriden in template to account for relative path */ + background-image: url('../../static/img/external-link-ltr-icon.svg'); + background-position: center right; + background-repeat: no-repeat; + padding-right: 13px; +} +/* kiwix-serve hack so we don't break the magnifier icon */ +.kiwix_searchform input.ui-autocomplete-input { + margin-top: 0; + margin-bottom: 0; +} +.kiwix_searchform { + font-size: 14px; +} +/* Small width screen adaptations (mobile) */ +.mobile-only { + display: none; +} +@media screen and (max-width: 640px) { + .mobile-only { + display: block; + } + .desktop-only { + display: none; + } + .post-layout--left, .post-layout--left.votecell { + padding-right: 0; + } + html.html__responsive:not(.html__unpinned-leftnav) #content { + padding-left: 8px; + padding-right: 8px; + } + html.html__responsive:not(.html__unpinned-leftnav) .question-summary { + padding-left: 0 !important; + padding-right: 0 !important; + } + body.tagged-questions-page #questions.pl24 .mln24 { + margin-left: 0 !important; + } + /* User profile: display all blocks as rows */ + body.user-page .profile-box { + display: block !important; + } + body.user-page .reputation-box, .metadata-box { + margin: auto; + flex-shrink: unset + } + body.user-page .metadata-box { + max-width: unset; + } + body.user-page .profile-user--name { + text-align: center; + } + body.user-page .flex-spacer { + display: none; + flex-grow: unset; + } +} +/* Top bar design copied from SE's mobile.css https://cdn.sstatic.net/Sites/alcoholmeta/mobile.css */ +.topbar{ + background:#0c0d0e; + height:44px +} +.topbar .topbar-icon,.topbar .date-group-toggle,.topbar .icon-help>.triangle{ + background-color:transparent; + background-repeat:no-repeat +} +.topbar .network-items{ + display:-webkit-flex; + display:flex; + -webkit-align-items:stretch; + align-items:stretch; + height:44px +} +.topbar .site-name{ + display:-webkit-flex; + display:flex; + -webkit-align-items:center; + align-items:center; + overflow:hidden +} +.topbar .site-name a{ + color:#fff; + display:block; + text-overflow:ellipsis; + overflow:hidden; + white-space:nowrap; + width:100% +} +.topbar .site-name small{ + color:#9199a1; + font-size:11px; + text-transform:uppercase; + display:block +} +.topbar .-actions{ + display:-webkit-flex; + display:flex; + margin-left:auto +} +.topbar .topbar-icon{ + display:-webkit-flex; + display:flex; + -webkit-align-items:center; + align-items:center; + justify-content:center; + height:44px; + margin-bottom:0; + padding:0 10px; + color:#9199a1 +} +.topbar .topbar-icon-on{ + background-color:#eff0f1 +} +.topbar .icon-inbox .unread-count{ + background-color:#d1383d +} +.topbar .icon-achievements .unread-count{ + background-color:#33A030 +} +.topbar ._danger-indicator:after{ + content:''; + width:10px; + height:10px; + border-radius:50%; + position:absolute; + box-sizing:content-box; + right:2px; + top:10px; + background:#d1383d; + z-index:2; + border:2px solid #0c0d0e; + transition:top cubic-bezier(.165, .84, .44, 1) .15s +} +.topbar ._danger-indicator.topbar-icon-on:after{ + border:2px solid #eff0f1 +} +.topbar .icon-site-switcher-bubble{ + width:46px; + background-position:20px 11px; + background-repeat:no-repeat; + background-size:auto 24px; + background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB3aWR0aD0iMzhweCIgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgMzggNDgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+bG9nbzwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxvZ28iPiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC4wMDAwMDEyLDIxIEwzOC4wMDAwMDEyLDI5IEwtMS4xOTIwOTE3M2UtMDksMjkgTC0xLjE5MjA5MTczZS0wOSwyMSBMMzguMDAwMDAxMiwyMSBaIiBpZD0iU2hhcGUiIGZpbGw9IiMzODYzQTAiPjwvcGF0aD4gICAgICAgICAgICA8cGF0aCBkPSJNMzguMDAwMDAxMiwxMC45OTEgTDM4LjAwMDAwMTIsMTguOTk5OTk5OCBMLTEuMTkyMDkxNzNlLTA5LDE4Ljk5OTk5OTggTC0xLjE5MjA5MTczZS0wOSwxMC45OTEgTDM4LjAwMDAwMTIsMTAuOTkxIFoiIGlkPSJTaGFwZSIgZmlsbD0iIzRDOTdDNiI+PC9wYXRoPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01Ljk5OTk5OTk3LDYuNjc1NzIwNDJlLTA5IEMxLjk5OTk5OTk3LDYuNjc1NzIwNDJlLTA5IC0xLjgxMTk4MTMyZS0wOCwzLjAxNzAwMDAxIC0xLjgxMTk4MTMyZS0wOCw2LjUwMDAwMDAxIEwtMi44NjEwMjMwNmUtMDgsOS4wMDAwMDAwMSBMMzgsOS4wMDAwMDAwMSBMMzgsNi41MDAwMDAwMSBDMzgsMy4wMTYwMDAwMSAzNiw2LjY3NTcyMDQyZS0wOSAzMiw2LjY3NTcyMDQyZS0wOSBMNS45OTk5OTk5Nyw2LjY3NTcyMDQyZS0wOSBaIiBpZD0iU2hhcGUiIGZpbGw9IiM5MEQyRTgiPjwvcGF0aD4gICAgICAgICAgICA8cGF0aCBkPSJNMC4wMDEwMDAwMDA4MywzMy4wNTIgQzAuMDAxMDAwMDAwODMsMzYuNTM2IDIuNjU2LDM5IDYsMzkgTDIxLDM5IEwyMSw0OCBMMzAsMzkgTDMxLjUsMzkgQzM0Ljg0NywzOSAzOCwzNi45ODMgMzgsMzMuNSBMMzgsMzEgTDguMzQ0NjEzODllLTEwLDMxIEwwLjAwMTAwMDAwMDgzLDMzLjA1MiBaIiBpZD0iU2hhcGUiIGZpbGw9IiMyNjQ5ODEiPjwvcGF0aD4gICAgICAgICAgICA8cGF0aCBkPSJNNi41LDM5IEMzLjE1NiwzOSAtMS4xOTIwOTE3NmUtMDksMzYuOTgzIC0xLjE5MjA5MTc2ZS0wOSwzMy41IEwtMS4xOTIwOTE3NmUtMDksMzEgTDE1LDMxIEw3LDM5IEw2LjUsMzkgWiIgaWQ9IlNoYXBlIiBmaWxsPSIjNDM1QjhFIj48L3BhdGg+ICAgICAgICAgICAgPHBhdGggZD0iTTguMzQ0NjQ5NDJlLTEwLDE4Ljk5OTk5OTggTDguMzQ0NjQ5NDJlLTEwLDEwLjk5MSBMMzQuODE0LDEwLjk5MSBMMjcuMDAwMDAwNywxOC45OTk5OTk4IEw4LjM0NDY0OTQyZS0xMCwxOC45OTk5OTk4IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzY3QTNDQyI+PC9wYXRoPiAgICAgICAgICAgIDxwYXRoIGQ9Ik0tMS4xOTIwOTUzMWUtMDksMjkgTC0xLjE5MjA5NTMxZS0wOSwyMSBMMjQuOTk5OTk5MywyMSBMMTYuOTk5OTk5MywyOSBMLTEuMTkyMDk1MzFlLTA5LDI5IFoiIGlkPSJTaGFwZSIgZmlsbD0iIzUzNzJBQSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+'); + position:relative; + transition:background-position .1s ease-in-out; + margin-right:5px +} +.topbar .icon-site-switcher-bubble .icon-hamburger,.topbar .icon-site-switcher-bubble .icon-hamburger:before,.topbar .icon-site-switcher-bubble .icon-hamburger:after{ + position:absolute; + left:0; + top:50%; + margin-top:-1px; + display:inline-block; + width:8px; + height:2px; + background:#6a737c; + border-radius:0 2px 2px 0; + transition:width .1s ease-in-out +} +.topbar .icon-site-switcher-bubble .icon-hamburger:before,.topbar .icon-site-switcher-bubble .icon-hamburger:after{ + content:''; + margin-top:-6px +} +.topbar .icon-site-switcher-bubble .icon-hamburger:after{ + margin-top:4px +} +.topbar .icon-site-switcher-bubble.topbar-icon-on{ + background-position:13px 11px +} +.topbar .icon-site-switcher-bubble.topbar-icon-on .icon-hamburger,.topbar .icon-site-switcher-bubble.topbar-icon-on .icon-hamburger:before,.topbar .icon-site-switcher-bubble.topbar-icon-on .icon-hamburger:after{ + width:0 +} +.topbar .siteSwitcher-dialog,.topbar .inbox-dialog,.topbar .achievements-dialog,.topbar .modInbox-dialog{ + min-width:300px; + width:100% +} +.topbar .login-links-container{ + display:-webkit-flex; + display:flex; + -webkit-align-items:center; + align-items:center +} +.topbar .login-links-container a{ + display:inline-block; + padding:0 10px; + font-size:13px; + color:#fff +} +.topbar .unread-count{ + display:inline-block; + color:#fff; + text-align:center; + text-indent:0; + border-radius:2px; + padding:4px 6px 3px; + font-size:11px; + line-height:1; + position:absolute; + min-width:22px +} +.nav{ + background-color:#242729; + box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1); + width:100%; + text-align:center; + height:44px; + font-size:0 +} +.nav ul{ + margin:0 +} +.nav li{ + display:inline-block; + list-style:none; + padding:8px 0 +} +.nav a,.nav a:visited{ + font-size:11px; + color:rgba(255,255,255,0.7); + line-height:20px; + display:inline-block; + padding:4px 5px; + border-radius:1px +} +.nav li.current{ + margin:0 3px +} +.nav li.current a{ + background:#fff; + color:#242729; + padding-right:7px; + padding-left:7px; + font-weight:500 +} + diff --git a/dist/www/C/static/img/external-link-ltr-icon.svg b/dist/www/C/static/img/external-link-ltr-icon.svg new file mode 100644 index 000000000..88e951735 --- /dev/null +++ b/dist/www/C/static/img/external-link-ltr-icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dist/www/I/ArequipaBanner3.jpg b/dist/www/I/ArequipaBanner3.jpg new file mode 100644 index 000000000..b54533a45 Binary files /dev/null and b/dist/www/I/ArequipaBanner3.jpg differ diff --git a/dist/www/I/AviationHistoryBanner3.jpg b/dist/www/I/AviationHistoryBanner3.jpg new file mode 100644 index 000000000..1d7b1806d Binary files /dev/null and b/dist/www/I/AviationHistoryBanner3.jpg differ diff --git a/dist/www/I/COVID-19_lifecycle.jpg b/dist/www/I/COVID-19_lifecycle.jpg new file mode 100644 index 000000000..a77e2e376 Binary files /dev/null and b/dist/www/I/COVID-19_lifecycle.jpg differ diff --git a/dist/www/I/Hand_sanitizer_banner.jpg b/dist/www/I/Hand_sanitizer_banner.jpg new file mode 100644 index 000000000..dbc3533cd Binary files /dev/null and b/dist/www/I/Hand_sanitizer_banner.jpg differ diff --git a/dist/www/I/IriomoteBanner1.jpg b/dist/www/I/IriomoteBanner1.jpg new file mode 100644 index 000000000..cff47c0ee Binary files /dev/null and b/dist/www/I/IriomoteBanner1.jpg differ diff --git a/dist/www/I/s/Checker-16x16.png b/dist/www/I/s/Checker-16x16.png new file mode 100644 index 000000000..3e9e3d096 Binary files /dev/null and b/dist/www/I/s/Checker-16x16.png differ diff --git a/dist/www/I/s/Icon_External_Link.png b/dist/www/I/s/Icon_External_Link.png new file mode 100644 index 000000000..16f9b92db Binary files /dev/null and b/dist/www/I/s/Icon_External_Link.png differ diff --git a/dist/www/I/s/Icons-mini-file_acrobat.gif b/dist/www/I/s/Icons-mini-file_acrobat.gif new file mode 100644 index 000000000..7bc7de95d Binary files /dev/null and b/dist/www/I/s/Icons-mini-file_acrobat.gif differ diff --git a/dist/www/I/s/Thumbs.db b/dist/www/I/s/Thumbs.db new file mode 100644 index 000000000..75a90bb74 Binary files /dev/null and b/dist/www/I/s/Thumbs.db differ diff --git a/dist/www/I/s/cog-sprite.png b/dist/www/I/s/cog-sprite.png new file mode 100644 index 000000000..fbc97fefe Binary files /dev/null and b/dist/www/I/s/cog-sprite.png differ diff --git a/dist/www/I/s/magnify-clip-ltr.png b/dist/www/I/s/magnify-clip-ltr.png new file mode 100644 index 000000000..2704514eb Binary files /dev/null and b/dist/www/I/s/magnify-clip-ltr.png differ diff --git a/dist/www/I/s/spinner.gif b/dist/www/I/s/spinner.gif new file mode 100644 index 000000000..6146be4e8 Binary files /dev/null and b/dist/www/I/s/spinner.gif differ diff --git a/dist/www/article.html b/dist/www/article.html new file mode 100644 index 000000000..4c618fe19 --- /dev/null +++ b/dist/www/article.html @@ -0,0 +1,9 @@ + + + + + + + + + \ 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..b8f0e5f84 --- /dev/null +++ b/dist/www/css/app.css @@ -0,0 +1,779 @@ +/*! + * app.css : Main CSS of the application + * + * Copyright 2013-2023 Mossroy, Jaifroid and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + +[role=region] { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: fixed; + overflow: hidden; +} + +[role=region] > header { + margin-left: 1px; + 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 */ + height: 0; +} + +[role=region] > footer { + background: rgba(217,237,247,0.8); + right: 0; + bottom: 0; + left: 0; + position: fixed; + text-align: center; +} + +[role=region] > footer > menu[role=toolbar] { + margin: 0; + padding: 0; +} + +label { + font-weight: normal !important; + margin-left: 20px; +} + +#navigationButtons .restrictedSize { + max-width: 80%; + margin-left: auto; + margin-right: auto; +} + +body { + background-color: whitesmoke !important; +} + +.panel-heading { + font-weight: 600; +} + +div:not(.panel-success, .alert-message) { + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.dark ::-webkit-scrollbar { + height: 10px; +} + +.dark ::-webkit-scrollbar-button:start:decrement, +.dark ::-webkit-scrollbar-button:end:increment { + height: 30px; + background-color: transparent; +} + +.dark ::-webkit-scrollbar-track-piece { + background-color: #3b3b3b; +} + +.dark ::-webkit-scrollbar-thumb:vertical { + height: 50px; + background-color: #666; + border: 1px solid #eee; +} + +.nopadding { + padding-right: 1px !important; + padding-left: 1px !important; +} + +#articleList { + margin-bottom: 12px !important; + overflow-wrap: break-word; +} + +#scrollbox { + position: absolute; +} + +#articleListWithHeader { + position: absolute; + top: 0; + left: 5%; + padding-left: 12px; + padding-right: 12px; + background: lightblue; + z-index: 1; +} + +#articleList a:hover, #articleList a.hover, .backgroundLightBlue { + background: lightblue; +} + +.dark #articleList a:hover, .dark #articleList a.hover { + background: darkslategray; +} + +.dark #articleListWithHeader { + background: darkslategrey; +} + +#btnHome { + padding: 0px 1em !important; +} + +#OPFSQuota { + padding: 4px; + width: -moz-fit-content; + width: fit-content; + border-style: groove; + border-width: 3px; +} + +.form-control:not([id^="findInArticle"]) { + margin-top: 5px !important; + margin-bottom: 5px !important; + /*box-shadow: none !important;*/ +} + +.form-control:not([id^="archiveList"]) { + height: 2.2em !important; + padding: 5px 1em !important; +} + +.navbar-inverse { + background-color: #d9edf7 !important; + border-color: #d9edf7 !important; + margin-bottom: 0 !important; +} + +.dark .form-control { + color: lightgray; + background: #222; +} + +.articleIFrame { + position: fixed; + width: 100%; + border: 0; + transition: top 300ms; + z-index: 0; +} + +.category-padding { + margin: 0 auto; + max-width: 800px; +} + +.apiAvailable { + color: green; +} + +.apiUnavailable, .apiSuboptimal { + color: orange; +} + +.apiBroken { + color : red; +} + +.loader { + position: absolute; + margin: 0 auto; + left: 0; + right: 0; + border: 5px solid lightgrey; + animation: spin 1s linear infinite; + -webkit-animation: spin 1s linear infinite; + border-top: 5px solid steelblue; + border-radius: 50%; + width: 50px; + height: 50px; +} + +.glyphicon.spinning { + color: white; + animation: spin 1s linear infinite; + -webkit-animation: spin 1s linear infinite; +} + +.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; +} + +.dark .message { + background: darkslategrey; + color: darkgrey; + border: 1px solid dimgrey; +} + +.dark code { + background-color: lightsteelblue; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.settings { + float: left; + margin: 5px; + padding: 10px; + max-width: 500px; + min-height: 150px; + border: 1px solid black; +} + +.navbar-header { + float: none !important; + -webkit-app-region: no-drag; +} + +.navbar-fixed-bottom { + background: inherit; +} + +.navbar { + min-height: 0px !important; + left: env(titlebar-area-x, 0); + top: env(titlebar-area-y, 0); + width: env(titlebar-area-width, 100%); + -webkit-app-region: drag; +} + +nav a.btn-primary, .input-group-addon { + background: #d9edf7; + border-color: #d9edf7 !important; + margin-top: 3px; + padding: 5px 1em !important; +} + +.btn:active, .btn-primary:active, .btn-primary.active { + background: lightsteelblue !important; + background-color: lightsteelblue !important; +} + +.dark .btn:active, .dark .btn-primary:active, .dark .btn-primary.active { + background: darkslategray !important; + background-color: darkslategray !important; +} + +.btn:hover { + background: lightsteelblue; + background-color: lightsteelblue; +} + +.dark .btn:hover { + background: darkslategray; + background-color: darkslategray; +} + +@media (pointer: coarse) { + .btn:hover { + background: #d9edf7 !important; + background-color: #d9edf7 !important; + } + .btn:active { + background: lightsteelblue !important; + background-color: lightsteelblue !important; + } + .dark .btn:hover { + background: #222 !important; + background-color: #222 !important; + } + .dark .btn:active { + background: darkslategray !important; + background-color: darkslategray !important; + } +} + +.dark .btn-primary, .dark .btn-secondary, .dark .navbar-inverse { + background: #222 !important; + border-color: #222 !important; +} + +.dark .btn-inline { + background: #182828 !important; + border-color: darkslategray !important; +} + +.dark .modal-footer .btn-primary, .dark .modal-footer .btn-secondary { + border-color: #777 !important; +} + +footer .btn-xs { + margin: 5px 5px 10px; +} + +.glyphicon { + color: darkblue; +} + +.btn-sm, .btn-lg, .btn-default { + background-color: rgba(217,237,247,0) !important; + border: transparent !important; + /*color: whitesmoke !important;*/ + color: darkblue !important; + font-weight: bold !important; +} + +.btn { + z-index:initial !important; +} + +.btn-danger { + background-color: lightyellow !important; + color: darkred !important; +} + +.dark .btn-danger { + background-color: #250000 !important; + color: gainsboro !important; +} + +.btn-danger:hover { + background-color: red !important; + color: lightyellow !important; +} + +.dark .btn-danger:hover { + background-color: darkred !important; + color: lightyellow !important; +} + +.darkfooter { + background: rgba(34,34,34,0.8) !important; +} + +pre { + font-weight: bold; +} + +.dropdown-menu, .dropdown-menu a { + background: rgba(255,255,255,0.7) !important; +} + + .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + background-color: #337ab7 !important; + } + +.disclaimer { + background-color: lightyellow; + border-left: 6px solid gold; + padding: 10px 5px 1px 10px; +} + +.dark .disclaimer { + background: #333300; +} + +.update { + background-color: lightcyan; + border-left: 6px solid cyan; + padding: 10px 5px 1px 10px; +} + +.dark .update { + background: black; + border-left: 6px solid grey; +} + +.darkfooter .glyphicon, .dark .glyphicon { + color: lightblue; +} + +.modal-title { + color: black; + font-weight: bold; +} + +.panel-group-heading { + margin-top: 1em; + margin-bottom: 0.8em; + font-weight: 600; +} + +.dark .modal-title { + color: lightgray !important; +} + +.modal-content.dark { + background: #222 !important; +} + +.modal-content:not(.dark) { + background: #fff !important; +} + +.dark .modal-content:not(.dark) { + background: #333 !important; +} + +.dark { + color: lightgray !important; + background: black !important; + border-color: darkgray; +} + +.dark .panel { + color: lightgray !important; + background: #222 !important; + border-color: darkgray; +} + +.dark .panel-heading { + color: lightgray !important; + background: #12303b !important; + border-color: darkgray; +} + + .dark .panel-warning .panel-heading { + background: #333300 !important; + } + + + .dark .panel-danger .panel-heading { + background: #330000 !important; + } + +.dropdown { + width: 100%; + max-width: 8em; + margin-bottom: 10px; +} + +.dark .dropdown { + color: #222 !important; + background-color: lightblue !important; + border-color: lightgray !important; +} + +.dark .dropdown option:focus, .dark .dropdown option:hover { + color: lightblue !important; + background: darkslategray !important; +} + +.darkfooter .dropdown-menu, .darkfooter .dropdown-menu a { + color: lightblue !important; + background: rgba(34,34,34,0.6) !important; + border-color: darkgray; +} + +.darkfooter .dropdown-menu a:focus, .darkfooter .dropdown-menu a:hover { + color: lightblue !important; + background: darkslategray !important; +} + +.dark .list-group-item, .modal .dark .close { + color: lightblue !important; + background-color: #222; +} + +.dark a.list-group-item:hover, .dark a.list-group-item:focus, .dark nav a:hover, .dark nav a:focus, .dark nav .active { + color: lightblue !important; + background-color: darkslategray !important; +} + +.dark .btn-default, .dark .input-group-addon, .dark pre { + background: #222 !important; + border-color: #222 !important; + color: lightgray !important; + text-shadow: none; +} + +.dark a { + color: lightblue !important; +} + +.darkfooter .btn-default { + background: rgba(34,34,34,0) !important; + color: lightblue !important; +} + +.modal-full { + width: 94% !important; + margin: 3% !important; +} + +#alert-modal { + margin-top: 15% !important; + margin-bottom: 15% !important; +} + +#alertBoxFooter .alert { + margin-bottom: 0; +} + +.modal-dialog { + -webkit-animation-name: animatetop; + -webkit-animation-duration: 0.1s; + animation-name: animatetop; + animation-duration: 0.1s; +} + +/* Add Animation */ +@keyframes animatetop { + from {top: -300px; opacity: 0} + to {top: 0px; opacity: 1} +} + +#dl-panel-body::before, #dl-panel-body::after { + content: '' !important; +} + + /*********************************/ + /******* Custom checkboxes *******/ +/*********************************/ + +/* Hide the browser's default checkbox */ +.container input[type=checkbox], .container input[type=radio] { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; +} + +/* Create a custom checkbox */ +.checkmark { + position: absolute; + top: 0; + left: -25px; + height: 20px; + width: 20px; + background-color: whitesmoke; + border: 2px solid #0078d7; +} + +/* Style the checkmark/indicator */ +.container input:checked ~ .checkmark:after { + content: ""; + position: absolute; + left: 6px; + top: 2px; + width: 5px; + height: 10px; + border: solid steelblue; + border-width: 0 3px 3px 0; + transform: rotate(45deg); +} + +.container input:indeterminate ~ .checkmark:after { + content: ""; + position: absolute; + top: 30%; + left: 30%; + width: 40%; + height: 40%; + background: steelblue; +} + +/* Create a custom radio button */ +.radiobtn { + position: absolute; + top: 0; + left: -25px; + height: 20px; + width: 20px; + background-color: whitesmoke; + border-radius: 50%; + border: 2px solid #0078d7; +} + +/* Style the indicator (dot/circle) */ +.container input:checked ~ .radiobtn:after { + content: ""; + position: absolute; + top: 4px; + left: 4px; + width: 8px; + height: 8px; + border-radius: 50%; + background: steelblue; +} + +.panel-warning .checkmark, .panel-warning .radiobtn, .panel-warning input:checked ~ .checkmark:after, .panel-warning input:indeterminate ~ .checkmark:after { + border-color: #a0a090; +} + +.panel-warning input:checked ~ .radiobtn::after { + background: #a0a090; +} + +.panel-danger .checkmark, .panel-danger .radiobtn, .panel-danger input:checked ~ .checkmark:after, .panel-danger input:indeterminate ~ .checkmark:after { + border-color: #c37b7a; +} + +.panel-danger input:checked ~ .radiobtn:after { + background: #c37b7a; +} + +.dark .checkmark, .dark .radiobtn { + border-color: darkslategray; +} + +.dark .panel-warning .checkmark, .dark .panel-warning .radiobtn, .dark .panel-warning input:checked ~ .checkmark:after, .dark .panel-warning input:indeterminate ~ .checkmark:after { + border-color: #808000; +} + +.dark .panel-danger .checkmark, .dark .panel-danger .radiobtn { + border-color: #800000; +} + +/* When the checkbox is checked, add a blue background +.container input:checked ~ .checkmark, .container input:indeterminate ~ .checkmark, .container input:checked ~ .radiobtn { + background-color: steelblue; +} */ + +.dark input ~ .checkmark, .dark input ~ .radiobtn, .dark input:checked ~ .checkmark, .dark input:indeterminate ~ .checkmark, .dark input:checked ~ .radiobtn { + background-color: #12303b; +} + +.dark .panel-warning input ~ .checkmark, .dark .panel-warning input ~ .radiobtn, .dark .panel-warning input:checked ~ .checkmark, .dark .panel-warning input:checked ~ .radiobtn { + background-color: #4d4d00; +} + +.dark .panel-danger input ~ .checkmark, .dark .panel-danger input ~ .radiobtn, .dark .panel-danger input:checked ~ .checkmark, .dark .panel-danger input:checked ~ .radiobtn { + background-color: #4d0000; +} + +/* On mouse-over, add a grey background color */ +.checkbox:hover input ~ .checkmark, .checkbox:hover input:checked ~ .checkmark, .checkbox:hover input:indeterminate ~ .checkmark { + background-color: #ccc; +} + +/* On mouse-over, add a grey background color */ +.radio:hover input ~ .radiobtn, .radio:hover input:checked ~ .checkmark { + background-color: #ccc !important; +} + + + @media (max-width: 768px) { + /*Increase touchability of bottom buttons*/ + footer .btn-default { + font-size: 120% !important; + } + + /* Pour réduire la taille du menu en haut */ + /*.navbar { + min-height: 20px !important; + margin-bottom: 1px !important; + }*/ + /*.navbar-brand, .navbar-nav a { /* GK added navbar-nav a*/ + /*padding-top: 2px !important; + padding-bottom: 1px !important; + height: 25px !important; + } + + .navbar-nav a { + padding-bottom: 15px !important; + }*/ + + /*.navbar-toggle { + padding-top: 2px !important; + padding-bottom: 2px !important; + margin-top: 2px !important; + margin-bottom: 0px !important; + background-color: lightgray !important; + }*/ + /* Pour réduire la taille des éléments et boutons dans l'aréa de navégation - GK + .navbar-nav, .navbar-nav > li { + padding-top: 2px !important; + padding-bottom: 2px !important; + margin-top: 2px !important; + margin-bottom: 0px !important; + } */ + .navbar-nav { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + /*Make sure these align correctly rather than stacking at full width - GK*/ + .navbar-nav > li > a { + /*float: left !important;*/ + /*Added this to prevent the buttons becoming so small*/ + padding-top: 15px !important; + } + + /*.col-md-offset-1 { + padding-left: 5px !important; + } + + [role=region] > header { + margin-bottom: 10px !important; + }*/ + /* Pour supprimer l'espace entre la zone de recherche et l'iframe + .list-group { + margin-bottom: 0 !important; + } */ + /* Pour réduire la taille du champ de recherche + .form-control { + height: 28px !important; + padding-bottom: 5px !important; + } */ + + /*.dropdown-menu { + font-size: 20px !important; + } + + Pour réduire la taille des boutons en haut de l'écran + .btn-xs, .btn-sm, .btn-default, .btn-group-xs > .btn, .btn-group-sm > .btn { + font-size: 10px !important; + }*/ + /* Pour réduire la taille des boutons en bas de l'écran + .btn-lg, .btn-group-lg > .btn { + padding-top: 1px !important; + padding-bottom: 1px !important; + font-size: 16px !important; + }*/ + } + + @media (max-width: 440px) { + /*.btn-primary { + font-size: 12px !important; + } + .input-group-btn { + display: inline !important; + } + #btnHome { + float: left; + }*/ + } \ No newline at end of file diff --git a/dist/www/css/bootstrap-theme.min.css b/dist/www/css/bootstrap-theme.min.css new file mode 100644 index 000000000..8109ea5eb --- /dev/null +++ b/dist/www/css/bootstrap-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-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-image:-o-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-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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/dist/www/css/bootstrap.min.css b/dist/www/css/bootstrap.min.css new file mode 100644 index 000000000..ae9a2f5b9 --- /dev/null +++ b/dist/www/css/bootstrap.min.css @@ -0,0 +1,6964 @@ +/*! + * bootswatch v3.3.7 + * Homepage: http://bootswatch.com + * Copyright 2012-2017 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*/ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Segoe UI", "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-size: 15px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #165ba8; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 0; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 21px; + margin-bottom: 21px; + border: 0; + border-top: 1px solid #e6e6e6; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Segoe UI", "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-weight: 300; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 21px; + margin-bottom: 10.5px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10.5px; + margin-bottom: 10.5px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 39px; +} +h2, +.h2 { + font-size: 32px; +} +h3, +.h3 { + font-size: 26px; +} +h4, +.h4 { + font-size: 19px; +} +h5, +.h5 { + font-size: 15px; +} +h6, +.h6 { + font-size: 13px; +} +p { + margin: 0 0 10.5px; +} +.lead { + margin-bottom: 21px; + font-size: 17px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 22.5px; + } +} +small, +.small { + font-size: 86%; +} +mark, +.mark { + background-color: #ff7518; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #999999; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #1967be; +} +.text-success { + color: #ffffff; +} +a.text-success:hover, +a.text-success:focus { + color: #e6e6e6; +} +.text-info { + color: #ffffff; +} +a.text-info:hover, +a.text-info:focus { + color: #e6e6e6; +} +.text-warning { + color: #ffffff; +} +a.text-warning:hover, +a.text-warning:focus { + color: #e6e6e6; +} +.text-danger { + color: #ffffff; +} +a.text-danger:hover, +a.text-danger:focus { + color: #e6e6e6; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #1967be; +} +.bg-success { + background-color: #3fb618; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #2f8912; +} +.bg-info { + background-color: #9954bb; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #7e3f9d; +} +.bg-warning { + background-color: #ff7518; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #e45c00; +} +.bg-danger { + background-color: #ff0039; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #cc002e; +} +.page-header { + padding-bottom: 9.5px; + margin: 42px 0 21px; + border-bottom: 1px solid #e6e6e6; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10.5px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 21px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10.5px 21px; + margin: 0 0 21px; + font-size: 18.75px; + border-left: 5px solid #e6e6e6; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #999999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e6e6e6; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 21px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 0; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 0; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 10px; + margin: 0 0 10.5px; + font-size: 14px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 0; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .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-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .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-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .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-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #999999; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 21px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #3fb618; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #379f15; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #9954bb; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #8d46b0; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #ff7518; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #fe6600; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ff0039; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #e60033; +} +.table-responsive { + overflow-x: auto; + min-height: 0.01%; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15.75px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 21px; + font-size: 22.5px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 11px; + font-size: 15px; + line-height: 1.42857143; + color: #333333; +} +.form-control { + display: block; + width: 100%; + height: 43px; + padding: 10px 18px; + font-size: 15px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control::-ms-expand { + border: 0; + background-color: transparent; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #e6e6e6; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 43px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 31px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 64px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 21px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 11px; + padding-bottom: 11px; + margin-bottom: 0; + min-height: 36px; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +select.input-sm { + height: 31px; + line-height: 31px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +.form-group-sm select.form-control { + height: 31px; + line-height: 31px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 31px; + min-height: 34px; + padding: 6px 10px; + font-size: 13px; + line-height: 1.5; +} +.input-lg { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +select.input-lg { + height: 64px; + line-height: 64px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +.form-group-lg select.form-control { + height: 64px; + line-height: 64px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 64px; + min-height: 40px; + padding: 19px 30px; + font-size: 19px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 53.75px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 43px; + height: 43px; + line-height: 43px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 64px; + height: 64px; + line-height: 64px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 31px; + height: 31px; + line-height: 31px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #ffffff; +} +.has-success .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-success .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #3fb618; +} +.has-success .form-control-feedback { + color: #ffffff; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #ffffff; +} +.has-warning .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-warning .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #ff7518; +} +.has-warning .form-control-feedback { + color: #ffffff; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #ffffff; +} +.has-error .form-control { + border-color: #ffffff; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #e6e6e6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; +} +.has-error .input-group-addon { + color: #ffffff; + border-color: #ffffff; + background-color: #ff0039; +} +.has-error .form-control-feedback { + color: #ffffff; +} +.has-feedback label ~ .form-control-feedback { + top: 26px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 11px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 32px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 11px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 19px; + font-size: 19px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 13px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 10px 18px; + font-size: 15px; + line-height: 1.42857143; + border-radius: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #ffffff; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #ffffff; + background-color: #222222; + border-color: #222222; +} +.btn-default:focus, +.btn-default.focus { + color: #ffffff; + background-color: #090909; + border-color: #000000; +} +.btn-default:hover { + color: #ffffff; + background-color: #090909; + border-color: #040404; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #ffffff; + background-color: #090909; + border-color: #040404; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #ffffff; + background-color: #000000; + border-color: #000000; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #222222; + border-color: #222222; +} +.btn-default .badge { + color: #222222; + background-color: #ffffff; +} +.btn-primary { + color: #ffffff; + background-color: #337ab7; + border-color: #337ab7; +} +.btn-primary:focus, +.btn-primary.focus { + color: #ffffff; + background-color: #1967be; + border-color: #10427b; +} +.btn-primary:hover { + color: #ffffff; + background-color: #1967be; + border-color: #1862b5; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #1967be; + border-color: #1862b5; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #ffffff; + background-color: #15569f; + border-color: #10427b; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #337ab7; +} +.btn-primary .badge { + color: #337ab7; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #3fb618; + border-color: #3fb618; +} +.btn-success:focus, +.btn-success.focus { + color: #ffffff; + background-color: #2f8912; + border-color: #184509; +} +.btn-success:hover { + color: #ffffff; + background-color: #2f8912; + border-color: #2c8011; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #2f8912; + border-color: #2c8011; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #ffffff; + background-color: #24690e; + border-color: #184509; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #3fb618; + border-color: #3fb618; +} +.btn-success .badge { + color: #3fb618; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #9954bb; + border-color: #9954bb; +} +.btn-info:focus, +.btn-info.focus { + color: #ffffff; + background-color: #7e3f9d; + border-color: #522967; +} +.btn-info:hover { + color: #ffffff; + background-color: #7e3f9d; + border-color: #783c96; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #7e3f9d; + border-color: #783c96; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #ffffff; + background-color: #6a3484; + border-color: #522967; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #9954bb; + border-color: #9954bb; +} +.btn-info .badge { + color: #9954bb; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #ff7518; + border-color: #ff7518; +} +.btn-warning:focus, +.btn-warning.focus { + color: #ffffff; + background-color: #e45c00; + border-color: #983d00; +} +.btn-warning:hover { + color: #ffffff; + background-color: #e45c00; + border-color: #da5800; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #e45c00; + border-color: #da5800; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #ffffff; + background-color: #c04d00; + border-color: #983d00; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #ff7518; + border-color: #ff7518; +} +.btn-warning .badge { + color: #ff7518; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #ff0039; + border-color: #ff0039; +} +.btn-danger:focus, +.btn-danger.focus { + color: #ffffff; + background-color: #cc002e; + border-color: #80001c; +} +.btn-danger:hover { + color: #ffffff; + background-color: #cc002e; + border-color: #c2002b; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #cc002e; + border-color: #c2002b; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #ffffff; + background-color: #a80026; + border-color: #80001c; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #ff0039; + border-color: #ff0039; +} +.btn-danger .badge { + color: #ff0039; + background-color: #ffffff; +} +.btn-link { + color: #337ab7; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #165ba8; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + -o-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 15px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9.5px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #ffffff; + background-color: #337ab7; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #337ab7; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 13px; + line-height: 1.42857143; + color: #999999; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 64px; + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; + border-radius: 0; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 64px; + line-height: 64px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 31px; + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; + border-radius: 0; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 31px; + line-height: 31px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 10px 18px; + font-size: 15px; + font-weight: normal; + line-height: 1; + color: #333333; + text-align: center; + background-color: #d9edf7; + border: 1px solid #cccccc; + border-radius: 0; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 13px; + border-radius: 0; +} +.input-group-addon.input-lg { + padding: 18px 30px; + font-size: 19px; + border-radius: 0; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #e6e6e6; +} +.nav > li.disabled > a { + color: #999999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #e6e6e6; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9.5px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 0 0 0 0; +} +.nav-tabs > li > a:hover { + border-color: #e6e6e6 #e6e6e6 #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 0; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 0 0 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 0; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 0; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 0 0 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 21px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 14.5px 15px; + font-size: 19px; + line-height: 21px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 0; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.25px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 21px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 21px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 14.5px; + padding-bottom: 14.5px; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 3.5px; + margin-bottom: 3.5px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 3.5px; + margin-bottom: 3.5px; +} +.navbar-btn.btn-sm { + margin-top: 9.5px; + margin-bottom: 9.5px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 14.5px; + margin-bottom: 14.5px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #222222; + border-color: #121212; +} +.navbar-default .navbar-brand { + color: #ffffff; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-default .navbar-text { + color: #ffffff; +} +.navbar-default .navbar-nav > li > a { + color: #ffffff; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #090909; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #090909; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: transparent; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #090909; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #121212; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #090909; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #090909; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #090909; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #ffffff; +} +.navbar-default .navbar-link:hover { + color: #ffffff; +} +.navbar-default .btn-link { + color: #ffffff; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #ffffff; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; +} +.navbar-inverse { + background-color: #337ab7; + border-color: #1967be; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-inverse .navbar-text { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #1967be; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #1967be; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #ffffff; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: transparent; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1967be; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #1a6ecc; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #1967be; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #1967be; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ffffff; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #ffffff; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #ffffff; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #ffffff; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 21px; + list-style: none; + background-color: #f5f5f5; + border-radius: 0; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 21px 0; + border-radius: 0; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 10px 18px; + line-height: 1.42857143; + text-decoration: none; + color: #337ab7; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #165ba8; + background-color: #e6e6e6; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #999999; + background-color: #f5f5f5; + border-color: #dddddd; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 18px 30px; + font-size: 19px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 13px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager { + padding-left: 0; + margin: 21px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #e6e6e6; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #222222; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #090909; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #1967be; +} +.label-success { + background-color: #3fb618; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2f8912; +} +.label-info { + background-color: #9954bb; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #7e3f9d; +} +.label-warning { + background-color: #ff7518; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #e45c00; +} +.label-danger { + background-color: #ff0039; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #cc002e; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 13px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #337ab7; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #ffffff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #e6e6e6; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 23px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #cccccc; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 0; + padding-left: 15px; + padding-right: 15px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 68px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 21px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 0; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333333; +} +.alert { + padding: 15px; + margin-bottom: 21px; + border: 1px solid transparent; + border-radius: 0; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #3fb618; + border-color: #4e9f15; + color: #ffffff; +} +.alert-success hr { + border-top-color: #438912; +} +.alert-success .alert-link { + color: #e6e6e6; +} +.alert-info { + background-color: #9954bb; + border-color: #7643a8; + color: #ffffff; +} +.alert-info hr { + border-top-color: #693c96; +} +.alert-info .alert-link { + color: #e6e6e6; +} +.alert-warning { + background-color: #ff7518; + border-color: #ff4309; + color: #ffffff; +} +.alert-warning hr { + border-top-color: #ee3800; +} +.alert-warning .alert-link { + color: #e6e6e6; +} +.alert-danger { + background-color: #ff0039; + border-color: #f0005e; + color: #ffffff; +} +.alert-danger hr { + border-top-color: #d60054; +} +.alert-danger .alert-link { + color: #e6e6e6; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 21px; + margin-bottom: 21px; + background-color: #cccccc; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 13px; + line-height: 21px; + color: #ffffff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #3fb618; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #9954bb; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #ff7518; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #ff0039; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item, +button.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #e6e6e6; + color: #999999; + cursor: not-allowed; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #999999; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #337ab7; + border-color: #dddddd; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #dceafa; +} +.list-group-item-success { + color: #ffffff; + background-color: #3fb618; +} +a.list-group-item-success, +button.list-group-item-success { + color: #ffffff; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #ffffff; + background-color: #379f15; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-info { + color: #ffffff; + background-color: #9954bb; +} +a.list-group-item-info, +button.list-group-item-info { + color: #ffffff; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #ffffff; + background-color: #8d46b0; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-warning { + color: #ffffff; + background-color: #ff7518; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #ffffff; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #ffffff; + background-color: #fe6600; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-danger { + color: #ffffff; + background-color: #ff0039; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #ffffff; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #ffffff; + background-color: #e60033; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #ffffff; + border-color: #ffffff; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 21px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 0; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 17px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: -1; + border-top-left-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: -1; + border-top-right-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: -1; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: -1; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: -1; + border-bottom-right-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: -1; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: -1; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 21px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 0; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #ddd; +} + + .panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } + + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; + } + + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; + } + + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; + } + +.panel-primary { + border-color: #337ab7; +} + + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + } + + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; + } + + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; + } + + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; + } + +.panel-success { + border-color: #d6e9c6; +} + + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; + } + + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; + } + + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; + } + +.panel-info { + border-color: #bce8f1; +} + + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; + } + + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; + } + + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; + } + +.panel-warning { + border-color: #faebcc; +} + + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; + } + + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; + } + + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; + } + +.panel-danger { + border-color: #ebccd1; +} + + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; + } + + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; + } + + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; + } +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 0; +} +.well-sm { + padding: 9px; + border-radius: 0; +} +.close { + float: right; + font-size: 22.5px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid transparent; + border-radius: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + -webkit-background-clip: padding-box; + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 20px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Segoe UI", "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 13px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + background-color: #000000; + border-radius: 0; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Segoe UI", "Source Sans Pro", Calibri, Candara, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 15px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 15px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: -1 -1 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: rgba(0, 0, 0, 0); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +.navbar-inverse .badge { + background-color: #fff; + color: #337ab7; +} +body { + -webkit-font-smoothing: antialiased; +} +.text-primary, +.text-primary:hover { + color: #337ab7; +} +.text-success, +.text-success:hover { + color: #3fb618; +} +.text-danger, +.text-danger:hover { + color: #ff0039; +} +.text-warning, +.text-warning:hover { + color: #ff7518; +} +.text-info, +.text-info:hover { + color: #9954bb; +} +table a:not(.btn), +.table a:not(.btn) { + text-decoration: underline; +} +table .dropdown-menu a, +.table .dropdown-menu a { + text-decoration: none; +} +table .success, +.table .success, +table .warning, +.table .warning, +table .danger, +.table .danger, +table .info, +.table .info { + color: #fff; +} +table .success a, +.table .success a, +table .warning a, +.table .warning a, +table .danger a, +.table .danger a, +table .info a, +.table .info a { + color: #fff; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label, +.has-warning .form-control-feedback { + color: #ff7518; +} +.has-warning .form-control, +.has-warning .form-control:focus, +.has-warning .input-group-addon { + border: 1px solid #ff7518; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label, +.has-error .form-control-feedback { + color: #ff0039; +} +.has-error .form-control, +.has-error .form-control:focus, +.has-error .input-group-addon { + border: 1px solid #ff0039; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label, +.has-success .form-control-feedback { + color: #3fb618; +} +.has-success .form-control, +.has-success .form-control:focus, +.has-success .input-group-addon { + border: 1px solid #3fb618; +} +.nav-pills > li > a { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-image: none; +} +.close { + text-decoration: none; + text-shadow: none; + opacity: 0.4; +} +.close:hover, +.close:focus { + opacity: 1; +} +.alert { + border: none; +} +.alert .alert-link { + text-decoration: underline; + color: #fff; +} +.label { + border-radius: 0; +} +.progress { + height: 8px; + -webkit-box-shadow: none; + box-shadow: none; +} +.progress .progress-bar { + font-size: 8px; + line-height: 8px; +} +.panel-heading, +.panel-footer { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.panel-default .close { + color: #333333; +} +a.list-group-item-success.active { + background-color: #3fb618; +} +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + background-color: #379f15; +} +a.list-group-item-warning.active { + background-color: #ff7518; +} +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + background-color: #fe6600; +} +a.list-group-item-danger.active { + background-color: #ff0039; +} +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + background-color: #e60033; +} +.modal .close { + color: #333333; +} +.popover { + color: #333333; +} diff --git a/dist/www/css/bootstrap.min_bright_panels.css b/dist/www/css/bootstrap.min_bright_panels.css new file mode 100644 index 000000000..e7ef99d17 --- /dev/null +++ b/dist/www/css/bootstrap.min_bright_panels.css @@ -0,0 +1,11 @@ +@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700");/*! + * bootswatch v3.3.7 + * Homepage: http://bootswatch.com + * Copyright 2012-2017 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Segoe UI","Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Segoe UI","Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover,a.text-primary:focus{color:#1967be}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover,a.bg-primary:focus{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover,a.bg-success:focus{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover,a.bg-info:focus{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover,a.bg-warning:focus{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover,a.bg-danger:focus{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.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-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.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-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.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-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e6e6e6;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;min-height:40px;padding:19px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#090909;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#000000;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1967be;border-color:#10427b}.btn-primary:hover{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#15569f;border-color:#10427b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f8912;border-color:#184509}.btn-success:hover{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#24690e;border-color:#184509}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7e3f9d;border-color:#522967}.btn-info:hover{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#6a3484;border-color:#522967}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e45c00;border-color:#983d00}.btn-warning:hover{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c04d00;border-color:#983d00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#cc002e;border-color:#80001c}.btn-danger:hover{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#a80026;border-color:#80001c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Segoe UI","Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Segoe UI","Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} \ No newline at end of file diff --git a/dist/www/css/bootstrap_original.css b/dist/www/css/bootstrap_original.css new file mode 100644 index 000000000..b1851f704 --- /dev/null +++ b/dist/www/css/bootstrap_original.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .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-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .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-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .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-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-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-image: -o-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-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); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-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-image: -o-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-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); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/dist/www/css/bootstrap_original.min.css b/dist/www/css/bootstrap_original.min.css new file mode 100644 index 000000000..ed3905e0e --- /dev/null +++ b/dist/www/css/bootstrap_original.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{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 #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.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-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-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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.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{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.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{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.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{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-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-image:-o-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-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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-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-image:-o-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-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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-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-image:-o-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-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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-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-image:-o-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-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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-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-image:-o-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-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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.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-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/dist/www/css/default.css b/dist/www/css/default.css new file mode 100644 index 000000000..e9b0a19bc --- /dev/null +++ b/dist/www/css/default.css @@ -0,0 +1,4 @@ +body { + /** Uncomment this to enable scrolling and zooming */ + touch-action: manipulation; +} diff --git a/dist/www/css/wikipedia-widescreen.css b/dist/www/css/wikipedia-widescreen.css new file mode 100644 index 000000000..23d4c0df0 --- /dev/null +++ b/dist/www/css/wikipedia-widescreen.css @@ -0,0 +1 @@ +.mw-cite-backlink,.cite-accessibility-label{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mw-references-columns{-webkit-column-width:30em;-moz-column-width:30em;column-width:30em}.mw-references-columns li{-webkit-column-break-inside:avoid;page-break-inside:avoid;break-inside:avoid-column}sup.reference{unicode-bidi:-moz-isolate;unicode-bidi:-webkit-isolate;unicode-bidi:isolate;white-space:nowrap}ol.references li:target,sup.reference:target{background-color:#def;background-color:rgba( 0,127,255,0.133 )}.mw-ext-cite-error{font-weight:bold;unicode-bidi:embed}@media print{.mw-cite-backlink{display:none}}.oo-ui-icon-bell{background-image:url(/w/load.php?modules=ext.echo.badgeicons&image=bell&format=rasterized&lang=es&skin=vector);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M17.5%2014V9c0-3-2.3-5-5.5-5S6.5%206%206.5%209v5c0%202%200%203-2%203v1h15v-1c-2%200-2-1-2-3zM12%2020H9c0%201%201.6%202%203%202s3-1%203-2h-3z%22%2F%3E%0A%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/load.php?modules=ext.echo.badgeicons&image=bell&format=rasterized&lang=es&skin=vector)}.oo-ui-icon-tray{background-image:url(/w/load.php?modules=ext.echo.badgeicons&image=tray&format=rasterized&lang=es&skin=vector);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M3%2013.35l1.8-7.2c.2-.996.81-1.8%201.8-1.8h10.8c.99%200%201.6.867%201.8%201.8l1.8%207.2v4.5c0%20.99-.81%201.8-1.8%201.8H4.8c-.99%200-1.8-.81-1.8-1.8v-4.5zm6.96%201.8h4.08c-.49.557-1.212.9-2.04.9a2.68%202.68%200%200%201-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44%207.2H9.3c0%20.702.246%201.328.66%201.8z%22%2F%3E%0A%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/load.php?modules=ext.echo.badgeicons&image=tray&format=rasterized&lang=es&skin=vector)}.oo-ui-icon-doubleCheck{background-image:url(/w/load.php?modules=ext.echo.badgeicons&image=doubleCheck&format=rasterized&lang=es&skin=vector);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M17%209.5L9.5%2017%206%2013.5%204.5%2015l5%205L20%209.5c-.706-.706-2.294-.706-3%200z%22%2F%3E%0A%20%20%20%20%3Cpath%20d%3D%22M17%204.5L9.5%2012%206%208.5%204.5%2010l5%205L20%204.5c-.706-.706-2.294-.706-3%200z%22%2F%3E%0A%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/load.php?modules=ext.echo.badgeicons&image=doubleCheck&format=rasterized&lang=es&skin=vector)}.oo-ui-image-invert.oo-ui-icon-doubleCheck{background-image:url(/w/load.php?modules=ext.echo.badgeicons&image=doubleCheck&variant=invert&format=rasterized&lang=es&skin=vector);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%23FFFFFF%22%3E%0A%20%20%20%20%3Cpath%20xmlns%3Adefault%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20d%3D%22M17%209.5L9.5%2017%206%2013.5%204.5%2015l5%205L20%209.5c-.706-.706-2.294-.706-3%200z%22%2F%3E%0A%20%20%20%20%3Cpath%20xmlns%3Adefault%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20d%3D%22M17%204.5L9.5%2012%206%208.5%204.5%2010l5%205L20%204.5c-.706-.706-2.294-.706-3%200z%22%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/load.php?modules=ext.echo.badgeicons&image=doubleCheck&variant=invert&format=rasterized&lang=es&skin=vector)}#pt-notifications-alert .mw-echo-notifications-badge,#pt-notifications-notice .mw-echo-notifications-badge{position:relative;display:block;width:24px;height:24px;top:-1005px;cursor:pointer;text-decoration:none}#pt-notifications-alert .mw-echo-notifications-badge:hover,#pt-notifications-notice .mw-echo-notifications-badge:hover,#pt-notifications-alert .mw-echo-notifications-badge:active,#pt-notifications-notice .mw-echo-notifications-badge:active,#pt-notifications-alert .mw-echo-notifications-badge:focus,#pt-notifications-notice .mw-echo-notifications-badge:focus{outline:0;-moz-outline-style:0}#pt-notifications-alert .mw-echo-notifications-badge-dimmed,#pt-notifications-notice .mw-echo-notifications-badge-dimmed{opacity:0.4}#pt-notifications-alert .mw-echo-notifications-badge:before,#pt-notifications-notice .mw-echo-notifications-badge:before{position:absolute;display:inline-block;cursor:pointer;opacity:0.8;content:'';background-repeat:no-repeat;top:1000px;left:0;width:100%;height:100%}#pt-notifications-alert .mw-echo-notifications-badge:after,#pt-notifications-notice .mw-echo-notifications-badge:after{position:absolute;display:inline-block;cursor:pointer;top:1009px;left:55%;font-size:0.9em;font-weight:bold;padding:0 0.3em;border:1px solid #fff;border-radius:2px;background-color:#72777d;content:attr(data-counter-text);color:#fff}#pt-notifications-alert .mw-echo-notifications-badge.mw-echo-notifications-badge-long-label:after,#pt-notifications-notice .mw-echo-notifications-badge.mw-echo-notifications-badge-long-label:after{left:35%}#pt-notifications-alert .mw-echo-notifications-badge.mw-echo-notifications-badge-all-read,#pt-notifications-notice .mw-echo-notifications-badge.mw-echo-notifications-badge-all-read{opacity:0.625}#pt-notifications-alert .mw-echo-notifications-badge.mw-echo-notifications-badge-all-read:after,#pt-notifications-notice .mw-echo-notifications-badge.mw-echo-notifications-badge-all-read:after{visibility:hidden}#pt-notifications-alert .mw-echo-notifications-badge:before{background-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M17.5%2014V9c0-3-2.3-5-5.5-5S6.5%206%206.5%209v5c0%202%200%203-2%203v1h15v-1c-2%200-2-1-2-3zM12%2020H9c0%201%201.6%202%203%202s3-1%203-2h-3z%22%2F%3E%0A%3C%2Fsvg%3E%0A)}#pt-notifications-notice .mw-echo-notifications-badge:before{background-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M3%2013.35l1.8-7.2c.2-.996.81-1.8%201.8-1.8h10.8c.99%200%201.6.867%201.8%201.8l1.8%207.2v4.5c0%20.99-.81%201.8-1.8%201.8H4.8c-.99%200-1.8-.81-1.8-1.8v-4.5zm6.96%201.8h4.08c-.49.557-1.212.9-2.04.9a2.68%202.68%200%200%201-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44%207.2H9.3c0%20.702.246%201.328.66%201.8z%22%2F%3E%0A%3C%2Fsvg%3E%0A)}#pt-notifications-alert .mw-echo-notifications-badge.oo-ui-flaggedElement-unseen:after,#pt-notifications-alert .mw-echo-notifications-badge.mw-echo-unseen-notifications:after{background-color:#cc3333}#pt-notifications-notice .mw-echo-notifications-badge.oo-ui-flaggedElement-unseen:after,#pt-notifications-notice .mw-echo-notifications-badge.mw-echo-unseen-notifications:after{background-color:#3366cc}#p-personal #pt-notifications-alert,#p-personal #pt-notifications-notice{margin-top:0.3em;margin-right:0.4em}.cabecera.animal{background:url(//upload.wikimedia.org/wikipedia/commons/2/21/Infobox_animalia_-_test.png) no-repeat top right }.cabecera.arquería{background:url(//upload.wikimedia.org/wikipedia/commons/3/35/Picto_infobox_archery.png) no-repeat top right }.cabecera.arqueología{background:url(//upload.wikimedia.org/wikipedia/commons/8/80/Picto_infobox_archaeology.png) no-repeat top right }.cabecera.astronomía{background:url(//upload.wikimedia.org/wikipedia/commons/7/71/Picto_infobox_astronomy.png) no-repeat top right }.cabecera.atletismo{background:url(//upload.wikimedia.org/wikipedia/commons/5/5a/Athletics_infobox.png) no-repeat top right }.cabecera.automovilismo{background:url(//upload.wikimedia.org/wikipedia/commons/a/af/Picto_infobox_sport_auto.png) no-repeat top right }.cabecera.autor{background:url(//upload.wikimedia.org/wikipedia/commons/1/1e/Picto_infobox_auteur.png) no-repeat top right }.cabecera.bacteria{background:url(//upload.wikimedia.org/wikipedia/commons/d/dd/Infobox_bacteria.png) no-repeat top right }.cabecera.baloncesto{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/5/56/Pictogram_infobox_basketball.svg/120px-Pictogram_infobox_basketball.svg.png) no-repeat top right }.cabecera.balonmano{background:url(//upload.wikimedia.org/wikipedia/commons/e/e3/Picto_infobox_handbal.png) no-repeat top right }.cabecera.bandera{background:url(//upload.wikimedia.org/wikipedia/commons/f/f7/Picto_infobox_flag.png) no-repeat top right }.cabecera.béisbol{background:url(//upload.wikimedia.org/wikipedia/commons/2/24/Picto_infobox_baseball2.png) no-repeat top right }.cabecera.biatlón{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/0/00/Biathlon_pictogram.svg/45px-Biathlon_pictogram.svg.png) no-repeat top right }.cabecera.boxeo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Picto_infobox_boxing.svg/120px-Picto_infobox_boxing.svg.png) no-repeat top right }.cabecera.canadá{background:url(//upload.wikimedia.org/wikipedia/commons/6/6a/Picto_infobox_Canada.png) no-repeat top right }.cabecera.cerveza{background:url(//upload.wikimedia.org/wikipedia/commons/0/04/Picto_infobox_beer.png) no-repeat top right }.cabecera.ciclismo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Picto_infobox_cycling.svg/120px-Picto_infobox_cycling.svg.png) no-repeat top right }.cabecera.ciencia-ficción{background:url(//upload.wikimedia.org/wikipedia/commons/e/ed/Picto_infobox_fliyingsaucer.png) no-repeat top right }.cabecera.cine{background:url(//upload.wikimedia.org/wikipedia/commons/e/ea/Picto_infobox_cinema.png) no-repeat top right }.cabecera.cómics{background:url(//upload.wikimedia.org/wikipedia/commons/2/2c/Picto_infobox_comicballoon.png) no-repeat top right }.cabecera.comunicación{background:url(//upload.wikimedia.org/wikipedia/commons/a/a2/Picto_infobox_antenna.png) no-repeat top right }.cabecera.conflicto{background:url(//upload.wikimedia.org/wikipedia/commons/a/a5/Picto_infobox_conflict.png) no-repeat top right }.cabecera.conflicto-ficticio{background:url(//upload.wikimedia.org/wikipedia/commons/d/d1/Picto_infobox_fictional_military_conflict-00.png) no-repeat top right }.cabecera.deporte{background:url(//upload.wikimedia.org/wikipedia/commons/8/8e/Picto_infobox_Olympic.png) no-repeat top right }.cabecera.edificio{background:url(//upload.wikimedia.org/wikipedia/commons/f/ff/Picto_infobox_enterprise.png) no-repeat top right }.cabecera.españa{background:url(//upload.wikimedia.org/wikipedia/commons/1/11/Picto_Infobox_Coat_of_Arms_of_Spain.png) no-repeat top right }.cabecera.esquí{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/0/02/Picto_infobox_alpine_skiing.svg/120px-Picto_infobox_alpine_skiing.svg.png) no-repeat top right }.cabecera.filosofía{background:url(//upload.wikimedia.org/wikipedia/commons/d/dd/Picto_infobox_philosopher.png) no-repeat top right }.cabecera.física{background:url(//upload.wikimedia.org/wikipedia/commons/d/d1/Picto_infobox_physics.png) no-repeat top right }.cabecera.fungi{background:url(//upload.wikimedia.org/wikipedia/commons/7/79/Picto_infobox_fungus.png) no-repeat top right }.cabecera.fútbol{background:url(//upload.wikimedia.org/wikipedia/commons/3/3c/Picto_infobox_fotbal.png) no-repeat top right }.cabecera.gastronomía{background:url(//upload.wikimedia.org/wikipedia/commons/a/aa/Picto_infobox_mets.png) no-repeat top right }.cabecera.golf{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Golf_pictogram.svg/45px-Golf_pictogram.svg.png) no-repeat top right }.cabecera.halterofilia{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Weightlifting_pictogram.svg/45px-Weightlifting_pictogram.svg.png) no-repeat top right }.cabecera.hockey{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Picto_Infobox_Ice_hockey.svg/120px-Picto_Infobox_Ice_hockey.svg.png) no-repeat top right }.cabecera.hombremujer{background:url(//upload.wikimedia.org/wikipedia/commons/8/82/Picto_infobox_manwoman.png) no-repeat top right }.cabecera.humano{background:url(//upload.wikimedia.org/wikipedia/commons/4/48/Picto_infobox_character.png) no-repeat top right }.cabecera.informática{background:url(//upload.wikimedia.org/wikipedia/commons/a/ae/Picto-infoboxinfo.png) no-repeat top right }.cabecera.ingeniería{background:url(//upload.wikimedia.org/wikipedia/commons/f/f9/Infobox_gear.png) no-repeat top right }.cabecera.libro{background:url(//upload.wikimedia.org/wikipedia/commons/4/42/Picto_infobox_book.png) no-repeat top right }.cabecera.lucha{background:url(//upload.wikimedia.org/wikipedia/commons/0/04/Picto_infobox_wrestling.png) no-repeat top right }.cabecera.mapa{background:url(//upload.wikimedia.org/wikipedia/commons/7/7a/Picto_infobox_map.png) no-repeat top right }.cabecera.medicina{background:url(//upload.wikimedia.org/wikipedia/commons/2/23/Picto_infobox_med.png) no-repeat top right }.cabecera.militar{background:url(//upload.wikimedia.org/wikipedia/commons/0/03/Picto_infobox_military.png) no-repeat top right }.cabecera.montañismo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Picto_infobox_climbing.svg/120px-Picto_infobox_climbing.svg.png) no-repeat top right }.cabecera.motociclismo{background:url(//upload.wikimedia.org/wikipedia/commons/c/ca/Infobox_Motorcycling_pictogram.png) no-repeat top right }.cabecera.música{background:url(//upload.wikimedia.org/wikipedia/commons/6/60/Picto_infobox_music.png) no-repeat top right }.cabecera.naciones-unidas{background:url(//upload.wikimedia.org/wikipedia/commons/3/3a/Picto_infobox_UN.png) no-repeat top right }.cabecera.patinaje{background:url(//upload.wikimedia.org/wikipedia/commons/f/f5/Infobox_Inline_speed_skating_pictogram.png) no-repeat top right }.cabecera.pelota-vasca{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Basque_pelota_pictogram.svg/45px-Basque_pelota_pictogram.svg.png) no-repeat top right }.cabecera.perro{background:url(//upload.wikimedia.org/wikipedia/commons/2/21/Infobox_animalia_-_test.png) no-repeat top right }.cabecera.piragüismo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/3/3c/Canoeing_%28flatwater%29_pictogram.svg/45px-Canoeing_%28flatwater%29_pictogram.svg.png) no-repeat top right }.cabecera.planta{background:url(//upload.wikimedia.org/wikipedia/commons/7/79/Infobox_plantae.png) no-repeat top right }.cabecera.puente{background:url(//upload.wikimedia.org/wikipedia/commons/8/87/Picto_infobox_bridge.png) no-repeat top right }.cabecera.química{background:url(//upload.wikimedia.org/wikipedia/commons/e/e9/Picto_infobox_chemistry_45px.png) no-repeat top right }.cabecera.radio{background:url(//upload.wikimedia.org/wikipedia/commons/4/4c/Picto_infobox_radio.png) no-repeat top right }.cabecera.regata{background:url(//upload.wikimedia.org/wikipedia/commons/f/f4/Infobox_Sailing_pictogram.png) no-repeat top right }.cabecera.remo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/5/57/Rowing_pictogram.svg/45px-Rowing_pictogram.svg.png) no-repeat top right }.cabecera.revista{background:url(//upload.wikimedia.org/wikipedia/commons/c/c4/Picto_infobox_magazine.png) no-repeat top right }.cabecera.rugby{background:url(//upload.wikimedia.org/wikipedia/commons/0/06/Picto_Infobox_Rugby.png) no-repeat top right }.cabecera.skeleton{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Skeleton_pictogram.svg/45px-Skeleton_pictogram.svg.png) no-repeat top right }.cabecera.snowboarding{background:url(//upload.wikimedia.org/wikipedia/commons/5/59/Infobox_Snowboarding_pictogram.png) no-repeat top right }.cabecera.surf{background:url(//upload.wikimedia.org/wikipedia/commons/3/31/Infobox_Surfing_pictogram.png) no-repeat top right }.cabecera.taekwondo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Taekwondo_pictogram.svg/45px-Taekwondo_pictogram.svg.png) no-repeat top right }.cabecera.teatro{background:url(//upload.wikimedia.org/wikipedia/commons/3/37/Picto_infobox_masks.png) no-repeat top right }.cabecera.televisión{background:url(//upload.wikimedia.org/wikipedia/commons/b/b1/Picto_info_device_tv.png) no-repeat bottom right }.cabecera.tenis{background:url(//upload.wikimedia.org/wikipedia/commons/9/92/Infobox_Tennis_pictogram.png) no-repeat bottom right }.cabecera.tenis-de-mesa{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/8/85/Table_tennis_pictogram.svg/45px-Table_tennis_pictogram.svg.png) no-repeat bottom right }.cabecera.transbordador{background:url(//upload.wikimedia.org/wikipedia/commons/e/ee/Picto_infobox_rocket.png) no-repeat top right }.cabecera.transporte{background:url(//upload.wikimedia.org/wikipedia/commons/3/31/Infobox_Public_Transport.png) no-repeat top right }.cabecera.tren{background:url(//upload.wikimedia.org/wikipedia/commons/3/3f/Infobox_train.png) no-repeat top right }.cabecera.triatlón{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Triathlon_pictogram.svg/45px-Triathlon_pictogram.svg.png) no-repeat top right }.cabecera.universidad{background:url(//upload.wikimedia.org/wikipedia/commons/6/66/Picto_infobox_universit%C3%A9.png) no-repeat top right }.cabecera.videojuego{background:url(//upload.wikimedia.org/wikipedia/commons/2/2d/Picto_infobox_gamepad.png) no-repeat bottom right }.cabecera.vino{background:url(//upload.wikimedia.org/wikipedia/commons/6/66/Picto_info_grape.png) no-repeat top right }.cabecera.virus{background:url(//upload.wikimedia.org/wikipedia/commons/d/dc/Picto_infobox_virus.png) no-repeat top right }.cabecera.voleibol{background:url(//upload.wikimedia.org/wikipedia/commons/3/39/Picto_infobox_volleyball.png) no-repeat top right }.cabecera.waterpolo{background:url(//upload.wikimedia.org/wikipedia/commons/9/99/Picto_infobox_water_polo.png) no-repeat top right }.cabecera.yudo{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Judo_pictogram.svg/45px-Judo_pictogram.svg.png) no-repeat top right }.media.audio{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Gnome-speakernotes.png/35px-Gnome-speakernotes.png) no-repeat top left }.media.video{background:url(//upload.wikimedia.org/wikipedia/commons/thumb/2/20/Tango-video-x-generic.png/35px-Tango-video-x-generic.png) no-repeat top left }#p-lang .uls-settings-trigger{background:transparent no-repeat right top;background-image:url(/w/extensions/UniversalLanguageSelector/resources/images/cog-sprite.png?30312);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%2214%22%20height%3D%2232%22%3E%3Cdefs%3E%3Cpath%20d%3D%22M14%209.3V6.73l-1.575-.264c-.117-.44-.292-.848-.496-1.2l.93-1.285-1.81-1.84-1.31.908c-.38-.205-.79-.38-1.196-.497L8.284%201H5.716l-.263%201.578c-.437.117-.816.293-1.196.497L2.975%202.17%201.137%203.98l.934%201.287c-.2.38-.376.79-.493%201.228L0%206.73V9.3l1.575.264c.117.438.292.818.496%201.198l-.93%201.315L2.95%2013.89l1.312-.938c.38.205.787.38%201.224.497L5.746%2015h2.566l.263-1.578c.408-.117.817-.293%201.196-.497l1.315.935%201.81-1.812-.935-1.315c.203-.38.38-.76.495-1.2L14%209.303zm-7%201.404c-1.488%200-2.683-1.2-2.683-2.69S5.542%205.327%207%205.327c1.458%200%202.683%201.198%202.683%202.69%200%201.49-1.195%202.688-2.683%202.688z%22%20id%3D%22a%22%2F%3E%3C%2Fdefs%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20fill%3D%22%23808080%22%2F%3E%3Cuse%20transform%3D%22translate%280%2016%29%22%20xlink%3Ahref%3D%22%23a%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/extensions/UniversalLanguageSelector/resources/images/cog-sprite.png?30312);height:16px;width:14px;float:right;cursor:pointer}.skin-vector #p-lang .uls-settings-trigger{margin-top:3px}#p-lang .uls-settings-trigger:hover{background-position:right -16px}.client-nojs #ca-ve-edit,.client-nojs .mw-editsection-divider,.client-nojs .mw-editsection-visualeditor,.ve-not-available #ca-ve-edit,.ve-not-available .mw-editsection-divider,.ve-not-available .mw-editsection-visualeditor{display:none}.client-js .mw-content-ltr .mw-editsection-bracket:first-of-type,.client-js .mw-content-rtl .mw-editsection-bracket:not( :first-of-type ){margin-right:0.25em;color:#555}.client-js .mw-content-rtl .mw-editsection-bracket:first-of-type,.client-js .mw-content-ltr .mw-editsection-bracket:not( :first-of-type ){margin-left:0.25em;color:#555}.badge-goodarticle,.badge-recommendedarticle{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANCAIAAAD0YtNRAAAABnRSTlMAAAAAAABupgeRAAAAVklEQVR4AWIYSFBfX49TDtDWNBgAEMPAgZ+1B8jWtd0kp/u+z4AQImDh7SPnHCHkHtb7vmES5hFGCN3zQgh1deAegVW6YjlGa50NOgAAxpjWhjpMQuEBjxA1QR08A1oAAAAASUVORK5CYII=);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-silver-star.png?70a8c)!ie}.badge-featuredarticle,.badge-featuredportal,.badge-featuredlist{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANCAIAAAD0YtNRAAAABnRSTlMA/AD+APzoM1ogAAAAWklEQVR4AWP48+8PLkR7uUdzcMvtU8EhdykHKAciEXL3pvw5FQIURaBDJkARoDhY3zEXiCgCHbNBmAlUiyaBkENoxZSDWnOtBmoAQu7TnT+3WuDOA7KBIkAGAGwiNeqjusp/AAAAAElFTkSuQmCC);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-golden-star.png?ed948)!ie}.badge-problematic{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAMCAYAAABfnvydAAAAWUlEQVR4AWMYLGDz5v9y69f/X7thw//XULxu48b/KnBJoMA7IP6PjKFisgxQnf9x4NUMQOITHgUfQAo+41HwEWTFBnxWgBypgcORb0GORPfmJ5CxQLwGJgkA1li/0fHRlXsAAAAASUVORK5CYII=);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-problematic.png?f3177)!ie}.badge-proofread{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAMCAYAAABfnvydAAAAYElEQVR4AWMYLOD/szS5/8/T1/5/kf4aitf9f5WlgpB8mf4OKPgfGYPFnmbJMoB0wgUxFa1mADI+gTg48AeQgs94FHwEKdiA34pnaRowR6LhtyBHonvzE8jY/8/T1sAkAfA0u7wNTQyVAAAAAElFTkSuQmCC);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-proofread.png?e81f9)!ie}.badge-validated{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAMCAYAAABfnvydAAAAW0lEQVR4AWMYLGDi/4lyE/5PWAvEr6F4Xd//PhVkyXdAjA7f9f7vlWWA6MQOgZpXgxR8wqPgA0jBZyDGBT8y9P/v34DXisn/J2vgcORbkCPRvfkJZCwQr4FJAgAYMLC53pOcnQAAAABJRU5ErkJggg==);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-validated.png?6232c)!ie}.badge-digitaldocument{list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAMCAYAAABfnvydAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABLSURBVBjTY/j//z8DPsxAJwV79+6V37Vr1/Ldu3c/A2EQGyQGVgBiAAU/APF/NPwBJMcA1fkfGwbJMUCN/Y8DPyOsgKAVBB1JyJsAxwIgOIvhJQMAAAAASUVORK5CYII=);list-style-image:url(/w/extensions/WikimediaBadges/resources/images/badge-digitaldocument.png?d1c50)!ie}@media print{.noprint,#jump-to-nav,.mw-jump,#column-one,.mw-editsection,.mw-editsection-like,#footer-places,.mw-hidden-catlinks,.usermessage,.patrollink,.ns-0 .mw-redirectedfrom,.magnify,#mw-navigation,#siteNotice,#f-poweredbyico,#f-copyrightico,li#about,li#disclaimer,li#mobileview,li#privacy{display:none}body{background:#fff;color:#000;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:bold;page-break-after:avoid}dt{font-weight:bold}ul{list-style-type:square}p{margin:1em 0;line-height:1.2em;orphans:3;widows:3}pre,.mw-code{background:#fff;color:#000;border:1pt dashed #000;padding:1em 0;font-size:8pt;white-space:pre;word-wrap:break-word;overflow:auto}img,figure,.wikitable,.thumb{page-break-inside:avoid}img{border:0;vertical-align:middle}#globalWrapper{width:100% !important;min-width:0 !important}.mw-body{background:#fff;color:#000;border:0 !important;padding:0 !important;margin:0 !important;direction:ltr}#column-content{margin:0 !important}#column-content .mw-body{padding:1em;margin:0 !important}#toc,.toc{background-color:#f9f9f9;border:1pt solid #aaa;padding:5px;display:table}.tocnumber,.toctext{display:table-cell}.tocnumber{padding-left:0;padding-right:0.5em}.mw-content-ltr .tocnumber{padding-left:0;padding-right:0.5em}.mw-content-rtl .tocnumber{padding-left:0.5em;padding-right:0}#footer{background:#fff;color:#000;margin-top:1em;border-top:1pt solid #aaa;direction:ltr}a{background:none !important;padding:0 !important}.mw-body-content a.external.text:after,.mw-body-content a.external.autonumber:after{content:' (' attr( href ) ')';word-break:break-all;word-wrap:break-word}.mw-body-content a.external.text[href^='//']:after,.mw-body-content a.external.autonumber[href^='//']:after{content:' (https:' attr( href ) ')'}a,a.external,a.new,a.stub{color:#000 !important;text-decoration:none !important;color:inherit !important;text-decoration:inherit !important}div.floatright{float:right;clear:right;position:relative;margin:0.5em 0 0.8em 1.4em}div.floatright p{font-style:italic}div.floatleft{float:left;clear:left;position:relative;margin:0.5em 1.4em 0.8em 0}div.floatleft p{font-style:italic}.center{text-align:center}div.thumb{background-color:transparent;border:0;width:auto;margin-top:0.5em;margin-bottom:0.8em}div.thumbinner{background-color:#fff;border:1pt solid #ccc;padding:3px;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{border:1pt solid #ccc}html .thumbcaption{border:0;text-align:left;line-height:1.4em;padding:3px;font-size:94%}div.tright{float:right;clear:right;margin:0.5em 0 0.8em 1.4em}div.tleft{float:left;clear:left;margin:0.5em 1.4em 0.8em 0}img.thumbborder{border:1pt solid #ddd}table.wikitable,table.mw_metadata{background:#fff;margin:1em 0;border:1pt solid #aaa;border-collapse:collapse}table.wikitable > tr > th,table.wikitable > tr > td,table.wikitable > * > tr > th,table.wikitable > * > tr > td,.mw_metadata th,.mw_metadata td{border:1pt solid #aaa;padding:0.2em}table.wikitable > tr > th,table.wikitable > * > tr > th,.mw_metadata th{background:#fff;font-weight:bold;text-align:center}table.wikitable > caption,.mw_metadata caption{font-weight:bold}table.listing,table.listing td{border:1pt solid #000;border-collapse:collapse}.catlinks ul{display:inline;padding:0;list-style:none none}.catlinks li{display:inline-block;line-height:1.15em;padding:0 0.4em;border-left:1pt solid #aaa;margin:0.1em 0}.catlinks li:first-child{padding-left:0.2em;border-left:0}.printfooter{padding:1em 0}}@media screen{.mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl}.sitedir-ltr textarea,.sitedir-ltr input{direction:ltr}.sitedir-rtl textarea,.sitedir-rtl input{direction:rtl}.mw-userlink{unicode-bidi:embed}mark{background-color:#ff0;color:#000}wbr{display:inline-block}input[type='submit'],input[type='button'],input[type='reset'],input[type='file']{direction:ltr}textarea[dir='ltr'],input[dir='ltr']{direction:ltr}textarea[dir='rtl'],input[dir='rtl']{direction:rtl}abbr[title],.explain[title]{border-bottom:1px dotted;cursor:help}@supports ( text-decoration:underline dotted ){abbr[title],.explain[title]{border-bottom:0;text-decoration:underline dotted}}span.comment{font-style:italic;unicode-bidi:-moz-isolate;unicode-bidi:isolate}#editform,#toolbar,#wpTextbox1{clear:both}.mw-editfont-default:not( textarea ){font-family:monospace}.mw-editfont-monospace{font-family:monospace}.mw-editfont-sans-serif{font-family:sans-serif}.mw-editfont-serif{font-family:serif}.mw-underline-always a{text-decoration:underline}.mw-underline-never a{text-decoration:none}li span.deleted,span.history-deleted{text-decoration:line-through;color:#888;font-style:italic}.not-patrolled{background-color:#ffa}.unpatrolled{font-weight:bold;color:#f00}div.patrollink{font-size:75%;text-align:right}td.mw-label{text-align:right;vertical-align:middle}td.mw-input{text-align:left}td.mw-submit{text-align:left;white-space:nowrap}.mw-input-with-label{white-space:nowrap;display:inline-block}.mw-content-ltr .thumbcaption{text-align:left}.mw-content-ltr .magnify{float:right}.mw-content-rtl .thumbcaption{text-align:right}.mw-content-rtl .magnify{float:left}#catlinks{text-align:left}.catlinks ul{display:inline;margin:0;padding:0;list-style:none;list-style-type:none;list-style-image:none;vertical-align:middle !ie}.catlinks li{display:inline-block;line-height:1.25em;border-left:1px solid #a2a9b1;margin:0.125em 0;padding:0 0.5em;zoom:1;display:inline !ie}.catlinks li:first-child{padding-left:0.25em;border-left:0}.catlinks li a.mw-redirect{font-style:italic}.mw-hidden-cats-hidden{display:none}.catlinks-allhidden{display:none}p.mw-protect-editreasons,p.mw-filedelete-editreasons,p.mw-delete-editreasons{font-size:90%;text-align:right}.autocomment{color:#808080}.newpage,.minoredit,.botedit{font-weight:bold}div.mw-warning-with-logexcerpt{padding:3px;margin-bottom:3px;border:2px solid #2a4b8d;clear:both}div.mw-warning-with-logexcerpt ul li{font-size:90%}span.mw-revdelundel-link,strong.mw-revdelundel-link{font-size:90%}span.mw-revdelundel-hidden,input.mw-revdelundel-hidden{visibility:hidden}td.mw-revdel-checkbox,th.mw-revdel-checkbox{padding-right:10px;text-align:center}a.new{color:#ba0000}a.mw-selflink{color:inherit;font-weight:bold;text-decoration:inherit}a.mw-selflink:hover{cursor:inherit;text-decoration:inherit}a.mw-selflink:active,a.mw-selflink:visited{color:inherit}.plainlinks a.external{background:none !important;padding:0 !important}.rtl a.external.free,.rtl a.external.autonumber{direction:ltr;unicode-bidi:embed}table.wikitable{margin:1em 0;background-color:#f8f9fa;border:1px solid #a2a9b1;border-collapse:collapse;color:#000}table.wikitable > tr > th,table.wikitable > tr > td,table.wikitable > * > tr > th,table.wikitable > * > tr > td{border:1px solid #a2a9b1;padding:0.2em 0.4em}table.wikitable > tr > th,table.wikitable > * > tr > th{background-color:#eaecf0;text-align:center}table.wikitable > caption{font-weight:bold}.error,.warning,.success{font-size:larger}.error{color:#c00}.warning{color:#705000}.success{color:#009000}.errorbox,.warningbox,.successbox{border:1px solid;padding:0.5em 1em;margin-bottom:1em;display:inline-block;zoom:1;*display:inline}.errorbox h2,.warningbox h2,.successbox h2{font-size:1em;color:inherit;font-weight:bold;display:inline;margin:0 0.5em 0 0;border:0}.errorbox{color:#c00;border-color:#fac5c5;background-color:#fae3e3}.warningbox{color:#705000;border-color:#fde29b;background-color:#fdf1d1}.successbox{color:#008000;border-color:#b7fdb5;background-color:#e1fddf}.mw-infobox{border:2px solid #ff7f00;margin:0.5em;clear:left;overflow:hidden}.mw-infobox-left{margin:7px;float:left;width:35px}.mw-infobox-right{margin:0.5em 0.5em 0.5em 49px}.previewnote{color:#c00;margin-bottom:1em}.previewnote p{text-indent:3em;margin:0.8em 0}.visualClear{clear:both}.mw-datatable{border-collapse:collapse}.mw-datatable,.mw-datatable td,.mw-datatable th{border:1px solid #a2a9b1;padding:0 0.15em 0 0.15em}.mw-datatable th{background-color:#ddf}.mw-datatable td{background-color:#fff}.mw-datatable tr:hover td{background-color:#eaf3ff}.mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:0.3em 0 0 1.6em;padding:0}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{margin:0.3em 1.6em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:0.3em 0 0 3.2em;padding:0}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{margin:0.3em 3.2em 0 0;padding:0}.mw-content-ltr dd,.mw-content-rtl .mw-content-ltr dd{margin-left:1.6em;margin-right:0}.mw-content-rtl dd,.mw-content-ltr .mw-content-rtl dd{margin-right:1.6em;margin-left:0}.mw-ajax-loader{background-image:url(/w/resources/src/mediawiki.legacy/images/ajax-loader.gif?57f34);background-position:center center;background-repeat:no-repeat;padding:16px;position:relative;top:-16px}.mw-small-spinner{padding:10px !important;margin-right:0.6em;background-image:url(/w/resources/src/mediawiki.legacy/images/spinner.gif?ca65b);background-position:center center;background-repeat:no-repeat}h1:lang( anp ),h1:lang( as ),h1:lang( bh ),h1:lang( bho ),h1:lang( bn ),h1:lang( gu ),h1:lang( hi ),h1:lang( kn ),h1:lang( ks ),h1:lang( ml ),h1:lang( mr ),h1:lang( my ),h1:lang( mai ),h1:lang( ne ),h1:lang( new ),h1:lang( or ),h1:lang( pa ),h1:lang( pi ),h1:lang( sa ),h1:lang( ta ),h1:lang( te ){line-height:1.6em !important}h2:lang( anp ),h3:lang( anp ),h4:lang( anp ),h5:lang( anp ),h6:lang( anp ),h2:lang( as ),h3:lang( as ),h4:lang( as ),h5:lang( as ),h6:lang( as ),h2:lang( bho ),h3:lang( bho ),h4:lang( bho ),h5:lang( bho ),h6:lang( bho ),h2:lang( bh ),h3:lang( bh ),h4:lang( bh ),h5:lang( bh ),h6:lang( bh ),h2:lang( bn ),h3:lang( bn ),h4:lang( bn ),h5:lang( bn ),h6:lang( bn ),h2:lang( gu ),h3:lang( gu ),h4:lang( gu ),h5:lang( gu ),h6:lang( gu ),h2:lang( hi ),h3:lang( hi ),h4:lang( hi ),h5:lang( hi ),h6:lang( hi ),h2:lang( kn ),h3:lang( kn ),h4:lang( kn ),h5:lang( kn ),h6:lang( kn ),h2:lang( ks ),h3:lang( ks ),h4:lang( ks ),h5:lang( ks ),h6:lang( ks ),h2:lang( ml ),h3:lang( ml ),h4:lang( ml ),h5:lang( ml ),h6:lang( ml ),h2:lang( mr ),h3:lang( mr ),h4:lang( mr ),h5:lang( mr ),h6:lang( mr ),h2:lang( my ),h3:lang( my ),h4:lang( my ),h5:lang( my ),h6:lang( my ),h2:lang( mai ),h3:lang( mai ),h4:lang( mai ),h5:lang( mai ),h6:lang( mai ),h2:lang( ne ),h3:lang( ne ),h4:lang( ne ),h5:lang( ne ),h6:lang( ne ),h2:lang( new ),h3:lang( new ),h4:lang( new ),h5:lang( new ),h6:lang( new ),h2:lang( or ),h3:lang( or ),h4:lang( or ),h5:lang( or ),h6:lang( or ),h2:lang( pa ),h3:lang( pa ),h4:lang( pa ),h5:lang( pa ),h6:lang( pa ),h2:lang( pi ),h3:lang( pi ),h4:lang( pi ),h5:lang( pi ),h6:lang( pi ),h2:lang( sa ),h3:lang( sa ),h4:lang( sa ),h5:lang( sa ),h6:lang( sa ),h2:lang( ta ),h3:lang( ta ),h4:lang( ta ),h5:lang( ta ),h6:lang( ta ),h2:lang( te ),h3:lang( te ),h4:lang( te ),h5:lang( te ),h6:lang( te ){line-height:1.2em}ol:lang( azb ) li,ol:lang( bcc ) li,ol:lang( bgn ) li,ol:lang( bqi ) li,ol:lang( fa ) li,ol:lang( glk ) li,ol:lang( kk-arab ) li,ol:lang( lrc ) li,ol:lang( luz ) li,ol:lang( mzn ) li{list-style-type:-moz-persian;list-style-type:persian}ol:lang( ckb ) li,ol:lang( sdh ) li{list-style-type:-moz-arabic-indic;list-style-type:arabic-indic}ol:lang( hi ) li,ol:lang( mr ) li,ol:lang( ne ) li{list-style-type:-moz-devanagari;list-style-type:devanagari}ol:lang( as ) li,ol:lang( bn ) li{list-style-type:-moz-bengali;list-style-type:bengali}ol:lang( or ) li{list-style-type:-moz-oriya;list-style-type:oriya}#toc ul,.toc ul{margin:0.3em 0}.mw-content-ltr .toc ul,.mw-content-ltr #toc ul,.mw-content-rtl .mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr #toc ul{text-align:left}.mw-content-rtl .toc ul,.mw-content-rtl #toc ul,.mw-content-ltr .mw-content-rtl .toc ul,.mw-content-ltr .mw-content-rtl #toc ul{text-align:right}.mw-content-ltr .toc ul ul,.mw-content-ltr #toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr #toc ul ul{margin:0 0 0 2em}.mw-content-rtl .toc ul ul,.mw-content-rtl #toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul,.mw-content-ltr .mw-content-rtl #toc ul ul{margin:0 2em 0 0}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{direction:ltr}#mw-clearyourcache,#mw-sitecsspreview,#mw-sitejspreview,#mw-usercsspreview,#mw-userjspreview{direction:ltr;unicode-bidi:embed}#mw-revision-info,#mw-revision-info-current,#mw-revision-nav{direction:ltr}div.tright,div.floatright,table.floatright{clear:right;float:right}div.tleft,div.floatleft,table.floatleft{float:left;clear:left}div.floatright,table.floatright,div.floatleft,table.floatleft{position:relative}#mw-credits a{unicode-bidi:embed}.mw-jump,#jump-to-nav{overflow:hidden;height:0;zoom:1}.printfooter{display:none}.xdebug-error{position:absolute;z-index:99}.mw-editsection,#jump-to-nav{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mw-editsection,.mw-editsection-like{font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;display:inline-block}.mw-content-ltr .mw-editsection,.mw-content-rtl .mw-content-ltr .mw-editsection{margin-left:1em}.mw-content-rtl .mw-editsection,.mw-content-ltr .mw-content-rtl .mw-editsection{margin-right:1em}sup,sub{line-height:1}}.mw-headline-anchor{display:none}@media screen{a{text-decoration:none;color:#0645ad;background:none}a:not( [href] ){cursor:pointer}a:visited{color:#0b0080}a:active{color:#faa700}a:hover,a:focus{text-decoration:underline}a:lang( ar ),a:lang( kk-arab ),a:lang( mzn ),a:lang( ps ),a:lang( ur ){text-decoration:none}a.stub{color:#723}a.new,#p-personal a.new{color:#ba0000}a.new:visited,#p-personal a.new:visited{color:#a55858}.mw-body-content a.extiw,.mw-body-content a.extiw:active{color:#36b}.mw-body-content a.extiw:visited{color:#636}.mw-body-content a.extiw:active{color:#b63}.mw-body-content a.external{color:#36b}.mw-body-content a.external:visited{color:#636}.mw-body-content a.external:active{color:#b63}.mw-body-content a.external.free{word-wrap:break-word}img{border:0;vertical-align:middle}hr{height:1px;color:#a2a9b1;background-color:#a2a9b1;border:0;margin:0.2em 0}h1,h2,h3,h4,h5,h6{color:#000;background:none;font-weight:normal;margin:0;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom:1px solid #a2a9b1}h1{font-size:188%}h2{font-size:150%}h3,h4,h5,h6{border-bottom:0;font-weight:bold}h3{font-size:128%}h4{font-size:116%}h5{font-size:108%}h6{font-size:100%}h1,h2{margin-bottom:0.6em}h3,h4,h5{margin-bottom:0.3em}p{margin:0.4em 0 0.5em 0}p img{margin:0}ul{list-style-type:square;margin:0.3em 0 0 1.6em;padding:0}ol{margin:0.3em 0 0 3.2em;padding:0;list-style-image:none}li{margin-bottom:0.1em}dt{font-weight:bold;margin-bottom:0.1em}dl{margin-top:0.2em;margin-bottom:0.5em}dd{margin-left:1.6em;margin-bottom:0.1em}pre,code,tt,kbd,samp,.mw-code{font-family:monospace,'Courier'}code{color:#000;background-color:#f8f9fa;border:1px solid #eaecf0;border-radius:2px;padding:1px 4px}pre,.mw-code{color:#000;background-color:#f8f9fa;border:1px solid #eaecf0;padding:1em;white-space:pre-wrap}table{font-size:100%}fieldset{border:1px solid #2a4b8d;margin:1em 0 1em 0;padding:0 1em 1em}fieldset.nested{margin:0 0 0.5em 0;padding:0 0.5em 0.5em}legend{padding:0.5em;font-size:95%}form{border:0;margin:0}textarea{width:100%;padding:0.1em;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.center{width:100%;text-align:center}*.center *{margin-left:auto;margin-right:auto}.small{font-size:94%}table.small{font-size:100%}#toc,.toc,.mw-warning,.toccolours{border:1px solid #a2a9b1;background-color:#f8f9fa;padding:5px;font-size:95%}#toc,.toc{display:inline-block;display:table;zoom:1;*display:inline;padding:7px}table#toc,table.toc{border-collapse:collapse}table#toc td,table.toc td{padding:0}#toc h2,.toc h2{display:inline;border:0;padding:0;font-size:100%;font-weight:bold}#toc #toctitle,.toc #toctitle,#toc .toctitle,.toc .toctitle{text-align:center}#toc ul,.toc ul{list-style-type:none;list-style-image:none;margin-left:0;padding:0;text-align:left}#toc ul ul,.toc ul ul{margin:0 0 0 2em}.tocnumber,.toctext{display:table-cell;text-decoration:inherit}.tocnumber{padding-left:0;padding-right:0.5em;color:#222}.mw-content-ltr .tocnumber{padding-left:0;padding-right:0.5em}.mw-content-rtl .tocnumber{padding-left:0.5em;padding-right:0}.mw-warning{margin-left:50px;margin-right:50px;text-align:center}div.floatright,table.floatright{margin:0 0 0.5em 0.5em}div.floatright p{font-style:italic}div.floatleft,table.floatleft{margin:0 0.5em 0.5em 0}div.floatleft p{font-style:italic}div.thumb{margin-bottom:0.5em;width:auto;background-color:transparent}div.thumbinner{border:1px solid #c8ccd1;padding:3px;background-color:#f8f9fa;font-size:94%;text-align:center;overflow:hidden}html .thumbimage{background-color:#fff;border:1px solid #c8ccd1}html .thumbcaption{border:0;line-height:1.4em;padding:3px;font-size:94%;text-align:left}div.magnify{float:right;margin-left:3px}div.magnify a{display:block;text-indent:15px;white-space:nowrap;overflow:hidden;width:15px;height:11px;background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704);background-image:linear-gradient( transparent,transparent ),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2011%2015%22%20width%3D%2215%22%20height%3D%2211%22%3E%0A%20%20%20%20%3Cg%20id%3D%22magnify-clip%22%20fill%3D%22%23fff%22%20stroke%3D%22%23000%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22bigbox%22%20d%3D%22M1.509%201.865h10.99v7.919h-10.99z%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22smallbox%22%20d%3D%22M-1.499%206.868h5.943v4.904h-5.943z%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}img.thumbborder{border:1px solid #eaecf0}.mw-content-ltr .thumbcaption{text-align:left}.mw-content-ltr .magnify{float:right;margin-left:3px;margin-right:0}.mw-content-ltr div.magnify a{background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704);background-image:linear-gradient( transparent,transparent ),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2011%2015%22%20width%3D%2215%22%20height%3D%2211%22%3E%0A%20%20%20%20%3Cg%20id%3D%22magnify-clip%22%20fill%3D%22%23fff%22%20stroke%3D%22%23000%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22bigbox%22%20d%3D%22M1.509%201.865h10.99v7.919h-10.99z%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22smallbox%22%20d%3D%22M-1.499%206.868h5.943v4.904h-5.943z%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A)}.mw-content-rtl .thumbcaption{text-align:right}.mw-content-rtl .magnify{float:left;margin-left:0;margin-right:3px}.mw-content-rtl div.magnify a{background-image:url(/w/resources/src/mediawiki.skinning/images/magnify-clip-rtl.png?a9fb3);background-image:linear-gradient( transparent,transparent ),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2011%2015%22%20width%3D%2215%22%20height%3D%2211%22%3E%0A%20%20%20%20%3Cg%20id%3D%22magnify-clip%22%20fill%3D%22%23fff%22%20stroke%3D%22%23000%22%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22bigbox%22%20d%3D%22M9.491%201.865h-10.99v7.919h10.99z%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cpath%20id%3D%22smallbox%22%20d%3D%22M12.499%206.868h-5.943v4.904h5.943z%22%2F%3E%0A%20%20%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A)}div.tright{margin:0.5em 0 1.3em 1.4em}div.tleft{margin:0.5em 1.4em 1.3em 0}body.mw-hide-empty-elt .mw-empty-elt{display:none}.catlinks{border:1px solid #a2a9b1;background-color:#f8f9fa;padding:5px;margin-top:1em;clear:both}textarea{border:1px solid #a2a9b1}.editOptions{background-color:#eaecf0;border:1px solid #c8ccd1;border-top:0;padding:1em 1em 1.5em 1em;margin-bottom:2em}.usermessage{background-color:#ffce7b;border:1px solid #ffa500;color:#000;font-weight:bold;margin:2em 0 1em;padding:0.5em 1em;vertical-align:middle}#siteNotice{position:relative;text-align:center;margin:0}#localNotice{margin-bottom:0.9em}.firstHeading{margin-bottom:0.1em;line-height:1.2em;padding-bottom:0}#siteSub{display:none}#jump-to-nav{margin-top:-1.4em;margin-bottom:1.4em}#contentSub,#contentSub2{font-size:84%;line-height:1.2em;margin:0 0 1.4em 1em;color:#545454;width:auto}span.subpages{display:block}}.mw-wiki-logo{background-image:url(/static/images/project-logos/eswiki.png)}@media (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(min-resolution:1.5dppx),(min-resolution:144dpi){.mw-wiki-logo{background-image:url(/static/images/project-logos/eswiki-1.5x.png);background-size:135px auto}}@media (-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(min-resolution:2dppx),(min-resolution:192dpi){.mw-wiki-logo{background-image:url(/static/images/project-logos/eswiki-2x.png);background-size:135px auto}}@media screen{html{font-size:100%}html,body{height:100%;margin:0;padding:0;font-family:sans-serif}body{background-color:#f6f6f6}.mw-body,.parsoid-body{padding:1em;background-color:#ffffff;color:#222222;direction:ltr}.mw-body{margin-left:10em;border:1px solid #a7d7f9;border-right-width:0;margin-top:-1px}.mw-body h1,.mw-body-content h1,.mw-body-content h2{font-family:'Linux Libertine','Georgia','Times',serif;line-height:1.3;margin-bottom:0.25em;padding:0}.mw-body h1:lang( ja ),.mw-body-content h1:lang( ja ),.mw-body-content h2:lang( ja ),.mw-body h1:lang( he ),.mw-body-content h1:lang( he ),.mw-body-content h2:lang( he ),.mw-body h1:lang( ko ),.mw-body-content h1:lang( ko ),.mw-body-content h2:lang( ko ){font-family:sans-serif}.mw-body h1,.mw-body-content h1{font-size:1.8em}.mw-body .firstHeading{overflow:visible}.mw-body .mw-indicators{float:right;line-height:1.6;font-size:0.875em;position:relative;z-index:1}.mw-body .mw-indicator{display:inline-block;zoom:1;*display:inline}.mw-body-content{position:relative;line-height:1.6;font-size:0.875em;z-index:0}.mw-body-content p{line-height:inherit;margin:0.5em 0}.mw-body-content h1{margin-top:1em}.mw-body-content h2{font-size:1.5em;margin-top:1em}.mw-body-content h3,.mw-body-content h4,.mw-body-content h5,.mw-body-content h6{line-height:1.6;margin-top:0.3em;margin-bottom:0;padding-bottom:0}.mw-body-content h3{font-size:1.2em}.mw-body-content h3,.mw-body-content h4{font-weight:bold}.mw-body-content h4,.mw-body-content h5,.mw-body-content h6{font-size:100%}.mw-body-content #toc h2,.mw-body-content .toc h2{font-size:100%;font-family:sans-serif}.mw-editsection,.mw-editsection-like{font-family:sans-serif}div.emptyPortlet{display:none}ul{list-style-type:disc;list-style-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%225%22%20height%3D%2213%22%3E%0A%3Ccircle%20cx%3D%222.5%22%20cy%3D%229.5%22%20r%3D%222.5%22%20fill%3D%22%2300528c%22%2F%3E%0A%3C%2Fsvg%3E%0A);list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAIAAADuXjPfAAAABnRSTlMA/wD/AP83WBt9AAAAHklEQVR4AWP4jwrowWcI6oEgEBtIISNCfFT9mOYDACO/lbNIGC/yAAAAAElFTkSuQmCC) \9;list-style-image:url(/w/skins/Vector/images/bullet-icon.png?e31f8) \9!ie}pre,.mw-code{line-height:1.3em}#siteNotice{font-size:0.8em}.redirectText{font-size:140%}.redirectMsg p{margin:0}#p-personal{position:absolute;top:0.33em;right:0.75em;z-index:100}#p-personal h3{display:none}#p-personal ul{list-style-type:none;list-style-image:none;margin:0;padding-left:10em}#p-personal li{line-height:1.125em;float:left;margin-left:0.75em;margin-top:0.5em;font-size:0.75em;white-space:nowrap}#pt-userpage,#pt-anonuserpage{background-position:left top;background-repeat:no-repeat;background-image:url(/w/skins/Vector/images/user-icon.png?13155);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3C%21DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%0A%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%0A%09width%3D%2212px%22%20height%3D%2213.836px%22%20viewBox%3D%220%200%2012%2013.836%22%20enable-background%3D%22new%200%200%2012%2013.836%22%20xml%3Aspace%3D%22preserve%22%3E%0A%3Cpath%20fill%3D%22%23777777%22%20d%3D%22M1.938%2C6.656c-1.32%2C1.485-1.47%2C3.15-0.97%2C4.25c0.323%2C0.707%2C0.78%2C1.127%2C1.313%2C1.375%0A%09c0.496%2C0.229%2C1.074%2C0.273%2C1.658%2C0.282c0.023%2C0%2C0.04%2C0.03%2C0.062%2C0.03h4.187c0.61%2C0%2C1.225-0.125%2C1.75-0.405%0A%09c0.527-0.28%2C0.961-0.718%2C1.188-1.376c0.335-0.964%2C0.175-2.529-1.094-4.03C9.094%2C7.954%2C7.68%2C8.719%2C6.065%2C8.719%0A%09c-1.677%2C0-3.182-0.812-4.125-2.063H1.938z%22%2F%3E%0A%3Cpath%20fill%3D%22%23777777%22%20d%3D%22M6.063%2C0c-1.89%2C0-3.595%2C1.674-3.594%2C3.563C2.467%2C5.45%2C4.173%2C7.155%2C6.06%2C7.155%0A%09c1.89%2C0%2C3.564-1.705%2C3.563-3.593C9.625%2C1.673%2C7.95%2C0%2C6.063%2C0L6.063%2C0z%22%2F%3E%0A%3C%2Fsvg%3E%0A);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/user-icon.png?13155);padding-left:15px !important}#pt-anonuserpage{color:#707070}#p-search{float:left;margin-right:0.5em;margin-left:0.5em}#p-search h3{display:block;position:absolute !important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}#p-search form,#p-search input{margin:0;margin-top:0.4em}div#simpleSearch{display:block;width:12.6em;width:20vw;min-width:5em;max-width:20em;padding-right:1.4em;height:1.4em;margin-top:0.65em;position:relative;min-height:1px;border:solid 1px #aaa;color:#000;background-color:#fff;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQCAIAAABY/YLgAAAAJUlEQVQIHQXBsQEAAAjDoND/73UWdnerhmHVsDQZJrNWVg3Dqge6bgMe6bejNAAAAABJRU5ErkJggg==);background-image:url(/w/skins/Vector/images/search-fade.png?50f7b)!ie;background-position:top left;background-repeat:repeat-x}div#simpleSearch input{margin:0;padding:0;border:0;background-color:transparent;color:#000}div#simpleSearch #searchInput{width:100%;padding:0.2em 0 0.2em 0.2em;font-size:13px;direction:ltr;-webkit-appearance:textfield}div#simpleSearch #searchInput:focus{outline:0}div#simpleSearch #searchInput::-webkit-input-placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput:-ms-input-placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput::-moz-placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput:-moz-placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput::placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput.placeholder{color:#72777d;opacity:1}div#simpleSearch #searchInput::-webkit-search-decoration,div#simpleSearch #searchInput::-webkit-search-cancel-button,div#simpleSearch #searchInput::-webkit-search-results-button,div#simpleSearch #searchInput::-webkit-search-results-decoration{-webkit-appearance:textfield}div#simpleSearch #searchButton,div#simpleSearch #mw-searchButton{position:absolute;top:0;right:0;width:1.65em;height:100%;cursor:pointer;text-indent:-99999px;line-height:1;direction:ltr;white-space:nowrap;overflow:hidden}div#simpleSearch #searchButton{background-image:url(/w/skins/Vector/images/search-ltr.png?39f97);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cg%20stroke-width%3D%222%22%20stroke%3D%22%236c6c6c%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M11.29%2011.71l-4-4%22%2F%3E%3Ccircle%20cx%3D%225%22%20cy%3D%225%22%20r%3D%224%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/search-ltr.png?39f97);background-position:center center;background-repeat:no-repeat}div#simpleSearch #mw-searchButton{z-index:1}div.vectorTabs h3{display:none}div.vectorTabs{float:left;height:2.5em;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAQ0lEQVR4AWVOhQEAIAzC/X+xAXbXeoDFGA3A9yk1n4juBROcUegfarWjP3ojZvEzxs6j+nygmo+zzsk79nY+tOxdEhlf3UHVgUFrVwAAAABJRU5ErkJggg==);background-image:url(/w/skins/Vector/images/tab-break.png?09d4b)!ie;background-position:bottom left;background-repeat:no-repeat;padding-left:1px}div.vectorTabs ul{float:left;height:100%;list-style-type:none;list-style-image:none;margin:0;padding:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAQ0lEQVR4AWVOhQEAIAzC/X+xAXbXeoDFGA3A9yk1n4juBROcUegfarWjP3ojZvEzxs6j+nygmo+zzsk79nY+tOxdEhlf3UHVgUFrVwAAAABJRU5ErkJggg==);background-image:url(/w/skins/Vector/images/tab-break.png?09d4b)!ie;background-position:right bottom;background-repeat:no-repeat}div.vectorTabs ul li{float:left;line-height:1.125em;display:inline-block;height:100%;margin:0;padding:0;background-color:#f3f3f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAIAAADITs03AAAAO0lEQVR4AeSKhREAMQzDdN5/5uixuEKDpqgBjl2f78wd2DVj1+26/h///PfteVMN7zoGebcg1/Y/ZQQAlAUtQCujIJMAAAAASUVORK5CYII=);background-image:url(/w/skins/Vector/images/tab-normal-fade.png?1cc52)!ie;background-position:bottom left;background-repeat:repeat-x;white-space:nowrap}div.vectorTabs ul > li{display:block}div.vectorTabs li{}div.vectorTabs li.new a,div.vectorTabs li.new a:visited{color:#a55858}div.vectorTabs li.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkAQAAAABvV2fNAAAADElEQVR4AWNoGB4QAInlMgFKeRKBAAAAAElFTkSuQmCC);background-image:url(/w/skins/Vector/images/tab-current-fade.png?22887)!ie}div.vectorTabs li.selected a,div.vectorTabs li.selected a:visited{color:#222;text-decoration:none}div.vectorTabs li.icon a{background-position:bottom right;background-repeat:no-repeat}div.vectorTabs li a{display:inline-block;height:1.9em;padding-left:0.5em;padding-right:0.5em;color:#0645ad;cursor:pointer;font-size:0.8em}div.vectorTabs li > a{display:block}div.vectorTabs span{display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAQ0lEQVR4AWVOhQEAIAzC/X+xAXbXeoDFGA3A9yk1n4juBROcUegfarWjP3ojZvEzxs6j+nygmo+zzsk79nY+tOxdEhlf3UHVgUFrVwAAAABJRU5ErkJggg==);background-image:url(/w/skins/Vector/images/tab-break.png?09d4b)!ie;background-position:bottom right;background-repeat:no-repeat;height:100%}div.vectorTabs span a{display:inline-block;padding-top:1.25em}div.vectorTabs span > a{float:left;display:block}div.vectorMenu{direction:ltr;float:left;cursor:pointer;position:relative}body.rtl div.vectorMenu{direction:rtl}div#mw-head div.vectorMenu h3{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAuCAIAAABmjeQ9AAAAQ0lEQVR4AWVOhQEAIAzC/X+xAXbXeoDFGA3A9yk1n4juBROcUegfarWjP3ojZvEzxs6j+nygmo+zzsk79nY+tOxdEhlf3UHVgUFrVwAAAABJRU5ErkJggg==);background-image:url(/w/skins/Vector/images/tab-break.png?09d4b)!ie;background-repeat:no-repeat;background-position:bottom right;font-size:1em;height:2.5em;padding-right:1px;margin-right:-1px}div.vectorMenu h3 span{display:block;font-size:0.8em;padding-left:0.7em;padding-top:1.375em;margin-right:20px;font-weight:normal;color:#4d4d4d}div.vectorMenu h3 a{position:absolute;top:0;right:0;width:20px;height:2.5em;background-image:url(/w/skins/Vector/images/arrow-down-icon.png?d72f0);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M15.502%206.001l-5%205.001-5-5.001z%22%20fill%3D%22%23797979%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/arrow-down-icon.png?d72f0);background-position:100% 70%;background-repeat:no-repeat;-webkit-transition:background-position 250ms;-moz-transition:background-position 250ms;transition:background-position 250ms}div.vectorMenu.menuForceShow h3 a{background-position:100% 100%}div.vectorMenuFocus h3 a{background-image:url(/w/skins/Vector/images/arrow-down-focus-icon.png?69899);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M15.502%206.001l-5%205.001-5-5.001z%22%20fill%3D%22%23929292%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/arrow-down-focus-icon.png?69899)}div.vectorMenu div.menu{min-width:100%;position:absolute;top:2.5em;left:-1px;background-color:#ffffff;border:1px solid #a2a9b1;border-top-width:0;clear:both;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:left;display:none;z-index:1}div.vectorMenu:hover div.menu,div.vectorMenu.menuForceShow div.menu{display:block}div.vectorMenu ul{list-style-type:none;list-style-image:none;padding:0;margin:0;text-align:left}div.vectorMenu ul,x:-moz-any-link{min-width:5em}div.vectorMenu ul,x:-moz-any-link,x:default{min-width:0}div.vectorMenu li{padding:0;margin:0;text-align:left;line-height:1em}div.vectorMenu li a{display:inline-block;padding:0.5em;white-space:nowrap;color:#0645ad;cursor:pointer;font-size:0.8em}div.vectorMenu li > a{display:block}div.vectorMenu li.selected a,div.vectorMenu li.selected a:visited{color:#222;text-decoration:none}* html div.vectorMenu div.menu{display:block;position:static;border:0}* html div#mw-head div.vectorMenu h3{display:none}* html div.vectorMenu li{float:left;line-height:1.125em;border-right:1px solid #a7d7f9}* html div.vectorMenu li a{padding-top:1.25em}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);transform:rotate(360deg)}}#ca-unwatch.icon a,#ca-watch.icon a{margin:0;padding:0;display:block;width:26px;padding-top:3.1em;margin-top:0;_margin-top:-0.8em;height:0;overflow:hidden;background-position:5px 60%}#ca-unwatch.icon a{background-image:url(/w/skins/Vector/images/unwatch-icon.png?fccbe);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23c2edff%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%2368bdff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20x1%3D%2213.47%22%20y1%3D%2214.363%22%20x2%3D%224.596%22%20y2%3D%223.397%22%20id%3D%22b%22%20xlink%3Ahref%3D%22%23a%22%20gradientUnits%3D%22userSpaceOnUse%22%2F%3E%3C%2Fdefs%3E%3Cpath%20d%3D%22M8.103%201.146l2.175%204.408%204.864.707-3.52%203.431.831%204.845-4.351-2.287-4.351%202.287.831-4.845-3.52-3.431%204.864-.707z%22%20fill%3D%22url%28%23b%29%22%20stroke%3D%22%237cb5d1%22%20stroke-width%3D%220.9999199999999999%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/unwatch-icon.png?fccbe)}#ca-watch.icon a{background-image:url(/w/skins/Vector/images/watch-icon.png?e1b42);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M8.103%201.146l2.175%204.408%204.864.707-3.52%203.431.831%204.845-4.351-2.287-4.351%202.287.831-4.845-3.52-3.431%204.864-.707z%22%20fill%3D%22%23fff%22%20stroke%3D%22%237cb5d1%22%20stroke-width%3D%220.9999199999999999%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/watch-icon.png?e1b42)}#ca-unwatch.icon a:hover,#ca-unwatch.icon a:focus{background-image:url(/w/skins/Vector/images/unwatch-icon-hl.png?c4723);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23c2edff%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%2368bdff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20x1%3D%2213.47%22%20y1%3D%2214.363%22%20x2%3D%224.596%22%20y2%3D%223.397%22%20id%3D%22b%22%20xlink%3Ahref%3D%22%23a%22%20gradientUnits%3D%22userSpaceOnUse%22%2F%3E%3C%2Fdefs%3E%3Cpath%20d%3D%22M8.103%201.146l2.175%204.408%204.864.707-3.52%203.431.831%204.845-4.351-2.287-4.351%202.287.831-4.845-3.52-3.431%204.864-.707z%22%20fill%3D%22url%28%23b%29%22%20stroke%3D%22%23c8b250%22%20stroke-width%3D%220.9999199999999999%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/unwatch-icon-hl.png?c4723)}#ca-watch.icon a:hover,#ca-watch.icon a:focus{background-image:url(/w/skins/Vector/images/watch-icon-hl.png?f4c7e);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M8.103%201.146l2.175%204.408%204.864.707-3.52%203.431.831%204.845-4.351-2.287-4.351%202.287.831-4.845-3.52-3.431%204.864-.707z%22%20fill%3D%22%23fff%22%20stroke%3D%22%23c8b250%22%20stroke-width%3D%220.9999199999999999%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/watch-icon-hl.png?f4c7e)}#ca-unwatch.icon a.loading,#ca-watch.icon a.loading{background-image:url(/w/skins/Vector/images/watch-icon-loading.png?5cb92);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M8.103%201.146l2.175%204.408%204.864.707-3.52%203.431.831%204.845-4.351-2.287-4.351%202.287.831-4.845-3.52-3.431%204.864-.707z%22%20fill%3D%22%23fff%22%20stroke%3D%22%23d1d1d1%22%20stroke-width%3D%220.9999199999999999%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/watch-icon-loading.png?5cb92);-webkit-animation:rotate 700ms infinite linear;-moz-animation:rotate 700ms infinite linear;-o-animation:rotate 700ms infinite linear;animation:rotate 700ms infinite linear;outline:0;cursor:default;pointer-events:none;background-position:50% 60%;-webkit-transform-origin:50% 57%;transform-origin:50% 57%}#ca-unwatch.icon a span,#ca-watch.icon a span{display:none}#mw-navigation h2{position:absolute;top:-9999px}#mw-page-base{height:5em;background-position:bottom left;background-repeat:repeat-x;background-image:url(/w/skins/Vector/images/page-fade.png?1d168);background-color:#f6f6f6;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#ffffff),color-stop(100%,#f6f6f6));background-image:-webkit-linear-gradient(top,#ffffff 50%,#f6f6f6 100%);background-image:-moz-linear-gradient(top,#ffffff 50%,#f6f6f6 100%);background-image:linear-gradient(#ffffff 50%,#f6f6f6 100%);background-color:#ffffff}#mw-head-base{margin-top:-5em;margin-left:10em;height:5em}div#mw-head{position:absolute;top:0;right:0;width:100%}div#mw-head h3{margin:0;padding:0}#left-navigation{float:left;margin-left:10em;margin-top:2.5em;margin-bottom:-2.5em;display:inline}#right-navigation{float:right;margin-top:2.5em}#p-logo{position:absolute;top:-160px;left:0;width:10em;height:160px}#p-logo a{display:block;width:10em;height:160px;background-repeat:no-repeat;background-position:center center;text-decoration:none}div#mw-panel{font-size:inherit;position:absolute;top:160px;padding-top:1em;width:10em;left:0}div#mw-panel div.portal{margin:0 0.6em 0 0.7em;padding:0.25em 0;direction:ltr;background-position:top left;background-repeat:no-repeat}div#mw-panel div.portal h3{font-size:0.75em;color:#4d4d4d;font-weight:normal;margin:0.5em 0 0 0;padding:0.25em 0 0.25em 0.7em;cursor:default;border:0}div#mw-panel div.portal div.body{margin:0 0 0 0.6em;padding-top:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAAABCAAAAAAphRnkAAAAJ0lEQVQIW7XFsQEAIAyAMPD/b7uLWz8wS5youFW1UREfiIpH1Q2VBz7fGPS1dOGeAAAAAElFTkSuQmCC);background-image:url(/w/skins/Vector/images/portal-break.png?3ea1b)!ie;background-repeat:no-repeat}div#mw-panel div.portal div.body ul{list-style-type:none;list-style-image:none;margin:0;padding:0.3em 0 0 0}div#mw-panel div.portal div.body ul li{line-height:1.125em;margin:0;padding:0.25em 0;font-size:0.75em;word-wrap:break-word}div#mw-panel div.portal div.body ul li a{color:#0645ad}div#mw-panel div.portal div.body ul li a:visited{color:#0b0080}div#mw-panel #p-logo + div.portal{background-image:none;margin-top:0}div#mw-panel #p-logo + div.portal h3{display:none}div#mw-panel #p-logo + div.portal div.body{background-image:none;margin-left:0.5em}div#footer{margin-left:10em;margin-top:0;padding:0.75em;direction:ltr}div#footer ul{list-style-type:none;list-style-image:none;margin:0;padding:0}div#footer ul li{margin:0;padding:0;padding-top:0.5em;padding-bottom:0.5em;color:#333;font-size:0.7em}div#footer #footer-icons{float:right}div#footer #footer-icons li{float:left;margin-left:0.5em;line-height:2em;text-align:right}div#footer #footer-info li{line-height:1.4em}div#footer #footer-places li{float:left;margin-right:1em;line-height:2em}body.ltr div#footer #footer-places{float:left}.mw-body-content .external{background-position:center right;background-repeat:no-repeat;background-image:url(/w/skins/Vector/images/external-link-ltr-icon.png?325de);background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%23fff%22%20stroke%3D%22%2306c%22%20d%3D%22M1.5%204.518h5.982V10.5H1.5z%22%2F%3E%3Cpath%20d%3D%22M5.765%201H11v5.39L9.427%207.937l-1.31-1.31L5.393%209.35l-2.69-2.688%202.81-2.808L4.2%202.544z%22%20fill%3D%22%2306f%22%2F%3E%3Cpath%20d%3D%22M9.995%202.004l.022%204.885L8.2%205.07%205.32%207.95%204.09%206.723l2.882-2.88-1.85-1.852z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E);background-image:-o-linear-gradient(transparent,transparent),url(/w/skins/Vector/images/external-link-ltr-icon.png?325de);padding-right:13px}}@media screen and (min-width:982px){.mw-body{margin-left:11em;padding:1.25em 1.5em 1.5em 1.5em}#p-logo{left:0.5em}div#footer{margin-left:11em;padding:1.25em}#mw-panel{padding-left:0.5em}#p-search{margin-right:1em}#left-navigation{margin-left:11em}#p-personal{right:1em}#mw-head-base{margin-left:11em}}.wb-langlinks-link{line-height:1.125em;font-size:0.75em;float:right}.wb-langlinks-link{list-style:none none;text-align:right;padding-right:0.5em !important}.wb-langlinks-link > a{padding-left:11px;background:no-repeat left center}.wb-langlinks-link > a:link,.wb-langlinks-link > a:visited{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAD1BMVEUZAAD///95eXmqqqrY2NjEIQ0cAAAAAXRSTlMAQObYZgAAACdJREFUCNdjYGBgYGIAASUFENNJCUiqmADZTM5OqExFFZAKRSG4YgBjcwODynSgDwAAAABJRU5ErkJggg==);background-image:url(/w/extensions/Wikidata/extensions/Wikibase/client/resources/images/WBC-Asset-Pencil.png?3bd62)!ie;color:#797979 !important}.wb-langlinks-link > a:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAAD1BMVEWBAADY2Nj///8GRa0zZrtW2AECAAAAAXRSTlMAQObYZgAAACdJREFUCNdjYGBgYGYAAWMDEFPYGEgaOgLZzCLCqEwjQ5AKI2W4YgBg5QOTQPzBuAAAAABJRU5ErkJggg==);background-image:url(/w/extensions/Wikidata/extensions/Wikibase/client/resources/images/WBC-Asset-Pencil-Hover.png?718b0)!ie;color:#0645ad !important}div.after-portlet-lang:after{content:'';clear:both;display:block} \ No newline at end of file diff --git a/dist/www/favicon.ico b/dist/www/favicon.ico new file mode 100644 index 000000000..3a94fa8e3 Binary files /dev/null and b/dist/www/favicon.ico differ diff --git a/dist/www/fonts/glyphicons-halflings-regular.eot b/dist/www/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 000000000..b93a4953f Binary files /dev/null and b/dist/www/fonts/glyphicons-halflings-regular.eot differ diff --git a/dist/www/fonts/glyphicons-halflings-regular.svg b/dist/www/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000..94fb5490a --- /dev/null +++ b/dist/www/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dist/www/fonts/glyphicons-halflings-regular.ttf b/dist/www/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 000000000..1413fc609 Binary files /dev/null and b/dist/www/fonts/glyphicons-halflings-regular.ttf differ diff --git a/dist/www/fonts/glyphicons-halflings-regular.woff b/dist/www/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 000000000..9e612858f Binary files /dev/null and b/dist/www/fonts/glyphicons-halflings-regular.woff differ diff --git a/dist/www/fonts/glyphicons-halflings-regular.woff2 b/dist/www/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 000000000..64539b54c Binary files /dev/null and b/dist/www/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/dist/www/img/Kiwix_icon_part_transparent_1200x1200.png b/dist/www/img/Kiwix_icon_part_transparent_1200x1200.png new file mode 100644 index 000000000..bc4ee174d Binary files /dev/null and b/dist/www/img/Kiwix_icon_part_transparent_1200x1200.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_1080x1080.png b/dist/www/img/Kiwix_icon_transparent_1080x1080.png new file mode 100644 index 000000000..0b4bd5b34 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_1080x1080.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_1200x1200.png b/dist/www/img/Kiwix_icon_transparent_1200x1200.png new file mode 100644 index 000000000..15d511929 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_1200x1200.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_1240x1240.png b/dist/www/img/Kiwix_icon_transparent_1240x1240.png new file mode 100644 index 000000000..ef1d12270 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_1240x1240.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_1240x600.png b/dist/www/img/Kiwix_icon_transparent_1240x600.png new file mode 100644 index 000000000..8fb4a3e1a Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_1240x600.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_310x150.png b/dist/www/img/Kiwix_icon_transparent_310x150.png new file mode 100644 index 000000000..0777590c3 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_310x150.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_388x188.png b/dist/www/img/Kiwix_icon_transparent_388x188.png new file mode 100644 index 000000000..89c5347b9 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_388x188.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_465x225.png b/dist/www/img/Kiwix_icon_transparent_465x225.png new file mode 100644 index 000000000..463d5d28b Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_465x225.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_545x545.png b/dist/www/img/Kiwix_icon_transparent_545x545.png new file mode 100644 index 000000000..846d63277 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_545x545.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_570x570.png b/dist/www/img/Kiwix_icon_transparent_570x570.png new file mode 100644 index 000000000..82286ed73 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_570x570.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_600x600.png b/dist/www/img/Kiwix_icon_transparent_600x600.png new file mode 100644 index 000000000..169920384 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_600x600.png differ diff --git a/dist/www/img/Kiwix_icon_transparent_620x300.png b/dist/www/img/Kiwix_icon_transparent_620x300.png new file mode 100644 index 000000000..7e9b1eca7 Binary files /dev/null and b/dist/www/img/Kiwix_icon_transparent_620x300.png differ diff --git a/dist/www/img/Kiwix_midnightblue_icon_transparent_545x545.png b/dist/www/img/Kiwix_midnightblue_icon_transparent_545x545.png new file mode 100644 index 000000000..ea4e302f1 Binary files /dev/null and b/dist/www/img/Kiwix_midnightblue_icon_transparent_545x545.png differ diff --git a/dist/www/img/icons/30px-Map_marker.svg.png b/dist/www/img/icons/30px-Map_marker.svg.png new file mode 100644 index 000000000..2833eefe2 Binary files /dev/null and b/dist/www/img/icons/30px-Map_marker.svg.png differ diff --git a/dist/www/img/icons/78px-Map_marker.svg.png b/dist/www/img/icons/78px-Map_marker.svg.png new file mode 100644 index 000000000..d4cde0fd2 Binary files /dev/null and b/dist/www/img/icons/78px-Map_marker.svg.png differ diff --git a/dist/www/img/icons/favicon-16x16.png b/dist/www/img/icons/favicon-16x16.png new file mode 100644 index 000000000..c38c6cd2f Binary files /dev/null and b/dist/www/img/icons/favicon-16x16.png differ diff --git a/dist/www/img/icons/favicon-192x192.png b/dist/www/img/icons/favicon-192x192.png new file mode 100644 index 000000000..b6ab778e4 Binary files /dev/null and b/dist/www/img/icons/favicon-192x192.png differ diff --git a/dist/www/img/icons/favicon-270x270.png b/dist/www/img/icons/favicon-270x270.png new file mode 100644 index 000000000..9e29b8e0e Binary files /dev/null and b/dist/www/img/icons/favicon-270x270.png differ diff --git a/dist/www/img/icons/favicon-32x32.png b/dist/www/img/icons/favicon-32x32.png new file mode 100644 index 000000000..461aa5ef4 Binary files /dev/null and b/dist/www/img/icons/favicon-32x32.png differ diff --git a/dist/www/img/icons/kiwix-120.png b/dist/www/img/icons/kiwix-120.png new file mode 100644 index 000000000..18d20ecc6 Binary files /dev/null and b/dist/www/img/icons/kiwix-120.png differ diff --git a/dist/www/img/icons/kiwix-1240.png b/dist/www/img/icons/kiwix-1240.png new file mode 100644 index 000000000..4a36b470c Binary files /dev/null and b/dist/www/img/icons/kiwix-1240.png differ diff --git a/dist/www/img/icons/kiwix-128.png b/dist/www/img/icons/kiwix-128.png new file mode 100644 index 000000000..7eb6ed42a Binary files /dev/null and b/dist/www/img/icons/kiwix-128.png differ diff --git a/dist/www/img/icons/kiwix-150.png b/dist/www/img/icons/kiwix-150.png new file mode 100644 index 000000000..5eaca0d83 Binary files /dev/null and b/dist/www/img/icons/kiwix-150.png differ diff --git a/dist/www/img/icons/kiwix-16.png b/dist/www/img/icons/kiwix-16.png new file mode 100644 index 000000000..5306ce278 Binary files /dev/null and b/dist/www/img/icons/kiwix-16.png differ diff --git a/dist/www/img/icons/kiwix-188.png b/dist/www/img/icons/kiwix-188.png new file mode 100644 index 000000000..8f73c066b Binary files /dev/null and b/dist/www/img/icons/kiwix-188.png differ diff --git a/dist/www/img/icons/kiwix-19.png b/dist/www/img/icons/kiwix-19.png new file mode 100644 index 000000000..54b1f838c Binary files /dev/null and b/dist/www/img/icons/kiwix-19.png differ diff --git a/dist/www/img/icons/kiwix-192.png b/dist/www/img/icons/kiwix-192.png new file mode 100644 index 000000000..8a8859f7a Binary files /dev/null and b/dist/www/img/icons/kiwix-192.png differ diff --git a/dist/www/img/icons/kiwix-225.png b/dist/www/img/icons/kiwix-225.png new file mode 100644 index 000000000..1f7ee1f39 Binary files /dev/null and b/dist/www/img/icons/kiwix-225.png differ diff --git a/dist/www/img/icons/kiwix-256.png b/dist/www/img/icons/kiwix-256.png new file mode 100644 index 000000000..6c31a8b2c Binary files /dev/null and b/dist/www/img/icons/kiwix-256.png differ diff --git a/dist/www/img/icons/kiwix-300.png b/dist/www/img/icons/kiwix-300.png new file mode 100644 index 000000000..9f88dc0b3 Binary files /dev/null and b/dist/www/img/icons/kiwix-300.png differ diff --git a/dist/www/img/icons/kiwix-310.png b/dist/www/img/icons/kiwix-310.png new file mode 100644 index 000000000..19d6491f2 Binary files /dev/null and b/dist/www/img/icons/kiwix-310.png differ diff --git a/dist/www/img/icons/kiwix-32.png b/dist/www/img/icons/kiwix-32.png new file mode 100644 index 000000000..9b8f1523c Binary files /dev/null and b/dist/www/img/icons/kiwix-32.png differ diff --git a/dist/www/img/icons/kiwix-38.png b/dist/www/img/icons/kiwix-38.png new file mode 100644 index 000000000..65d0088f5 Binary files /dev/null and b/dist/www/img/icons/kiwix-38.png differ diff --git a/dist/www/img/icons/kiwix-388.png b/dist/www/img/icons/kiwix-388.png new file mode 100644 index 000000000..7d74730eb Binary files /dev/null and b/dist/www/img/icons/kiwix-388.png differ diff --git a/dist/www/img/icons/kiwix-465.png b/dist/www/img/icons/kiwix-465.png new file mode 100644 index 000000000..938d14d9b Binary files /dev/null and b/dist/www/img/icons/kiwix-465.png differ diff --git a/dist/www/img/icons/kiwix-48.png b/dist/www/img/icons/kiwix-48.png new file mode 100644 index 000000000..1a52338fc Binary files /dev/null and b/dist/www/img/icons/kiwix-48.png differ diff --git a/dist/www/img/icons/kiwix-50.png b/dist/www/img/icons/kiwix-50.png new file mode 100644 index 000000000..3a12b9f51 Binary files /dev/null and b/dist/www/img/icons/kiwix-50.png differ diff --git a/dist/www/img/icons/kiwix-512.png b/dist/www/img/icons/kiwix-512.png new file mode 100644 index 000000000..ccaad9140 Binary files /dev/null and b/dist/www/img/icons/kiwix-512.png differ diff --git a/dist/www/img/icons/kiwix-60.png b/dist/www/img/icons/kiwix-60.png new file mode 100644 index 000000000..010ab8b22 Binary files /dev/null and b/dist/www/img/icons/kiwix-60.png differ diff --git a/dist/www/img/icons/kiwix-620.png b/dist/www/img/icons/kiwix-620.png new file mode 100644 index 000000000..e18641719 Binary files /dev/null and b/dist/www/img/icons/kiwix-620.png differ diff --git a/dist/www/img/icons/kiwix-64.ico b/dist/www/img/icons/kiwix-64.ico new file mode 100644 index 000000000..42eaee429 Binary files /dev/null and b/dist/www/img/icons/kiwix-64.ico differ diff --git a/dist/www/img/icons/kiwix-64.png b/dist/www/img/icons/kiwix-64.png new file mode 100644 index 000000000..d41eba389 Binary files /dev/null and b/dist/www/img/icons/kiwix-64.png differ diff --git a/dist/www/img/icons/kiwix-90.png b/dist/www/img/icons/kiwix-90.png new file mode 100644 index 000000000..32fd7646d Binary files /dev/null and b/dist/www/img/icons/kiwix-90.png differ diff --git a/dist/www/img/icons/kiwix-blue-32.png b/dist/www/img/icons/kiwix-blue-32.png new file mode 100644 index 000000000..085ab6b5e Binary files /dev/null and b/dist/www/img/icons/kiwix-blue-32.png differ diff --git a/dist/www/img/icons/kiwix-midnightblue-90.png b/dist/www/img/icons/kiwix-midnightblue-90.png new file mode 100644 index 000000000..3b73ce511 Binary files /dev/null and b/dist/www/img/icons/kiwix-midnightblue-90.png differ diff --git a/dist/www/img/icons/kiwix-trans-32.png b/dist/www/img/icons/kiwix-trans-32.png new file mode 100644 index 000000000..4ff890092 Binary files /dev/null and b/dist/www/img/icons/kiwix-trans-32.png differ diff --git a/dist/www/img/icons/kiwix_js_wikimed.ico b/dist/www/img/icons/kiwix_js_wikimed.ico new file mode 100644 index 000000000..12b6b3bfb Binary files /dev/null and b/dist/www/img/icons/kiwix_js_wikimed.ico differ diff --git a/dist/www/img/icons/map_marker-14px.png b/dist/www/img/icons/map_marker-14px.png new file mode 100644 index 000000000..ae957c80d Binary files /dev/null and b/dist/www/img/icons/map_marker-14px.png differ diff --git a/dist/www/img/icons/map_marker-14px_.png b/dist/www/img/icons/map_marker-14px_.png new file mode 100644 index 000000000..9fe439118 Binary files /dev/null and b/dist/www/img/icons/map_marker-14px_.png differ diff --git a/dist/www/img/icons/map_marker-16px.png b/dist/www/img/icons/map_marker-16px.png new file mode 100644 index 000000000..c5df32e29 Binary files /dev/null and b/dist/www/img/icons/map_marker-16px.png differ diff --git a/dist/www/img/icons/map_marker-18px.png b/dist/www/img/icons/map_marker-18px.png new file mode 100644 index 000000000..ce8b5a310 Binary files /dev/null and b/dist/www/img/icons/map_marker-18px.png differ diff --git a/dist/www/img/icons/map_marker-22px.png b/dist/www/img/icons/map_marker-22px.png new file mode 100644 index 000000000..2029ada0d Binary files /dev/null and b/dist/www/img/icons/map_marker-22px.png differ diff --git a/dist/www/img/icons/map_marker-30px.png b/dist/www/img/icons/map_marker-30px.png new file mode 100644 index 000000000..6dbf97030 Binary files /dev/null and b/dist/www/img/icons/map_marker-30px.png differ diff --git a/dist/www/img/icons/map_marker-50px.png b/dist/www/img/icons/map_marker-50px.png new file mode 100644 index 000000000..fe1d5fafa Binary files /dev/null and b/dist/www/img/icons/map_marker-50px.png differ diff --git a/dist/www/img/icons/new_window.svg b/dist/www/img/icons/new_window.svg new file mode 100644 index 000000000..e06709943 --- /dev/null +++ b/dist/www/img/icons/new_window.svg @@ -0,0 +1,8 @@ + + + + new window + + + + diff --git a/dist/www/img/icons/new_window_lb.svg b/dist/www/img/icons/new_window_lb.svg new file mode 100644 index 000000000..0a0e087e7 --- /dev/null +++ b/dist/www/img/icons/new_window_lb.svg @@ -0,0 +1,8 @@ + + + + new window + + + + diff --git a/dist/www/img/icons/wikimed-90.png b/dist/www/img/icons/wikimed-90.png new file mode 100644 index 000000000..264859b47 Binary files /dev/null and b/dist/www/img/icons/wikimed-90.png differ diff --git a/dist/www/img/icons/wikimed-blue-32.png b/dist/www/img/icons/wikimed-blue-32.png new file mode 100644 index 000000000..3f35c2440 Binary files /dev/null and b/dist/www/img/icons/wikimed-blue-32.png differ diff --git a/dist/www/img/icons/wikimed-lightblue-32.png b/dist/www/img/icons/wikimed-lightblue-32.png new file mode 100644 index 000000000..63c3d078c Binary files /dev/null and b/dist/www/img/icons/wikimed-lightblue-32.png differ diff --git a/dist/www/img/icons/wikimed-lightblue-64.ico b/dist/www/img/icons/wikimed-lightblue-64.ico new file mode 100644 index 000000000..9b6b0cf3d Binary files /dev/null and b/dist/www/img/icons/wikimed-lightblue-64.ico differ diff --git a/dist/www/img/icons/wikivoyage-60.png b/dist/www/img/icons/wikivoyage-60.png new file mode 100644 index 000000000..b1914940a Binary files /dev/null and b/dist/www/img/icons/wikivoyage-60.png differ diff --git a/dist/www/img/icons/wikivoyage-90-white.png b/dist/www/img/icons/wikivoyage-90-white.png new file mode 100644 index 000000000..9bbcf24f0 Binary files /dev/null and b/dist/www/img/icons/wikivoyage-90-white.png differ diff --git a/dist/www/img/icons/wikivoyage-90.png b/dist/www/img/icons/wikivoyage-90.png new file mode 100644 index 000000000..f7c1b870f Binary files /dev/null and b/dist/www/img/icons/wikivoyage-90.png differ diff --git a/dist/www/img/icons/wikivoyage-black-32.png b/dist/www/img/icons/wikivoyage-black-32.png new file mode 100644 index 000000000..bc81bf5c6 Binary files /dev/null and b/dist/www/img/icons/wikivoyage-black-32.png differ diff --git a/dist/www/img/icons/wikivoyage-white-32.png b/dist/www/img/icons/wikivoyage-white-32.png new file mode 100644 index 000000000..a6342146a Binary files /dev/null and b/dist/www/img/icons/wikivoyage-white-32.png differ diff --git a/dist/www/img/lightBlue.png b/dist/www/img/lightBlue.png new file mode 100644 index 000000000..87c7aa4d5 Binary files /dev/null and b/dist/www/img/lightBlue.png differ diff --git a/dist/www/img/spinner.gif b/dist/www/img/spinner.gif new file mode 100644 index 000000000..75ffff3a1 Binary files /dev/null and b/dist/www/img/spinner.gif differ diff --git a/dist/www/index.html b/dist/www/index.html new file mode 100644 index 000000000..746ec6f6c --- /dev/null +++ b/dist/www/index.html @@ -0,0 +1,1299 @@ + + + + + + Kiwix JS PWA + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ + +
+ You can search the content of your ZIM archive by typing in the above search field. +
It will suggest articles starting with the letters you type. +
+ + +
+ + + + +
+
+ +
+ + +
+
+ + + + + diff --git a/dist/www/js/bundle.js b/dist/www/js/bundle.js new file mode 100644 index 000000000..f0af31653 --- /dev/null +++ b/dist/www/js/bundle.js @@ -0,0 +1,46741 @@ +var KiwixJSBundle = (function () { + 'use strict'; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + var check = function (it) { + return it && it.Math == Math && it; + }; + + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global$M = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof commonjsGlobal == 'object' && commonjsGlobal) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || commonjsGlobal || Function('return this')(); + + var objectGetOwnPropertyDescriptor = {}; + + var fails$T = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + + var fails$S = fails$T; + + // Detect IE8's incomplete defineProperty implementation + var descriptors = !fails$S(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; + }); + + var fails$R = fails$T; + + var functionBindNative = !fails$R(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); + }); + + var NATIVE_BIND$3 = functionBindNative; + + var call$x = Function.prototype.call; + + var functionCall = NATIVE_BIND$3 ? call$x.bind(call$x) : function () { + return call$x.apply(call$x, arguments); + }; + + var objectPropertyIsEnumerable = {}; + + var $propertyIsEnumerable$1 = {}.propertyIsEnumerable; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$6 = Object.getOwnPropertyDescriptor; + + // Nashorn ~ JDK8 bug + var NASHORN_BUG = getOwnPropertyDescriptor$6 && !$propertyIsEnumerable$1.call({ 1: 2 }, 1); + + // `Object.prototype.propertyIsEnumerable` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable + objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor$6(this, V); + return !!descriptor && descriptor.enumerable; + } : $propertyIsEnumerable$1; + + var createPropertyDescriptor$a = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var NATIVE_BIND$2 = functionBindNative; + + var FunctionPrototype$3 = Function.prototype; + var call$w = FunctionPrototype$3.call; + var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$3.bind.bind(call$w, call$w); + + var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) { + return function () { + return call$w.apply(fn, arguments); + }; + }; + + var uncurryThis$S = functionUncurryThis; + + var toString$o = uncurryThis$S({}.toString); + var stringSlice$e = uncurryThis$S(''.slice); + + var classofRaw$2 = function (it) { + return stringSlice$e(toString$o(it), 8, -1); + }; + + var uncurryThis$R = functionUncurryThis; + var fails$Q = fails$T; + var classof$j = classofRaw$2; + + var $Object$4 = Object; + var split$3 = uncurryThis$R(''.split); + + // fallback for non-array-like ES3 and non-enumerable old V8 strings + var indexedObject = fails$Q(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object$4('z').propertyIsEnumerable(0); + }) ? function (it) { + return classof$j(it) == 'String' ? split$3(it, '') : $Object$4(it); + } : $Object$4; + + // we can't use just `it == null` since of `document.all` special case + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec + var isNullOrUndefined$b = function (it) { + return it === null || it === undefined; + }; + + var isNullOrUndefined$a = isNullOrUndefined$b; + + var $TypeError$m = TypeError; + + // `RequireObjectCoercible` abstract operation + // https://tc39.es/ecma262/#sec-requireobjectcoercible + var requireObjectCoercible$b = function (it) { + if (isNullOrUndefined$a(it)) throw $TypeError$m("Can't call method on " + it); + return it; + }; + + // toObject with fallback for non-array-like ES3 strings + var IndexedObject$5 = indexedObject; + var requireObjectCoercible$a = requireObjectCoercible$b; + + var toIndexedObject$b = function (it) { + return IndexedObject$5(requireObjectCoercible$a(it)); + }; + + var documentAll$2 = typeof document == 'object' && document.all; + + // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot + // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing + var IS_HTMLDDA = typeof documentAll$2 == 'undefined' && documentAll$2 !== undefined; + + var documentAll_1 = { + all: documentAll$2, + IS_HTMLDDA: IS_HTMLDDA + }; + + var $documentAll$1 = documentAll_1; + + var documentAll$1 = $documentAll$1.all; + + // `IsCallable` abstract operation + // https://tc39.es/ecma262/#sec-iscallable + var isCallable$w = $documentAll$1.IS_HTMLDDA ? function (argument) { + return typeof argument == 'function' || argument === documentAll$1; + } : function (argument) { + return typeof argument == 'function'; + }; + + var isCallable$v = isCallable$w; + var $documentAll = documentAll_1; + + var documentAll = $documentAll.all; + + var isObject$l = $documentAll.IS_HTMLDDA ? function (it) { + return typeof it == 'object' ? it !== null : isCallable$v(it) || it === documentAll; + } : function (it) { + return typeof it == 'object' ? it !== null : isCallable$v(it); + }; + + var global$L = global$M; + var isCallable$u = isCallable$w; + + var aFunction = function (argument) { + return isCallable$u(argument) ? argument : undefined; + }; + + var getBuiltIn$f = function (namespace, method) { + return arguments.length < 2 ? aFunction(global$L[namespace]) : global$L[namespace] && global$L[namespace][method]; + }; + + var uncurryThis$Q = functionUncurryThis; + + var objectIsPrototypeOf = uncurryThis$Q({}.isPrototypeOf); + + var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; + + var global$K = global$M; + var userAgent$5 = engineUserAgent; + + var process$4 = global$K.process; + var Deno$1 = global$K.Deno; + var versions = process$4 && process$4.versions || Deno$1 && Deno$1.version; + var v8 = versions && versions.v8; + var match, version; + + if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); + } + + // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` + // so check `userAgent` even if `.v8` exists, but 0 + if (!version && userAgent$5) { + match = userAgent$5.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent$5.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } + } + + var engineV8Version = version; + + /* eslint-disable es/no-symbol -- required for testing */ + + var V8_VERSION$3 = engineV8Version; + var fails$P = fails$T; + var global$J = global$M; + + var $String$7 = global$J.String; + + // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing + var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$P(function () { + var symbol = Symbol(); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String$7(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION$3 && V8_VERSION$3 < 41; + }); + + /* eslint-disable es/no-symbol -- required for testing */ + + var NATIVE_SYMBOL$6 = symbolConstructorDetection; + + var useSymbolAsUid = NATIVE_SYMBOL$6 + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + + var getBuiltIn$e = getBuiltIn$f; + var isCallable$t = isCallable$w; + var isPrototypeOf$a = objectIsPrototypeOf; + var USE_SYMBOL_AS_UID$1 = useSymbolAsUid; + + var $Object$3 = Object; + + var isSymbol$6 = USE_SYMBOL_AS_UID$1 ? function (it) { + return typeof it == 'symbol'; + } : function (it) { + var $Symbol = getBuiltIn$e('Symbol'); + return isCallable$t($Symbol) && isPrototypeOf$a($Symbol.prototype, $Object$3(it)); + }; + + var $String$6 = String; + + var tryToString$7 = function (argument) { + try { + return $String$6(argument); + } catch (error) { + return 'Object'; + } + }; + + var isCallable$s = isCallable$w; + var tryToString$6 = tryToString$7; + + var $TypeError$l = TypeError; + + // `Assert: IsCallable(argument) is true` + var aCallable$c = function (argument) { + if (isCallable$s(argument)) return argument; + throw $TypeError$l(tryToString$6(argument) + ' is not a function'); + }; + + var aCallable$b = aCallable$c; + var isNullOrUndefined$9 = isNullOrUndefined$b; + + // `GetMethod` abstract operation + // https://tc39.es/ecma262/#sec-getmethod + var getMethod$8 = function (V, P) { + var func = V[P]; + return isNullOrUndefined$9(func) ? undefined : aCallable$b(func); + }; + + var call$v = functionCall; + var isCallable$r = isCallable$w; + var isObject$k = isObject$l; + + var $TypeError$k = TypeError; + + // `OrdinaryToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-ordinarytoprimitive + var ordinaryToPrimitive$1 = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable$r(fn = input.toString) && !isObject$k(val = call$v(fn, input))) return val; + if (isCallable$r(fn = input.valueOf) && !isObject$k(val = call$v(fn, input))) return val; + if (pref !== 'string' && isCallable$r(fn = input.toString) && !isObject$k(val = call$v(fn, input))) return val; + throw $TypeError$k("Can't convert object to primitive value"); + }; + + var shared$7 = {exports: {}}; + + var isPure = false; + + var global$I = global$M; + + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty$c = Object.defineProperty; + + var defineGlobalProperty$3 = function (key, value) { + try { + defineProperty$c(global$I, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global$I[key] = value; + } return value; + }; + + var global$H = global$M; + var defineGlobalProperty$2 = defineGlobalProperty$3; + + var SHARED = '__core-js_shared__'; + var store$3 = global$H[SHARED] || defineGlobalProperty$2(SHARED, {}); + + var sharedStore = store$3; + + var store$2 = sharedStore; + + (shared$7.exports = function (key, value) { + return store$2[key] || (store$2[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: '3.30.2', + mode: 'global', + copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE', + source: 'https://github.com/zloirock/core-js' + }); + + var sharedExports = shared$7.exports; + + var requireObjectCoercible$9 = requireObjectCoercible$b; + + var $Object$2 = Object; + + // `ToObject` abstract operation + // https://tc39.es/ecma262/#sec-toobject + var toObject$j = function (argument) { + return $Object$2(requireObjectCoercible$9(argument)); + }; + + var uncurryThis$P = functionUncurryThis; + var toObject$i = toObject$j; + + var hasOwnProperty = uncurryThis$P({}.hasOwnProperty); + + // `HasOwnProperty` abstract operation + // https://tc39.es/ecma262/#sec-hasownproperty + // eslint-disable-next-line es/no-object-hasown -- safe + var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject$i(it), key); + }; + + var uncurryThis$O = functionUncurryThis; + + var id$1 = 0; + var postfix = Math.random(); + var toString$n = uncurryThis$O(1.0.toString); + + var uid$5 = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$n(++id$1 + postfix, 36); + }; + + var global$G = global$M; + var shared$6 = sharedExports; + var hasOwn$q = hasOwnProperty_1; + var uid$4 = uid$5; + var NATIVE_SYMBOL$5 = symbolConstructorDetection; + var USE_SYMBOL_AS_UID = useSymbolAsUid; + + var Symbol$3 = global$G.Symbol; + var WellKnownSymbolsStore$1 = shared$6('wks'); + var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$3['for'] || Symbol$3 : Symbol$3 && Symbol$3.withoutSetter || uid$4; + + var wellKnownSymbol$v = function (name) { + if (!hasOwn$q(WellKnownSymbolsStore$1, name)) { + WellKnownSymbolsStore$1[name] = NATIVE_SYMBOL$5 && hasOwn$q(Symbol$3, name) + ? Symbol$3[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore$1[name]; + }; + + var call$u = functionCall; + var isObject$j = isObject$l; + var isSymbol$5 = isSymbol$6; + var getMethod$7 = getMethod$8; + var ordinaryToPrimitive = ordinaryToPrimitive$1; + var wellKnownSymbol$u = wellKnownSymbol$v; + + var $TypeError$j = TypeError; + var TO_PRIMITIVE = wellKnownSymbol$u('toPrimitive'); + + // `ToPrimitive` abstract operation + // https://tc39.es/ecma262/#sec-toprimitive + var toPrimitive$3 = function (input, pref) { + if (!isObject$j(input) || isSymbol$5(input)) return input; + var exoticToPrim = getMethod$7(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call$u(exoticToPrim, input, pref); + if (!isObject$j(result) || isSymbol$5(result)) return result; + throw $TypeError$j("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); + }; + + var toPrimitive$2 = toPrimitive$3; + var isSymbol$4 = isSymbol$6; + + // `ToPropertyKey` abstract operation + // https://tc39.es/ecma262/#sec-topropertykey + var toPropertyKey$5 = function (argument) { + var key = toPrimitive$2(argument, 'string'); + return isSymbol$4(key) ? key : key + ''; + }; + + var global$F = global$M; + var isObject$i = isObject$l; + + var document$3 = global$F.document; + // typeof document.createElement is 'object' in old IE + var EXISTS$1 = isObject$i(document$3) && isObject$i(document$3.createElement); + + var documentCreateElement$2 = function (it) { + return EXISTS$1 ? document$3.createElement(it) : {}; + }; + + var DESCRIPTORS$t = descriptors; + var fails$O = fails$T; + var createElement$1 = documentCreateElement$2; + + // Thanks to IE8 for its funny defineProperty + var ie8DomDefine = !DESCRIPTORS$t && !fails$O(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement$1('div'), 'a', { + get: function () { return 7; } + }).a != 7; + }); + + var DESCRIPTORS$s = descriptors; + var call$t = functionCall; + var propertyIsEnumerableModule$2 = objectPropertyIsEnumerable; + var createPropertyDescriptor$9 = createPropertyDescriptor$a; + var toIndexedObject$a = toIndexedObject$b; + var toPropertyKey$4 = toPropertyKey$5; + var hasOwn$p = hasOwnProperty_1; + var IE8_DOM_DEFINE$1 = ie8DomDefine; + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor; + + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor + objectGetOwnPropertyDescriptor.f = DESCRIPTORS$s ? $getOwnPropertyDescriptor$2 : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject$a(O); + P = toPropertyKey$4(P); + if (IE8_DOM_DEFINE$1) try { + return $getOwnPropertyDescriptor$2(O, P); + } catch (error) { /* empty */ } + if (hasOwn$p(O, P)) return createPropertyDescriptor$9(!call$t(propertyIsEnumerableModule$2.f, O, P), O[P]); + }; + + var objectDefineProperty = {}; + + var DESCRIPTORS$r = descriptors; + var fails$N = fails$T; + + // V8 ~ Chrome 36- + // https://bugs.chromium.org/p/v8/issues/detail?id=3334 + var v8PrototypeDefineBug = DESCRIPTORS$r && fails$N(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype != 42; + }); + + var isObject$h = isObject$l; + + var $String$5 = String; + var $TypeError$i = TypeError; + + // `Assert: Type(argument) is Object` + var anObject$o = function (argument) { + if (isObject$h(argument)) return argument; + throw $TypeError$i($String$5(argument) + ' is not an object'); + }; + + var DESCRIPTORS$q = descriptors; + var IE8_DOM_DEFINE = ie8DomDefine; + var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug; + var anObject$n = anObject$o; + var toPropertyKey$3 = toPropertyKey$5; + + var $TypeError$h = TypeError; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var $defineProperty$1 = Object.defineProperty; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor; + var ENUMERABLE = 'enumerable'; + var CONFIGURABLE$1 = 'configurable'; + var WRITABLE = 'writable'; + + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + objectDefineProperty.f = DESCRIPTORS$q ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O, P, Attributes) { + anObject$n(O); + P = toPropertyKey$3(P); + anObject$n(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor$1(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty$1(O, P, Attributes); + } : $defineProperty$1 : function defineProperty(O, P, Attributes) { + anObject$n(O); + P = toPropertyKey$3(P); + anObject$n(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty$1(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw $TypeError$h('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; + }; + + var DESCRIPTORS$p = descriptors; + var definePropertyModule$6 = objectDefineProperty; + var createPropertyDescriptor$8 = createPropertyDescriptor$a; + + var createNonEnumerableProperty$d = DESCRIPTORS$p ? function (object, key, value) { + return definePropertyModule$6.f(object, key, createPropertyDescriptor$8(1, value)); + } : function (object, key, value) { + object[key] = value; + return object; + }; + + var makeBuiltIn$3 = {exports: {}}; + + var DESCRIPTORS$o = descriptors; + var hasOwn$o = hasOwnProperty_1; + + var FunctionPrototype$2 = Function.prototype; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getDescriptor = DESCRIPTORS$o && Object.getOwnPropertyDescriptor; + + var EXISTS = hasOwn$o(FunctionPrototype$2, 'name'); + // additional protection from minified / mangled / dropped function names + var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; + var CONFIGURABLE = EXISTS && (!DESCRIPTORS$o || (DESCRIPTORS$o && getDescriptor(FunctionPrototype$2, 'name').configurable)); + + var functionName = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE + }; + + var uncurryThis$N = functionUncurryThis; + var isCallable$q = isCallable$w; + var store$1 = sharedStore; + + var functionToString$1 = uncurryThis$N(Function.toString); + + // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper + if (!isCallable$q(store$1.inspectSource)) { + store$1.inspectSource = function (it) { + return functionToString$1(it); + }; + } + + var inspectSource$3 = store$1.inspectSource; + + var global$E = global$M; + var isCallable$p = isCallable$w; + + var WeakMap$2 = global$E.WeakMap; + + var weakMapBasicDetection = isCallable$p(WeakMap$2) && /native code/.test(String(WeakMap$2)); + + var shared$5 = sharedExports; + var uid$3 = uid$5; + + var keys$2 = shared$5('keys'); + + var sharedKey$4 = function (key) { + return keys$2[key] || (keys$2[key] = uid$3(key)); + }; + + var hiddenKeys$6 = {}; + + var NATIVE_WEAK_MAP = weakMapBasicDetection; + var global$D = global$M; + var isObject$g = isObject$l; + var createNonEnumerableProperty$c = createNonEnumerableProperty$d; + var hasOwn$n = hasOwnProperty_1; + var shared$4 = sharedStore; + var sharedKey$3 = sharedKey$4; + var hiddenKeys$5 = hiddenKeys$6; + + var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; + var TypeError$7 = global$D.TypeError; + var WeakMap$1 = global$D.WeakMap; + var set$2, get$1, has; + + var enforce = function (it) { + return has(it) ? get$1(it) : set$2(it, {}); + }; + + var getterFor$1 = function (TYPE) { + return function (it) { + var state; + if (!isObject$g(it) || (state = get$1(it)).type !== TYPE) { + throw TypeError$7('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; + }; + + if (NATIVE_WEAK_MAP || shared$4.state) { + var store = shared$4.state || (shared$4.state = new WeakMap$1()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set$2 = function (it, metadata) { + if (store.has(it)) throw TypeError$7(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get$1 = function (it) { + return store.get(it) || {}; + }; + has = function (it) { + return store.has(it); + }; + } else { + var STATE = sharedKey$3('state'); + hiddenKeys$5[STATE] = true; + set$2 = function (it, metadata) { + if (hasOwn$n(it, STATE)) throw TypeError$7(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty$c(it, STATE, metadata); + return metadata; + }; + get$1 = function (it) { + return hasOwn$n(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn$n(it, STATE); + }; + } + + var internalState = { + set: set$2, + get: get$1, + has: has, + enforce: enforce, + getterFor: getterFor$1 + }; + + var uncurryThis$M = functionUncurryThis; + var fails$M = fails$T; + var isCallable$o = isCallable$w; + var hasOwn$m = hasOwnProperty_1; + var DESCRIPTORS$n = descriptors; + var CONFIGURABLE_FUNCTION_NAME$2 = functionName.CONFIGURABLE; + var inspectSource$2 = inspectSource$3; + var InternalStateModule$b = internalState; + + var enforceInternalState$3 = InternalStateModule$b.enforce; + var getInternalState$9 = InternalStateModule$b.get; + var $String$4 = String; + // eslint-disable-next-line es/no-object-defineproperty -- safe + var defineProperty$b = Object.defineProperty; + var stringSlice$d = uncurryThis$M(''.slice); + var replace$b = uncurryThis$M(''.replace); + var join$4 = uncurryThis$M([].join); + + var CONFIGURABLE_LENGTH = DESCRIPTORS$n && !fails$M(function () { + return defineProperty$b(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; + }); + + var TEMPLATE = String(String).split('String'); + + var makeBuiltIn$2 = makeBuiltIn$3.exports = function (value, name, options) { + if (stringSlice$d($String$4(name), 0, 7) === 'Symbol(') { + name = '[' + replace$b($String$4(name), /^Symbol\(([^)]*)\)/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn$m(value, 'name') || (CONFIGURABLE_FUNCTION_NAME$2 && value.name !== name)) { + if (DESCRIPTORS$n) defineProperty$b(value, 'name', { value: name, configurable: true }); + else value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn$m(options, 'arity') && value.length !== options.arity) { + defineProperty$b(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn$m(options, 'constructor') && options.constructor) { + if (DESCRIPTORS$n) defineProperty$b(value, 'prototype', { writable: false }); + // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable + } else if (value.prototype) value.prototype = undefined; + } catch (error) { /* empty */ } + var state = enforceInternalState$3(value); + if (!hasOwn$m(state, 'source')) { + state.source = join$4(TEMPLATE, typeof name == 'string' ? name : ''); + } return value; + }; + + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + // eslint-disable-next-line no-extend-native -- required + Function.prototype.toString = makeBuiltIn$2(function toString() { + return isCallable$o(this) && getInternalState$9(this).source || inspectSource$2(this); + }, 'toString'); + + var makeBuiltInExports = makeBuiltIn$3.exports; + + var isCallable$n = isCallable$w; + var definePropertyModule$5 = objectDefineProperty; + var makeBuiltIn$1 = makeBuiltInExports; + var defineGlobalProperty$1 = defineGlobalProperty$3; + + var defineBuiltIn$h = function (O, key, value, options) { + if (!options) options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable$n(value)) makeBuiltIn$1(value, name, options); + if (options.global) { + if (simple) O[key] = value; + else defineGlobalProperty$1(key, value); + } else { + try { + if (!options.unsafe) delete O[key]; + else if (O[key]) simple = true; + } catch (error) { /* empty */ } + if (simple) O[key] = value; + else definePropertyModule$5.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } return O; + }; + + var objectGetOwnPropertyNames = {}; + + var ceil = Math.ceil; + var floor$9 = Math.floor; + + // `Math.trunc` method + // https://tc39.es/ecma262/#sec-math.trunc + // eslint-disable-next-line es/no-math-trunc -- safe + var mathTrunc = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor$9 : ceil)(n); + }; + + var trunc$1 = mathTrunc; + + // `ToIntegerOrInfinity` abstract operation + // https://tc39.es/ecma262/#sec-tointegerorinfinity + var toIntegerOrInfinity$f = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc$1(number); + }; + + var toIntegerOrInfinity$e = toIntegerOrInfinity$f; + + var max$5 = Math.max; + var min$7 = Math.min; + + // Helper for a popular repeating case of the spec: + // Let integer be ? ToInteger(index). + // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + var toAbsoluteIndex$8 = function (index, length) { + var integer = toIntegerOrInfinity$e(index); + return integer < 0 ? max$5(integer + length, 0) : min$7(integer, length); + }; + + var toIntegerOrInfinity$d = toIntegerOrInfinity$f; + + var min$6 = Math.min; + + // `ToLength` abstract operation + // https://tc39.es/ecma262/#sec-tolength + var toLength$a = function (argument) { + return argument > 0 ? min$6(toIntegerOrInfinity$d(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 + }; + + var toLength$9 = toLength$a; + + // `LengthOfArrayLike` abstract operation + // https://tc39.es/ecma262/#sec-lengthofarraylike + var lengthOfArrayLike$o = function (obj) { + return toLength$9(obj.length); + }; + + var toIndexedObject$9 = toIndexedObject$b; + var toAbsoluteIndex$7 = toAbsoluteIndex$8; + var lengthOfArrayLike$n = lengthOfArrayLike$o; + + // `Array.prototype.{ indexOf, includes }` methods implementation + var createMethod$5 = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject$9($this); + var length = lengthOfArrayLike$n(O); + var index = toAbsoluteIndex$7(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; + }; + + var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod$5(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod$5(false) + }; + + var uncurryThis$L = functionUncurryThis; + var hasOwn$l = hasOwnProperty_1; + var toIndexedObject$8 = toIndexedObject$b; + var indexOf$2 = arrayIncludes.indexOf; + var hiddenKeys$4 = hiddenKeys$6; + + var push$9 = uncurryThis$L([].push); + + var objectKeysInternal = function (object, names) { + var O = toIndexedObject$8(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn$l(hiddenKeys$4, key) && hasOwn$l(O, key) && push$9(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn$l(O, key = names[i++])) { + ~indexOf$2(result, key) || push$9(result, key); + } + return result; + }; + + // IE8- don't enum bug keys + var enumBugKeys$3 = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' + ]; + + var internalObjectKeys$1 = objectKeysInternal; + var enumBugKeys$2 = enumBugKeys$3; + + var hiddenKeys$3 = enumBugKeys$2.concat('length', 'prototype'); + + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + // eslint-disable-next-line es/no-object-getownpropertynames -- safe + objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys$1(O, hiddenKeys$3); + }; + + var objectGetOwnPropertySymbols = {}; + + // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe + objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols; + + var getBuiltIn$d = getBuiltIn$f; + var uncurryThis$K = functionUncurryThis; + var getOwnPropertyNamesModule$2 = objectGetOwnPropertyNames; + var getOwnPropertySymbolsModule$3 = objectGetOwnPropertySymbols; + var anObject$m = anObject$o; + + var concat$2 = uncurryThis$K([].concat); + + // all object keys, includes non-enumerable and symbols + var ownKeys$1 = getBuiltIn$d('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule$2.f(anObject$m(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule$3.f; + return getOwnPropertySymbols ? concat$2(keys, getOwnPropertySymbols(it)) : keys; + }; + + var hasOwn$k = hasOwnProperty_1; + var ownKeys = ownKeys$1; + var getOwnPropertyDescriptorModule$2 = objectGetOwnPropertyDescriptor; + var definePropertyModule$4 = objectDefineProperty; + + var copyConstructorProperties$4 = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule$4.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule$2.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn$k(target, key) && !(exceptions && hasOwn$k(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } + }; + + var fails$L = fails$T; + var isCallable$m = isCallable$w; + + var replacement = /#|\.prototype\./; + + var isForced$5 = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : isCallable$m(detection) ? fails$L(detection) + : !!detection; + }; + + var normalize = isForced$5.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); + }; + + var data = isForced$5.data = {}; + var NATIVE = isForced$5.NATIVE = 'N'; + var POLYFILL = isForced$5.POLYFILL = 'P'; + + var isForced_1 = isForced$5; + + var global$C = global$M; + var getOwnPropertyDescriptor$5 = objectGetOwnPropertyDescriptor.f; + var createNonEnumerableProperty$b = createNonEnumerableProperty$d; + var defineBuiltIn$g = defineBuiltIn$h; + var defineGlobalProperty = defineGlobalProperty$3; + var copyConstructorProperties$3 = copyConstructorProperties$4; + var isForced$4 = isForced_1; + + /* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key + */ + var _export = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global$C; + } else if (STATIC) { + target = global$C[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = (global$C[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor$5(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced$4(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties$3(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty$b(sourceProperty, 'sham', true); + } + defineBuiltIn$g(target, key, sourceProperty, options); + } + }; + + var wellKnownSymbol$t = wellKnownSymbol$v; + + var TO_STRING_TAG$4 = wellKnownSymbol$t('toStringTag'); + var test$3 = {}; + + test$3[TO_STRING_TAG$4] = 'z'; + + var toStringTagSupport = String(test$3) === '[object z]'; + + var TO_STRING_TAG_SUPPORT$2 = toStringTagSupport; + var isCallable$l = isCallable$w; + var classofRaw$1 = classofRaw$2; + var wellKnownSymbol$s = wellKnownSymbol$v; + + var TO_STRING_TAG$3 = wellKnownSymbol$s('toStringTag'); + var $Object$1 = Object; + + // ES3 wrong here + var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) == 'Arguments'; + + // fallback for IE11 Script Access Denied error + var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } + }; + + // getting tag from ES6+ `Object.prototype.toString` + var classof$i = TO_STRING_TAG_SUPPORT$2 ? classofRaw$1 : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object$1(it), TO_STRING_TAG$3)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw$1(O) + // ES3 arguments fallback + : (result = classofRaw$1(O)) == 'Object' && isCallable$l(O.callee) ? 'Arguments' : result; + }; + + var classof$h = classof$i; + + var $String$3 = String; + + var toString$m = function (argument) { + if (classof$h(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); + return $String$3(argument); + }; + + var anObject$l = anObject$o; + + // `RegExp.prototype.flags` getter implementation + // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags + var regexpFlags$1 = function () { + var that = anObject$l(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.unicodeSets) result += 'v'; + if (that.sticky) result += 'y'; + return result; + }; + + var fails$K = fails$T; + var global$B = global$M; + + // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var $RegExp$2 = global$B.RegExp; + + var UNSUPPORTED_Y$3 = fails$K(function () { + var re = $RegExp$2('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; + }); + + // UC Browser bug + // https://github.com/zloirock/core-js/issues/1008 + var MISSED_STICKY$2 = UNSUPPORTED_Y$3 || fails$K(function () { + return !$RegExp$2('a', 'y').sticky; + }); + + var BROKEN_CARET = UNSUPPORTED_Y$3 || fails$K(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = $RegExp$2('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; + }); + + var regexpStickyHelpers = { + BROKEN_CARET: BROKEN_CARET, + MISSED_STICKY: MISSED_STICKY$2, + UNSUPPORTED_Y: UNSUPPORTED_Y$3 + }; + + var objectDefineProperties = {}; + + var internalObjectKeys = objectKeysInternal; + var enumBugKeys$1 = enumBugKeys$3; + + // `Object.keys` method + // https://tc39.es/ecma262/#sec-object.keys + // eslint-disable-next-line es/no-object-keys -- safe + var objectKeys$3 = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys$1); + }; + + var DESCRIPTORS$m = descriptors; + var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug; + var definePropertyModule$3 = objectDefineProperty; + var anObject$k = anObject$o; + var toIndexedObject$7 = toIndexedObject$b; + var objectKeys$2 = objectKeys$3; + + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + // eslint-disable-next-line es/no-object-defineproperties -- safe + objectDefineProperties.f = DESCRIPTORS$m && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject$k(O); + var props = toIndexedObject$7(Properties); + var keys = objectKeys$2(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule$3.f(O, key = keys[index++], props[key]); + return O; + }; + + var getBuiltIn$c = getBuiltIn$f; + + var html$2 = getBuiltIn$c('document', 'documentElement'); + + /* global ActiveXObject -- old IE, WSH */ + + var anObject$j = anObject$o; + var definePropertiesModule$1 = objectDefineProperties; + var enumBugKeys = enumBugKeys$3; + var hiddenKeys$2 = hiddenKeys$6; + var html$1 = html$2; + var documentCreateElement$1 = documentCreateElement$2; + var sharedKey$2 = sharedKey$4; + + var GT = '>'; + var LT = '<'; + var PROTOTYPE$2 = 'prototype'; + var SCRIPT = 'script'; + var IE_PROTO$1 = sharedKey$2('IE_PROTO'); + + var EmptyConstructor = function () { /* empty */ }; + + var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; + }; + + // Create object with fake `null` prototype: use ActiveX Object with cleared prototype + var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; + }; + + // Create object with fake `null` prototype: use iframe Object with cleared prototype + var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement$1('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html$1.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; + }; + + // Check for document.domain and active x support + // No need to use active x approach when document.domain is not set + // see https://github.com/es-shims/es5-shim/issues/150 + // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 + // avoid IE GC bug + var activeXDocument; + var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE$2][enumBugKeys[length]]; + return NullProtoObject(); + }; + + hiddenKeys$2[IE_PROTO$1] = true; + + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + // eslint-disable-next-line es/no-object-create -- safe + var objectCreate = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE$2] = anObject$j(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE$2] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO$1] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule$1.f(result, Properties); + }; + + var fails$J = fails$T; + var global$A = global$M; + + // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError + var $RegExp$1 = global$A.RegExp; + + var regexpUnsupportedDotAll = fails$J(function () { + var re = $RegExp$1('.', 's'); + return !(re.dotAll && re.exec('\n') && re.flags === 's'); + }); + + var fails$I = fails$T; + var global$z = global$M; + + // babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError + var $RegExp = global$z.RegExp; + + var regexpUnsupportedNcg = fails$I(function () { + var re = $RegExp('(?b)', 'g'); + return re.exec('b').groups.a !== 'b' || + 'b'.replace(re, '$c') !== 'bc'; + }); + + /* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ + /* eslint-disable regexp/no-useless-quantifier -- testing */ + var call$s = functionCall; + var uncurryThis$J = functionUncurryThis; + var toString$l = toString$m; + var regexpFlags = regexpFlags$1; + var stickyHelpers$2 = regexpStickyHelpers; + var shared$3 = sharedExports; + var create$7 = objectCreate; + var getInternalState$8 = internalState.get; + var UNSUPPORTED_DOT_ALL$2 = regexpUnsupportedDotAll; + var UNSUPPORTED_NCG$1 = regexpUnsupportedNcg; + + var nativeReplace = shared$3('native-string-replace', String.prototype.replace); + var nativeExec = RegExp.prototype.exec; + var patchedExec = nativeExec; + var charAt$a = uncurryThis$J(''.charAt); + var indexOf$1 = uncurryThis$J(''.indexOf); + var replace$a = uncurryThis$J(''.replace); + var stringSlice$c = uncurryThis$J(''.slice); + + var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + call$s(nativeExec, re1, 'a'); + call$s(nativeExec, re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; + })(); + + var UNSUPPORTED_Y$2 = stickyHelpers$2.BROKEN_CARET; + + // nonparticipating capturing group, copied from es5-shim's String#split patch. + var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + + var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2 || UNSUPPORTED_DOT_ALL$2 || UNSUPPORTED_NCG$1; + + if (PATCH) { + patchedExec = function exec(string) { + var re = this; + var state = getInternalState$8(re); + var str = toString$l(string); + var raw = state.raw; + var result, reCopy, lastIndex, match, i, object, group; + + if (raw) { + raw.lastIndex = re.lastIndex; + result = call$s(patchedExec, raw, str); + re.lastIndex = raw.lastIndex; + return result; + } + + var groups = state.groups; + var sticky = UNSUPPORTED_Y$2 && re.sticky; + var flags = call$s(regexpFlags, re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = replace$a(flags, 'y', ''); + if (indexOf$1(flags, 'g') === -1) { + flags += 'g'; + } + + strCopy = stringSlice$c(str, re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt$a(str, re.lastIndex - 1) !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = call$s(nativeExec, sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = stringSlice$c(match.input, charsAdded); + match[0] = stringSlice$c(match[0], charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ + call$s(nativeReplace, match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + if (match && groups) { + match.groups = object = create$7(null); + for (i = 0; i < groups.length; i++) { + group = groups[i]; + object[group[0]] = match[group[1]]; + } + } + + return match; + }; + } + + var regexpExec$3 = patchedExec; + + var $$T = _export; + var exec$8 = regexpExec$3; + + // `RegExp.prototype.exec` method + // https://tc39.es/ecma262/#sec-regexp.prototype.exec + $$T({ target: 'RegExp', proto: true, forced: /./.exec !== exec$8 }, { + exec: exec$8 + }); + + var classofRaw = classofRaw$2; + var uncurryThis$I = functionUncurryThis; + + var functionUncurryThisClause = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis$I(fn); + }; + + // TODO: Remove from `core-js@4` since it's moved to entry points + + var uncurryThis$H = functionUncurryThisClause; + var defineBuiltIn$f = defineBuiltIn$h; + var regexpExec$2 = regexpExec$3; + var fails$H = fails$T; + var wellKnownSymbol$r = wellKnownSymbol$v; + var createNonEnumerableProperty$a = createNonEnumerableProperty$d; + + var SPECIES$6 = wellKnownSymbol$r('species'); + var RegExpPrototype$5 = RegExp.prototype; + + var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) { + var SYMBOL = wellKnownSymbol$r(KEY); + + var DELEGATES_TO_SYMBOL = !fails$H(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$H(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES$6] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { execCalled = true; return null; }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + FORCED + ) { + var uncurriedNativeRegExpMethod = uncurryThis$H(/./[SYMBOL]); + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + var uncurriedNativeMethod = uncurryThis$H(nativeMethod); + var $exec = regexp.exec; + if ($exec === regexpExec$2 || $exec === RegExpPrototype$5.exec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) }; + } + return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) }; + } + return { done: false }; + }); + + defineBuiltIn$f(String.prototype, KEY, methods[0]); + defineBuiltIn$f(RegExpPrototype$5, SYMBOL, methods[1]); + } + + if (SHAM) createNonEnumerableProperty$a(RegExpPrototype$5[SYMBOL], 'sham', true); + }; + + // `SameValue` abstract operation + // https://tc39.es/ecma262/#sec-samevalue + // eslint-disable-next-line es/no-object-is -- safe + var sameValue$1 = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare -- NaN check + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; + }; + + var call$r = functionCall; + var anObject$i = anObject$o; + var isCallable$k = isCallable$w; + var classof$g = classofRaw$2; + var regexpExec$1 = regexpExec$3; + + var $TypeError$g = TypeError; + + // `RegExpExec` abstract operation + // https://tc39.es/ecma262/#sec-regexpexec + var regexpExecAbstract = function (R, S) { + var exec = R.exec; + if (isCallable$k(exec)) { + var result = call$r(exec, R, S); + if (result !== null) anObject$i(result); + return result; + } + if (classof$g(R) === 'RegExp') return call$r(regexpExec$1, R, S); + throw $TypeError$g('RegExp#exec called on incompatible receiver'); + }; + + var call$q = functionCall; + var fixRegExpWellKnownSymbolLogic$3 = fixRegexpWellKnownSymbolLogic; + var anObject$h = anObject$o; + var isNullOrUndefined$8 = isNullOrUndefined$b; + var requireObjectCoercible$8 = requireObjectCoercible$b; + var sameValue = sameValue$1; + var toString$k = toString$m; + var getMethod$6 = getMethod$8; + var regExpExec$3 = regexpExecAbstract; + + // @@search logic + fixRegExpWellKnownSymbolLogic$3('search', function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.es/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible$8(this); + var searcher = isNullOrUndefined$8(regexp) ? undefined : getMethod$6(regexp, SEARCH); + return searcher ? call$q(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString$k(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@search + function (string) { + var rx = anObject$h(this); + var S = toString$k(string); + var res = maybeCallNative(nativeSearch, rx, S); + + if (res.done) return res.value; + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec$3(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; + }); + + var makeBuiltIn = makeBuiltInExports; + var defineProperty$a = objectDefineProperty; + + var defineBuiltInAccessor$d = function (target, name, descriptor) { + if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); + if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); + return defineProperty$a.f(target, name, descriptor); + }; + + var DESCRIPTORS$l = descriptors; + var FUNCTION_NAME_EXISTS = functionName.EXISTS; + var uncurryThis$G = functionUncurryThis; + var defineBuiltInAccessor$c = defineBuiltInAccessor$d; + + var FunctionPrototype$1 = Function.prototype; + var functionToString = uncurryThis$G(FunctionPrototype$1.toString); + var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; + var regExpExec$2 = uncurryThis$G(nameRE.exec); + var NAME$1 = 'name'; + + // Function instances `.name` property + // https://tc39.es/ecma262/#sec-function-instances-name + if (DESCRIPTORS$l && !FUNCTION_NAME_EXISTS) { + defineBuiltInAccessor$c(FunctionPrototype$1, NAME$1, { + configurable: true, + get: function () { + try { + return regExpExec$2(nameRE, functionToString(this))[1]; + } catch (error) { + return ''; + } + } + }); + } + + // TODO: Remove from `core-js@4` since it's moved to entry points + + var $$S = _export; + var call$p = functionCall; + var isCallable$j = isCallable$w; + var anObject$g = anObject$o; + var toString$j = toString$m; + + var DELEGATES_TO_EXEC = function () { + var execCalled = false; + var re = /[ac]/; + re.exec = function () { + execCalled = true; + return /./.exec.apply(this, arguments); + }; + return re.test('abc') === true && execCalled; + }(); + + var nativeTest = /./.test; + + // `RegExp.prototype.test` method + // https://tc39.es/ecma262/#sec-regexp.prototype.test + $$S({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, { + test: function (S) { + var R = anObject$g(this); + var string = toString$j(S); + var exec = R.exec; + if (!isCallable$j(exec)) return call$p(nativeTest, R, string); + var result = call$p(exec, R, string); + if (result === null) return false; + anObject$g(result); + return true; + } + }); + + var TO_STRING_TAG_SUPPORT$1 = toStringTagSupport; + var classof$f = classof$i; + + // `Object.prototype.toString` method implementation + // https://tc39.es/ecma262/#sec-object.prototype.tostring + var objectToString = TO_STRING_TAG_SUPPORT$1 ? {}.toString : function toString() { + return '[object ' + classof$f(this) + ']'; + }; + + var TO_STRING_TAG_SUPPORT = toStringTagSupport; + var defineBuiltIn$e = defineBuiltIn$h; + var toString$i = objectToString; + + // `Object.prototype.toString` method + // https://tc39.es/ecma262/#sec-object.prototype.tostring + if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn$e(Object.prototype, 'toString', toString$i, { unsafe: true }); + } + + // iterable DOM collections + // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods + var domIterables = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 + }; + + // in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` + var documentCreateElement = documentCreateElement$2; + + var classList = documentCreateElement('span').classList; + var DOMTokenListPrototype$2 = classList && classList.constructor && classList.constructor.prototype; + + var domTokenListPrototype = DOMTokenListPrototype$2 === Object.prototype ? undefined : DOMTokenListPrototype$2; + + var uncurryThis$F = functionUncurryThisClause; + var aCallable$a = aCallable$c; + var NATIVE_BIND$1 = functionBindNative; + + var bind$c = uncurryThis$F(uncurryThis$F.bind); + + // optional / simple context binding + var functionBindContext = function (fn, that) { + aCallable$a(fn); + return that === undefined ? fn : NATIVE_BIND$1 ? bind$c(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; + }; + + var classof$e = classofRaw$2; + + // `IsArray` abstract operation + // https://tc39.es/ecma262/#sec-isarray + // eslint-disable-next-line es/no-array-isarray -- safe + var isArray$7 = Array.isArray || function isArray(argument) { + return classof$e(argument) == 'Array'; + }; + + var uncurryThis$E = functionUncurryThis; + var fails$G = fails$T; + var isCallable$i = isCallable$w; + var classof$d = classof$i; + var getBuiltIn$b = getBuiltIn$f; + var inspectSource$1 = inspectSource$3; + + var noop = function () { /* empty */ }; + var empty = []; + var construct = getBuiltIn$b('Reflect', 'construct'); + var constructorRegExp = /^\s*(?:class|function)\b/; + var exec$7 = uncurryThis$E(constructorRegExp.exec); + var INCORRECT_TO_STRING$2 = !constructorRegExp.exec(noop); + + var isConstructorModern = function isConstructor(argument) { + if (!isCallable$i(argument)) return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } + }; + + var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable$i(argument)) return false; + switch (classof$d(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING$2 || !!exec$7(constructorRegExp, inspectSource$1(argument)); + } catch (error) { + return true; + } + }; + + isConstructorLegacy.sham = true; + + // `IsConstructor` abstract operation + // https://tc39.es/ecma262/#sec-isconstructor + var isConstructor$4 = !construct || fails$G(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; + }) ? isConstructorLegacy : isConstructorModern; + + var isArray$6 = isArray$7; + var isConstructor$3 = isConstructor$4; + var isObject$f = isObject$l; + var wellKnownSymbol$q = wellKnownSymbol$v; + + var SPECIES$5 = wellKnownSymbol$q('species'); + var $Array$4 = Array; + + // a part of `ArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#sec-arrayspeciescreate + var arraySpeciesConstructor$1 = function (originalArray) { + var C; + if (isArray$6(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor$3(C) && (C === $Array$4 || isArray$6(C.prototype))) C = undefined; + else if (isObject$f(C)) { + C = C[SPECIES$5]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array$4 : C; + }; + + var arraySpeciesConstructor = arraySpeciesConstructor$1; + + // `ArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#sec-arrayspeciescreate + var arraySpeciesCreate$4 = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); + }; + + var bind$b = functionBindContext; + var uncurryThis$D = functionUncurryThis; + var IndexedObject$4 = indexedObject; + var toObject$h = toObject$j; + var lengthOfArrayLike$m = lengthOfArrayLike$o; + var arraySpeciesCreate$3 = arraySpeciesCreate$4; + + var push$8 = uncurryThis$D([].push); + + // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation + var createMethod$4 = function (TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var IS_FILTER_REJECT = TYPE == 7; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject$h($this); + var self = IndexedObject$4(O); + var boundFunction = bind$b(callbackfn, that); + var length = lengthOfArrayLike$m(self); + var index = 0; + var create = specificCreate || arraySpeciesCreate$3; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push$8(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push$8(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; + }; + + var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod$4(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod$4(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod$4(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod$4(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod$4(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod$4(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$4(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod$4(7) + }; + + var fails$F = fails$T; + + var arrayMethodIsStrict$4 = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails$F(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); + }; + + var $forEach$2 = arrayIteration.forEach; + var arrayMethodIsStrict$3 = arrayMethodIsStrict$4; + + var STRICT_METHOD$2 = arrayMethodIsStrict$3('forEach'); + + // `Array.prototype.forEach` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.foreach + var arrayForEach = !STRICT_METHOD$2 ? function forEach(callbackfn /* , thisArg */) { + return $forEach$2(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + // eslint-disable-next-line es/no-array-prototype-foreach -- safe + } : [].forEach; + + var global$y = global$M; + var DOMIterables$1 = domIterables; + var DOMTokenListPrototype$1 = domTokenListPrototype; + var forEach$1 = arrayForEach; + var createNonEnumerableProperty$9 = createNonEnumerableProperty$d; + + var handlePrototype$1 = function (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach$1) try { + createNonEnumerableProperty$9(CollectionPrototype, 'forEach', forEach$1); + } catch (error) { + CollectionPrototype.forEach = forEach$1; + } + }; + + for (var COLLECTION_NAME$1 in DOMIterables$1) { + if (DOMIterables$1[COLLECTION_NAME$1]) { + handlePrototype$1(global$y[COLLECTION_NAME$1] && global$y[COLLECTION_NAME$1].prototype); + } + } + + handlePrototype$1(DOMTokenListPrototype$1); + + var NATIVE_BIND = functionBindNative; + + var FunctionPrototype = Function.prototype; + var apply$9 = FunctionPrototype.apply; + var call$o = FunctionPrototype.call; + + // eslint-disable-next-line es/no-reflect -- safe + var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call$o.bind(apply$9) : function () { + return call$o.apply(apply$9, arguments); + }); + + var uncurryThis$C = functionUncurryThis; + var toIntegerOrInfinity$c = toIntegerOrInfinity$f; + var toString$h = toString$m; + var requireObjectCoercible$7 = requireObjectCoercible$b; + + var charAt$9 = uncurryThis$C(''.charAt); + var charCodeAt$3 = uncurryThis$C(''.charCodeAt); + var stringSlice$b = uncurryThis$C(''.slice); + + var createMethod$3 = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString$h(requireObjectCoercible$7($this)); + var position = toIntegerOrInfinity$c(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt$3(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt$3(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt$9(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice$b(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; + }; + + var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$3(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$3(true) + }; + + var charAt$8 = stringMultibyte.charAt; + + // `AdvanceStringIndex` abstract operation + // https://tc39.es/ecma262/#sec-advancestringindex + var advanceStringIndex$3 = function (S, index, unicode) { + return index + (unicode ? charAt$8(S, index).length : 1); + }; + + var uncurryThis$B = functionUncurryThis; + var toObject$g = toObject$j; + + var floor$8 = Math.floor; + var charAt$7 = uncurryThis$B(''.charAt); + var replace$9 = uncurryThis$B(''.replace); + var stringSlice$a = uncurryThis$B(''.slice); + // eslint-disable-next-line redos/no-vulnerable -- safe + var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; + var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + + // `GetSubstitution` abstract operation + // https://tc39.es/ecma262/#sec-getsubstitution + var getSubstitution$2 = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject$g(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace$9(replacement, symbols, function (match, ch) { + var capture; + switch (charAt$7(ch, 0)) { + case '$': return '$'; + case '&': return matched; + case '`': return stringSlice$a(str, 0, position); + case "'": return stringSlice$a(str, tailPos); + case '<': + capture = namedCaptures[stringSlice$a(ch, 1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor$8(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? charAt$7(ch, 1) : captures[f - 1] + charAt$7(ch, 1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + }; + + var apply$8 = functionApply; + var call$n = functionCall; + var uncurryThis$A = functionUncurryThis; + var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic; + var fails$E = fails$T; + var anObject$f = anObject$o; + var isCallable$h = isCallable$w; + var isNullOrUndefined$7 = isNullOrUndefined$b; + var toIntegerOrInfinity$b = toIntegerOrInfinity$f; + var toLength$8 = toLength$a; + var toString$g = toString$m; + var requireObjectCoercible$6 = requireObjectCoercible$b; + var advanceStringIndex$2 = advanceStringIndex$3; + var getMethod$5 = getMethod$8; + var getSubstitution$1 = getSubstitution$2; + var regExpExec$1 = regexpExecAbstract; + var wellKnownSymbol$p = wellKnownSymbol$v; + + var REPLACE$1 = wellKnownSymbol$p('replace'); + var max$4 = Math.max; + var min$5 = Math.min; + var concat$1 = uncurryThis$A([].concat); + var push$7 = uncurryThis$A([].push); + var stringIndexOf$2 = uncurryThis$A(''.indexOf); + var stringSlice$9 = uncurryThis$A(''.slice); + + var maybeToString = function (it) { + return it === undefined ? it : String(it); + }; + + // IE <= 11 replaces $0 with the whole match, as if it was $& + // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + var REPLACE_KEEPS_$0 = (function () { + // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing + return 'a'.replace(/./, '$0') === '$0'; + })(); + + // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE$1]) { + return /./[REPLACE$1]('a', '$0') === ''; + } + return false; + })(); + + var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$E(function () { + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive + return ''.replace(re, '$') !== '7'; + }); + + // @@replace logic + fixRegExpWellKnownSymbolLogic$2('replace', function (_, nativeReplace, maybeCallNative) { + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible$6(this); + var replacer = isNullOrUndefined$7(searchValue) ? undefined : getMethod$5(searchValue, REPLACE$1); + return replacer + ? call$n(replacer, searchValue, O, replaceValue) + : call$n(nativeReplace, toString$g(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (string, replaceValue) { + var rx = anObject$f(this); + var S = toString$g(string); + + if ( + typeof replaceValue == 'string' && + stringIndexOf$2(replaceValue, UNSAFE_SUBSTITUTE) === -1 && + stringIndexOf$2(replaceValue, '$<') === -1 + ) { + var res = maybeCallNative(nativeReplace, rx, S, replaceValue); + if (res.done) return res.value; + } + + var functionalReplace = isCallable$h(replaceValue); + if (!functionalReplace) replaceValue = toString$g(replaceValue); + + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec$1(rx, S); + if (result === null) break; + + push$7(results, result); + if (!global) break; + + var matchStr = toString$g(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex$2(S, toLength$8(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = toString$g(result[0]); + var position = max$4(min$5(toIntegerOrInfinity$b(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) push$7(captures, maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = concat$1([matched], captures, position, S); + if (namedCaptures !== undefined) push$7(replacerArgs, namedCaptures); + var replacement = toString$g(apply$8(replaceValue, undefined, replacerArgs)); + } else { + replacement = getSubstitution$1(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += stringSlice$9(S, nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + stringSlice$9(S, nextSourcePosition); + } + ]; + }, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); + + var call$m = functionCall; + var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic; + var anObject$e = anObject$o; + var isNullOrUndefined$6 = isNullOrUndefined$b; + var toLength$7 = toLength$a; + var toString$f = toString$m; + var requireObjectCoercible$5 = requireObjectCoercible$b; + var getMethod$4 = getMethod$8; + var advanceStringIndex$1 = advanceStringIndex$3; + var regExpExec = regexpExecAbstract; + + // @@match logic + fixRegExpWellKnownSymbolLogic$1('match', function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible$5(this); + var matcher = isNullOrUndefined$6(regexp) ? undefined : getMethod$4(regexp, MATCH); + return matcher ? call$m(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString$f(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (string) { + var rx = anObject$e(this); + var S = toString$f(string); + var res = maybeCallNative(nativeMatch, rx, S); + + if (res.done) return res.value; + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = toString$f(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex$1(S, toLength$7(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; + }); + + var wellKnownSymbol$o = wellKnownSymbol$v; + var create$6 = objectCreate; + var defineProperty$9 = objectDefineProperty.f; + + var UNSCOPABLES = wellKnownSymbol$o('unscopables'); + var ArrayPrototype$1 = Array.prototype; + + // Array.prototype[@@unscopables] + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + if (ArrayPrototype$1[UNSCOPABLES] == undefined) { + defineProperty$9(ArrayPrototype$1, UNSCOPABLES, { + configurable: true, + value: create$6(null) + }); + } + + // add a key to Array.prototype[@@unscopables] + var addToUnscopables$4 = function (key) { + ArrayPrototype$1[UNSCOPABLES][key] = true; + }; + + var iterators = {}; + + var fails$D = fails$T; + + var correctPrototypeGetter = !fails$D(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + + var hasOwn$j = hasOwnProperty_1; + var isCallable$g = isCallable$w; + var toObject$f = toObject$j; + var sharedKey$1 = sharedKey$4; + var CORRECT_PROTOTYPE_GETTER$1 = correctPrototypeGetter; + + var IE_PROTO = sharedKey$1('IE_PROTO'); + var $Object = Object; + var ObjectPrototype$3 = $Object.prototype; + + // `Object.getPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.getprototypeof + // eslint-disable-next-line es/no-object-getprototypeof -- safe + var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER$1 ? $Object.getPrototypeOf : function (O) { + var object = toObject$f(O); + if (hasOwn$j(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable$g(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype$3 : null; + }; + + var fails$C = fails$T; + var isCallable$f = isCallable$w; + var isObject$e = isObject$l; + var getPrototypeOf$3 = objectGetPrototypeOf; + var defineBuiltIn$d = defineBuiltIn$h; + var wellKnownSymbol$n = wellKnownSymbol$v; + + var ITERATOR$a = wellKnownSymbol$n('iterator'); + var BUGGY_SAFARI_ITERATORS$1 = false; + + // `%IteratorPrototype%` object + // https://tc39.es/ecma262/#sec-%iteratorprototype%-object + var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator; + + /* eslint-disable es/no-array-prototype-keys -- safe */ + if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf$3(getPrototypeOf$3(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype; + } + } + + var NEW_ITERATOR_PROTOTYPE = !isObject$e(IteratorPrototype$2) || fails$C(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype$2[ITERATOR$a].call(test) !== test; + }); + + if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {}; + + // `%IteratorPrototype%[@@iterator]()` method + // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator + if (!isCallable$f(IteratorPrototype$2[ITERATOR$a])) { + defineBuiltIn$d(IteratorPrototype$2, ITERATOR$a, function () { + return this; + }); + } + + var iteratorsCore = { + IteratorPrototype: IteratorPrototype$2, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1 + }; + + var defineProperty$8 = objectDefineProperty.f; + var hasOwn$i = hasOwnProperty_1; + var wellKnownSymbol$m = wellKnownSymbol$v; + + var TO_STRING_TAG$2 = wellKnownSymbol$m('toStringTag'); + + var setToStringTag$9 = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn$i(target, TO_STRING_TAG$2)) { + defineProperty$8(target, TO_STRING_TAG$2, { configurable: true, value: TAG }); + } + }; + + var IteratorPrototype$1 = iteratorsCore.IteratorPrototype; + var create$5 = objectCreate; + var createPropertyDescriptor$7 = createPropertyDescriptor$a; + var setToStringTag$8 = setToStringTag$9; + var Iterators$4 = iterators; + + var returnThis$1 = function () { return this; }; + + var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create$5(IteratorPrototype$1, { next: createPropertyDescriptor$7(+!ENUMERABLE_NEXT, next) }); + setToStringTag$8(IteratorConstructor, TO_STRING_TAG, false); + Iterators$4[TO_STRING_TAG] = returnThis$1; + return IteratorConstructor; + }; + + var uncurryThis$z = functionUncurryThis; + var aCallable$9 = aCallable$c; + + var functionUncurryThisAccessor = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis$z(aCallable$9(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } + }; + + var isCallable$e = isCallable$w; + + var $String$2 = String; + var $TypeError$f = TypeError; + + var aPossiblePrototype$1 = function (argument) { + if (typeof argument == 'object' || isCallable$e(argument)) return argument; + throw $TypeError$f("Can't set " + $String$2(argument) + ' as a prototype'); + }; + + /* eslint-disable no-proto -- safe */ + + var uncurryThisAccessor = functionUncurryThisAccessor; + var anObject$d = anObject$o; + var aPossiblePrototype = aPossiblePrototype$1; + + // `Object.setPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.setprototypeof + // Works with __proto__ only. Old v8 can't work with null proto objects. + // eslint-disable-next-line es/no-object-setprototypeof -- safe + var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject$d(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; + }() : undefined); + + var $$R = _export; + var call$l = functionCall; + var FunctionName$1 = functionName; + var isCallable$d = isCallable$w; + var createIteratorConstructor$1 = iteratorCreateConstructor; + var getPrototypeOf$2 = objectGetPrototypeOf; + var setPrototypeOf$6 = objectSetPrototypeOf; + var setToStringTag$7 = setToStringTag$9; + var createNonEnumerableProperty$8 = createNonEnumerableProperty$d; + var defineBuiltIn$c = defineBuiltIn$h; + var wellKnownSymbol$l = wellKnownSymbol$v; + var Iterators$3 = iterators; + var IteratorsCore = iteratorsCore; + + var PROPER_FUNCTION_NAME$3 = FunctionName$1.PROPER; + var CONFIGURABLE_FUNCTION_NAME$1 = FunctionName$1.CONFIGURABLE; + var IteratorPrototype = IteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR$9 = wellKnownSymbol$l('iterator'); + var KEYS = 'keys'; + var VALUES = 'values'; + var ENTRIES = 'entries'; + + var returnThis = function () { return this; }; + + var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor$1(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR$9] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf$2(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (getPrototypeOf$2(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf$6) { + setPrototypeOf$6(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable$d(CurrentIteratorPrototype[ITERATOR$9])) { + defineBuiltIn$c(CurrentIteratorPrototype, ITERATOR$9, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag$7(CurrentIteratorPrototype, TO_STRING_TAG, true); + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME$3 && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (CONFIGURABLE_FUNCTION_NAME$1) { + createNonEnumerableProperty$8(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call$l(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn$c(IterablePrototype, KEY, methods[KEY]); + } + } else $$R({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if (IterablePrototype[ITERATOR$9] !== defaultIterator) { + defineBuiltIn$c(IterablePrototype, ITERATOR$9, defaultIterator, { name: DEFAULT }); + } + Iterators$3[NAME] = defaultIterator; + + return methods; + }; + + // `CreateIterResultObject` abstract operation + // https://tc39.es/ecma262/#sec-createiterresultobject + var createIterResultObject$3 = function (value, done) { + return { value: value, done: done }; + }; + + var toIndexedObject$6 = toIndexedObject$b; + var addToUnscopables$3 = addToUnscopables$4; + var Iterators$2 = iterators; + var InternalStateModule$a = internalState; + var defineProperty$7 = objectDefineProperty.f; + var defineIterator$2 = iteratorDefine; + var createIterResultObject$2 = createIterResultObject$3; + var DESCRIPTORS$k = descriptors; + + var ARRAY_ITERATOR = 'Array Iterator'; + var setInternalState$9 = InternalStateModule$a.set; + var getInternalState$7 = InternalStateModule$a.getterFor(ARRAY_ITERATOR); + + // `Array.prototype.entries` method + // https://tc39.es/ecma262/#sec-array.prototype.entries + // `Array.prototype.keys` method + // https://tc39.es/ecma262/#sec-array.prototype.keys + // `Array.prototype.values` method + // https://tc39.es/ecma262/#sec-array.prototype.values + // `Array.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-array.prototype-@@iterator + // `CreateArrayIterator` internal method + // https://tc39.es/ecma262/#sec-createarrayiterator + var es_array_iterator = defineIterator$2(Array, 'Array', function (iterated, kind) { + setInternalState$9(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject$6(iterated), // target + index: 0, // next index + kind: kind // kind + }); + // `%ArrayIteratorPrototype%.next` method + // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next + }, function () { + var state = getInternalState$7(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return createIterResultObject$2(undefined, true); + } + if (kind == 'keys') return createIterResultObject$2(index, false); + if (kind == 'values') return createIterResultObject$2(target[index], false); + return createIterResultObject$2([index, target[index]], false); + }, 'values'); + + // argumentsList[@@iterator] is %ArrayProto_values% + // https://tc39.es/ecma262/#sec-createunmappedargumentsobject + // https://tc39.es/ecma262/#sec-createmappedargumentsobject + var values = Iterators$2.Arguments = Iterators$2.Array; + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables$3('keys'); + addToUnscopables$3('values'); + addToUnscopables$3('entries'); + + // V8 ~ Chrome 45- bug + if (DESCRIPTORS$k && values.name !== 'values') try { + defineProperty$7(values, 'name', { value: 'values' }); + } catch (error) { /* empty */ } + + var global$x = global$M; + var DOMIterables = domIterables; + var DOMTokenListPrototype = domTokenListPrototype; + var ArrayIteratorMethods = es_array_iterator; + var createNonEnumerableProperty$7 = createNonEnumerableProperty$d; + var wellKnownSymbol$k = wellKnownSymbol$v; + + var ITERATOR$8 = wellKnownSymbol$k('iterator'); + var TO_STRING_TAG$1 = wellKnownSymbol$k('toStringTag'); + var ArrayValues = ArrayIteratorMethods.values; + + var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR$8] !== ArrayValues) try { + createNonEnumerableProperty$7(CollectionPrototype, ITERATOR$8, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR$8] = ArrayValues; + } + if (!CollectionPrototype[TO_STRING_TAG$1]) { + createNonEnumerableProperty$7(CollectionPrototype, TO_STRING_TAG$1, COLLECTION_NAME); + } + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty$7(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } + }; + + for (var COLLECTION_NAME in DOMIterables) { + handlePrototype(global$x[COLLECTION_NAME] && global$x[COLLECTION_NAME].prototype, COLLECTION_NAME); + } + + handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); + + var call$k = functionCall; + var anObject$c = anObject$o; + var getMethod$3 = getMethod$8; + + var iteratorClose$2 = function (iterator, kind, value) { + var innerResult, innerError; + anObject$c(iterator); + try { + innerResult = getMethod$3(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call$k(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject$c(innerResult); + return value; + }; + + var anObject$b = anObject$o; + var iteratorClose$1 = iteratorClose$2; + + // call something on iterator step with safe closing on error + var callWithSafeIterationClosing$1 = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject$b(value)[0], value[1]) : fn(value); + } catch (error) { + iteratorClose$1(iterator, 'throw', error); + } + }; + + var wellKnownSymbol$j = wellKnownSymbol$v; + var Iterators$1 = iterators; + + var ITERATOR$7 = wellKnownSymbol$j('iterator'); + var ArrayPrototype = Array.prototype; + + // check on default Array iterator + var isArrayIteratorMethod$3 = function (it) { + return it !== undefined && (Iterators$1.Array === it || ArrayPrototype[ITERATOR$7] === it); + }; + + var toPropertyKey$2 = toPropertyKey$5; + var definePropertyModule$2 = objectDefineProperty; + var createPropertyDescriptor$6 = createPropertyDescriptor$a; + + var createProperty$5 = function (object, key, value) { + var propertyKey = toPropertyKey$2(key); + if (propertyKey in object) definePropertyModule$2.f(object, propertyKey, createPropertyDescriptor$6(0, value)); + else object[propertyKey] = value; + }; + + var classof$c = classof$i; + var getMethod$2 = getMethod$8; + var isNullOrUndefined$5 = isNullOrUndefined$b; + var Iterators = iterators; + var wellKnownSymbol$i = wellKnownSymbol$v; + + var ITERATOR$6 = wellKnownSymbol$i('iterator'); + + var getIteratorMethod$5 = function (it) { + if (!isNullOrUndefined$5(it)) return getMethod$2(it, ITERATOR$6) + || getMethod$2(it, '@@iterator') + || Iterators[classof$c(it)]; + }; + + var call$j = functionCall; + var aCallable$8 = aCallable$c; + var anObject$a = anObject$o; + var tryToString$5 = tryToString$7; + var getIteratorMethod$4 = getIteratorMethod$5; + + var $TypeError$e = TypeError; + + var getIterator$4 = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod$4(argument) : usingIterator; + if (aCallable$8(iteratorMethod)) return anObject$a(call$j(iteratorMethod, argument)); + throw $TypeError$e(tryToString$5(argument) + ' is not iterable'); + }; + + var bind$a = functionBindContext; + var call$i = functionCall; + var toObject$e = toObject$j; + var callWithSafeIterationClosing = callWithSafeIterationClosing$1; + var isArrayIteratorMethod$2 = isArrayIteratorMethod$3; + var isConstructor$2 = isConstructor$4; + var lengthOfArrayLike$l = lengthOfArrayLike$o; + var createProperty$4 = createProperty$5; + var getIterator$3 = getIterator$4; + var getIteratorMethod$3 = getIteratorMethod$5; + + var $Array$3 = Array; + + // `Array.from` method implementation + // https://tc39.es/ecma262/#sec-array.from + var arrayFrom$1 = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject$e(arrayLike); + var IS_CONSTRUCTOR = isConstructor$2(this); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + if (mapping) mapfn = bind$a(mapfn, argumentsLength > 2 ? arguments[2] : undefined); + var iteratorMethod = getIteratorMethod$3(O); + var index = 0; + var length, result, step, iterator, next, value; + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod && !(this === $Array$3 && isArrayIteratorMethod$2(iteratorMethod))) { + iterator = getIterator$3(O, iteratorMethod); + next = iterator.next; + result = IS_CONSTRUCTOR ? new this() : []; + for (;!(step = call$i(next, iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty$4(result, index, value); + } + } else { + length = lengthOfArrayLike$l(O); + result = IS_CONSTRUCTOR ? new this(length) : $Array$3(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty$4(result, index, value); + } + } + result.length = index; + return result; + }; + + var wellKnownSymbol$h = wellKnownSymbol$v; + + var ITERATOR$5 = wellKnownSymbol$h('iterator'); + var SAFE_CLOSING = false; + + try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR$5] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); + } catch (error) { /* empty */ } + + var checkCorrectnessOfIteration$4 = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR$5] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; + }; + + var $$Q = _export; + var from = arrayFrom$1; + var checkCorrectnessOfIteration$3 = checkCorrectnessOfIteration$4; + + var INCORRECT_ITERATION = !checkCorrectnessOfIteration$3(function (iterable) { + // eslint-disable-next-line es/no-array-from -- required for testing + Array.from(iterable); + }); + + // `Array.from` method + // https://tc39.es/ecma262/#sec-array.from + $$Q({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from + }); + + var charAt$6 = stringMultibyte.charAt; + var toString$e = toString$m; + var InternalStateModule$9 = internalState; + var defineIterator$1 = iteratorDefine; + var createIterResultObject$1 = createIterResultObject$3; + + var STRING_ITERATOR = 'String Iterator'; + var setInternalState$8 = InternalStateModule$9.set; + var getInternalState$6 = InternalStateModule$9.getterFor(STRING_ITERATOR); + + // `String.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-string.prototype-@@iterator + defineIterator$1(String, 'String', function (iterated) { + setInternalState$8(this, { + type: STRING_ITERATOR, + string: toString$e(iterated), + index: 0 + }); + // `%StringIteratorPrototype%.next` method + // https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next + }, function next() { + var state = getInternalState$6(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return createIterResultObject$1(undefined, true); + point = charAt$6(string, index); + state.index += point.length; + return createIterResultObject$1(point, false); + }); + + var uncurryThis$y = functionUncurryThis; + + // `thisNumberValue` abstract operation + // https://tc39.es/ecma262/#sec-thisnumbervalue + var thisNumberValue$2 = uncurryThis$y(1.0.valueOf); + + var toIntegerOrInfinity$a = toIntegerOrInfinity$f; + var toString$d = toString$m; + var requireObjectCoercible$4 = requireObjectCoercible$b; + + var $RangeError$6 = RangeError; + + // `String.prototype.repeat` method implementation + // https://tc39.es/ecma262/#sec-string.prototype.repeat + var stringRepeat = function repeat(count) { + var str = toString$d(requireObjectCoercible$4(this)); + var result = ''; + var n = toIntegerOrInfinity$a(count); + if (n < 0 || n == Infinity) throw $RangeError$6('Wrong number of repetitions'); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str; + return result; + }; + + var $$P = _export; + var uncurryThis$x = functionUncurryThis; + var toIntegerOrInfinity$9 = toIntegerOrInfinity$f; + var thisNumberValue$1 = thisNumberValue$2; + var $repeat = stringRepeat; + var fails$B = fails$T; + + var $RangeError$5 = RangeError; + var $String$1 = String; + var floor$7 = Math.floor; + var repeat = uncurryThis$x($repeat); + var stringSlice$8 = uncurryThis$x(''.slice); + var nativeToFixed = uncurryThis$x(1.0.toFixed); + + var pow$3 = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow$3(x, n - 1, acc * x) : pow$3(x * x, n / 2, acc); + }; + + var log$2 = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; + }; + + var multiply = function (data, n, c) { + var index = -1; + var c2 = c; + while (++index < 6) { + c2 += n * data[index]; + data[index] = c2 % 1e7; + c2 = floor$7(c2 / 1e7); + } + }; + + var divide = function (data, n) { + var index = 6; + var c = 0; + while (--index >= 0) { + c += data[index]; + data[index] = floor$7(c / n); + c = (c % n) * 1e7; + } + }; + + var dataToString = function (data) { + var index = 6; + var s = ''; + while (--index >= 0) { + if (s !== '' || index === 0 || data[index] !== 0) { + var t = $String$1(data[index]); + s = s === '' ? t : s + repeat('0', 7 - t.length) + t; + } + } return s; + }; + + var FORCED$e = fails$B(function () { + return nativeToFixed(0.00008, 3) !== '0.000' || + nativeToFixed(0.9, 0) !== '1' || + nativeToFixed(1.255, 2) !== '1.25' || + nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128'; + }) || !fails$B(function () { + // V8 ~ Android 4.3- + nativeToFixed({}); + }); + + // `Number.prototype.toFixed` method + // https://tc39.es/ecma262/#sec-number.prototype.tofixed + $$P({ target: 'Number', proto: true, forced: FORCED$e }, { + toFixed: function toFixed(fractionDigits) { + var number = thisNumberValue$1(this); + var fractDigits = toIntegerOrInfinity$9(fractionDigits); + var data = [0, 0, 0, 0, 0, 0]; + var sign = ''; + var result = '0'; + var e, z, j, k; + + // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation + if (fractDigits < 0 || fractDigits > 20) throw $RangeError$5('Incorrect fraction digits'); + // eslint-disable-next-line no-self-compare -- NaN check + if (number != number) return 'NaN'; + if (number <= -1e21 || number >= 1e21) return $String$1(number); + if (number < 0) { + sign = '-'; + number = -number; + } + if (number > 1e-21) { + e = log$2(number * pow$3(2, 69, 1)) - 69; + z = e < 0 ? number * pow$3(2, -e, 1) : number / pow$3(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(data, 0, z); + j = fractDigits; + while (j >= 7) { + multiply(data, 1e7, 0); + j -= 7; + } + multiply(data, pow$3(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(data, 1 << 23); + j -= 23; + } + divide(data, 1 << j); + multiply(data, 1, 1); + divide(data, 2); + result = dataToString(data); + } else { + multiply(data, 0, z); + multiply(data, 1 << -e, 0); + result = dataToString(data) + repeat('0', fractDigits); + } + } + if (fractDigits > 0) { + k = result.length; + result = sign + (k <= fractDigits + ? '0.' + repeat('0', fractDigits - k) + result + : stringSlice$8(result, 0, k - fractDigits) + '.' + stringSlice$8(result, k - fractDigits)); + } else { + result = sign + result; + } return result; + } + }); + + var classof$b = classofRaw$2; + + var engineIsNode = typeof process != 'undefined' && classof$b(process) == 'process'; + + var getBuiltIn$a = getBuiltIn$f; + var defineBuiltInAccessor$b = defineBuiltInAccessor$d; + var wellKnownSymbol$g = wellKnownSymbol$v; + var DESCRIPTORS$j = descriptors; + + var SPECIES$4 = wellKnownSymbol$g('species'); + + var setSpecies$5 = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn$a(CONSTRUCTOR_NAME); + + if (DESCRIPTORS$j && Constructor && !Constructor[SPECIES$4]) { + defineBuiltInAccessor$b(Constructor, SPECIES$4, { + configurable: true, + get: function () { return this; } + }); + } + }; + + var isPrototypeOf$9 = objectIsPrototypeOf; + + var $TypeError$d = TypeError; + + var anInstance$9 = function (it, Prototype) { + if (isPrototypeOf$9(Prototype, it)) return it; + throw $TypeError$d('Incorrect invocation'); + }; + + var isConstructor$1 = isConstructor$4; + var tryToString$4 = tryToString$7; + + var $TypeError$c = TypeError; + + // `Assert: IsConstructor(argument) is true` + var aConstructor$2 = function (argument) { + if (isConstructor$1(argument)) return argument; + throw $TypeError$c(tryToString$4(argument) + ' is not a constructor'); + }; + + var anObject$9 = anObject$o; + var aConstructor$1 = aConstructor$2; + var isNullOrUndefined$4 = isNullOrUndefined$b; + var wellKnownSymbol$f = wellKnownSymbol$v; + + var SPECIES$3 = wellKnownSymbol$f('species'); + + // `SpeciesConstructor` abstract operation + // https://tc39.es/ecma262/#sec-speciesconstructor + var speciesConstructor$4 = function (O, defaultConstructor) { + var C = anObject$9(O).constructor; + var S; + return C === undefined || isNullOrUndefined$4(S = anObject$9(C)[SPECIES$3]) ? defaultConstructor : aConstructor$1(S); + }; + + var uncurryThis$w = functionUncurryThis; + + var arraySlice$a = uncurryThis$w([].slice); + + var $TypeError$b = TypeError; + + var validateArgumentsLength$5 = function (passed, required) { + if (passed < required) throw $TypeError$b('Not enough arguments'); + return passed; + }; + + var userAgent$4 = engineUserAgent; + + // eslint-disable-next-line redos/no-vulnerable -- safe + var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$4); + + var global$w = global$M; + var apply$7 = functionApply; + var bind$9 = functionBindContext; + var isCallable$c = isCallable$w; + var hasOwn$h = hasOwnProperty_1; + var fails$A = fails$T; + var html = html$2; + var arraySlice$9 = arraySlice$a; + var createElement = documentCreateElement$2; + var validateArgumentsLength$4 = validateArgumentsLength$5; + var IS_IOS$1 = engineIsIos; + var IS_NODE$4 = engineIsNode; + + var set$1 = global$w.setImmediate; + var clear$1 = global$w.clearImmediate; + var process$3 = global$w.process; + var Dispatch = global$w.Dispatch; + var Function$2 = global$w.Function; + var MessageChannel$1 = global$w.MessageChannel; + var String$1 = global$w.String; + var counter = 0; + var queue$2 = {}; + var ONREADYSTATECHANGE = 'onreadystatechange'; + var $location, defer, channel, port; + + fails$A(function () { + // Deno throws a ReferenceError on `location` access without `--location` flag + $location = global$w.location; + }); + + var run = function (id) { + if (hasOwn$h(queue$2, id)) { + var fn = queue$2[id]; + delete queue$2[id]; + fn(); + } + }; + + var runner = function (id) { + return function () { + run(id); + }; + }; + + var eventListener = function (event) { + run(event.data); + }; + + var globalPostMessageDefer = function (id) { + // old engines have not location.origin + global$w.postMessage(String$1(id), $location.protocol + '//' + $location.host); + }; + + // Node.js 0.9+ & IE10+ has setImmediate, otherwise: + if (!set$1 || !clear$1) { + set$1 = function setImmediate(handler) { + validateArgumentsLength$4(arguments.length, 1); + var fn = isCallable$c(handler) ? handler : Function$2(handler); + var args = arraySlice$9(arguments, 1); + queue$2[++counter] = function () { + apply$7(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear$1 = function clearImmediate(id) { + delete queue$2[id]; + }; + // Node.js 0.8- + if (IS_NODE$4) { + defer = function (id) { + process$3.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel$1 && !IS_IOS$1) { + channel = new MessageChannel$1(); + port = channel.port2; + channel.port1.onmessage = eventListener; + defer = bind$9(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + global$w.addEventListener && + isCallable$c(global$w.postMessage) && + !global$w.importScripts && + $location && $location.protocol !== 'file:' && + !fails$A(globalPostMessageDefer) + ) { + defer = globalPostMessageDefer; + global$w.addEventListener('message', eventListener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } + } + + var task$1 = { + set: set$1, + clear: clear$1 + }; + + var Queue$2 = function () { + this.head = null; + this.tail = null; + }; + + Queue$2.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + var tail = this.tail; + if (tail) tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + var next = this.head = entry.next; + if (next === null) this.tail = null; + return entry.item; + } + } + }; + + var queue$1 = Queue$2; + + var userAgent$3 = engineUserAgent; + + var engineIsIosPebble = /ipad|iphone|ipod/i.test(userAgent$3) && typeof Pebble != 'undefined'; + + var userAgent$2 = engineUserAgent; + + var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent$2); + + var global$v = global$M; + var bind$8 = functionBindContext; + var getOwnPropertyDescriptor$4 = objectGetOwnPropertyDescriptor.f; + var macrotask = task$1.set; + var Queue$1 = queue$1; + var IS_IOS = engineIsIos; + var IS_IOS_PEBBLE = engineIsIosPebble; + var IS_WEBOS_WEBKIT = engineIsWebosWebkit; + var IS_NODE$3 = engineIsNode; + + var MutationObserver = global$v.MutationObserver || global$v.WebKitMutationObserver; + var document$2 = global$v.document; + var process$2 = global$v.process; + var Promise$1 = global$v.Promise; + // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` + var queueMicrotaskDescriptor = getOwnPropertyDescriptor$4(global$v, 'queueMicrotask'); + var microtask$1 = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; + var notify$1, toggle, node, promise, then; + + // modern engines have queueMicrotask method + if (!microtask$1) { + var queue = new Queue$1(); + + var flush = function () { + var parent, fn; + if (IS_NODE$3 && (parent = process$2.domain)) parent.exit(); + while (fn = queue.get()) try { + fn(); + } catch (error) { + if (queue.head) notify$1(); + throw error; + } + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE$3 && !IS_WEBOS_WEBKIT && MutationObserver && document$2) { + toggle = true; + node = document$2.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify$1 = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise$1 && Promise$1.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise$1.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise$1; + then = bind$8(promise.then, promise); + notify$1 = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE$3) { + notify$1 = function () { + process$2.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // `webpack` dev server bug on IE global methods - use bind(fn, global) + macrotask = bind$8(macrotask, global$v); + notify$1 = function () { + macrotask(flush); + }; + } + + microtask$1 = function (fn) { + if (!queue.head) notify$1(); + queue.add(fn); + }; + } + + var microtask_1 = microtask$1; + + var hostReportErrors$1 = function (a, b) { + try { + // eslint-disable-next-line no-console -- safe + arguments.length == 1 ? console.error(a) : console.error(a, b); + } catch (error) { /* empty */ } + }; + + var perform$3 = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } + }; + + var global$u = global$M; + + var promiseNativeConstructor = global$u.Promise; + + /* global Deno -- Deno case */ + + var engineIsDeno = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; + + var IS_DENO$1 = engineIsDeno; + var IS_NODE$2 = engineIsNode; + + var engineIsBrowser = !IS_DENO$1 && !IS_NODE$2 + && typeof window == 'object' + && typeof document == 'object'; + + var global$t = global$M; + var NativePromiseConstructor$3 = promiseNativeConstructor; + var isCallable$b = isCallable$w; + var isForced$3 = isForced_1; + var inspectSource = inspectSource$3; + var wellKnownSymbol$e = wellKnownSymbol$v; + var IS_BROWSER = engineIsBrowser; + var IS_DENO = engineIsDeno; + var V8_VERSION$2 = engineV8Version; + + NativePromiseConstructor$3 && NativePromiseConstructor$3.prototype; + var SPECIES$2 = wellKnownSymbol$e('species'); + var SUBCLASSING = false; + var NATIVE_PROMISE_REJECTION_EVENT$1 = isCallable$b(global$t.PromiseRejectionEvent); + + var FORCED_PROMISE_CONSTRUCTOR$5 = isForced$3('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor$3); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor$3); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION$2 === 66) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (!V8_VERSION$2 || V8_VERSION$2 < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor$3(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES$2] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT$1; + }); + + var promiseConstructorDetection = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR$5, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT$1, + SUBCLASSING: SUBCLASSING + }; + + var newPromiseCapability$2 = {}; + + var aCallable$7 = aCallable$c; + + var $TypeError$a = TypeError; + + var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw $TypeError$a('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable$7(resolve); + this.reject = aCallable$7(reject); + }; + + // `NewPromiseCapability` abstract operation + // https://tc39.es/ecma262/#sec-newpromisecapability + newPromiseCapability$2.f = function (C) { + return new PromiseCapability(C); + }; + + var $$O = _export; + var IS_NODE$1 = engineIsNode; + var global$s = global$M; + var call$h = functionCall; + var defineBuiltIn$b = defineBuiltIn$h; + var setPrototypeOf$5 = objectSetPrototypeOf; + var setToStringTag$6 = setToStringTag$9; + var setSpecies$4 = setSpecies$5; + var aCallable$6 = aCallable$c; + var isCallable$a = isCallable$w; + var isObject$d = isObject$l; + var anInstance$8 = anInstance$9; + var speciesConstructor$3 = speciesConstructor$4; + var task = task$1.set; + var microtask = microtask_1; + var hostReportErrors = hostReportErrors$1; + var perform$2 = perform$3; + var Queue = queue$1; + var InternalStateModule$8 = internalState; + var NativePromiseConstructor$2 = promiseNativeConstructor; + var PromiseConstructorDetection = promiseConstructorDetection; + var newPromiseCapabilityModule$3 = newPromiseCapability$2; + + var PROMISE = 'Promise'; + var FORCED_PROMISE_CONSTRUCTOR$4 = PromiseConstructorDetection.CONSTRUCTOR; + var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; + var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; + var getInternalPromiseState = InternalStateModule$8.getterFor(PROMISE); + var setInternalState$7 = InternalStateModule$8.set; + var NativePromisePrototype$1 = NativePromiseConstructor$2 && NativePromiseConstructor$2.prototype; + var PromiseConstructor = NativePromiseConstructor$2; + var PromisePrototype = NativePromisePrototype$1; + var TypeError$6 = global$s.TypeError; + var document$1 = global$s.document; + var process$1 = global$s.process; + var newPromiseCapability$1 = newPromiseCapabilityModule$3.f; + var newGenericPromiseCapability = newPromiseCapability$1; + + var DISPATCH_EVENT = !!(document$1 && document$1.createEvent && global$s.dispatchEvent); + var UNHANDLED_REJECTION = 'unhandledrejection'; + var REJECTION_HANDLED = 'rejectionhandled'; + var PENDING = 0; + var FULFILLED = 1; + var REJECTED = 2; + var HANDLED = 1; + var UNHANDLED = 2; + + var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + + // helpers + var isThenable = function (it) { + var then; + return isObject$d(it) && isCallable$a(then = it.then) ? then : false; + }; + + var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state == FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError$6('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call$h(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } + }; + + var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); + }; + + var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document$1.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global$s.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global$s['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); + }; + + var onUnhandled = function (state) { + call$h(task, global$s, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform$2(function () { + if (IS_NODE$1) { + process$1.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); + }; + + var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; + }; + + var onHandleUnhandled = function (state) { + call$h(task, global$s, function () { + var promise = state.facade; + if (IS_NODE$1) { + process$1.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); + }; + + var bind$7 = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; + }; + + var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); + }; + + var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw TypeError$6("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + call$h(then, value, + bind$7(internalResolve, wrapper, state), + bind$7(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } + }; + + // constructor polyfill + if (FORCED_PROMISE_CONSTRUCTOR$4) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance$8(this, PromisePrototype); + aCallable$6(executor); + call$h(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind$7(internalResolve, state), bind$7(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState$7(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: undefined + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn$b(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability$1(speciesConstructor$3(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable$a(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable$a(onRejected) && onRejected; + reaction.domain = IS_NODE$1 ? process$1.domain : undefined; + if (state.state == PENDING) state.reactions.add(reaction); + else microtask(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind$7(internalResolve, state); + this.reject = bind$7(internalReject, state); + }; + + newPromiseCapabilityModule$3.f = newPromiseCapability$1 = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (isCallable$a(NativePromiseConstructor$2) && NativePromisePrototype$1 !== Object.prototype) { + nativeThen = NativePromisePrototype$1.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn$b(NativePromisePrototype$1, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call$h(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype$1.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf$5) { + setPrototypeOf$5(NativePromisePrototype$1, PromisePrototype); + } + } + } + + $$O({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR$4 }, { + Promise: PromiseConstructor + }); + + setToStringTag$6(PromiseConstructor, PROMISE, false); + setSpecies$4(PROMISE); + + var bind$6 = functionBindContext; + var call$g = functionCall; + var anObject$8 = anObject$o; + var tryToString$3 = tryToString$7; + var isArrayIteratorMethod$1 = isArrayIteratorMethod$3; + var lengthOfArrayLike$k = lengthOfArrayLike$o; + var isPrototypeOf$8 = objectIsPrototypeOf; + var getIterator$2 = getIterator$4; + var getIteratorMethod$2 = getIteratorMethod$5; + var iteratorClose = iteratorClose$2; + + var $TypeError$9 = TypeError; + + var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; + }; + + var ResultPrototype = Result.prototype; + + var iterate$4 = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind$6(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject$8(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod$2(iterable); + if (!iterFn) throw $TypeError$9(tryToString$3(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod$1(iterFn)) { + for (index = 0, length = lengthOfArrayLike$k(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf$8(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator$2(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call$g(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf$8(ResultPrototype, result)) return result; + } return new Result(false); + }; + + var NativePromiseConstructor$1 = promiseNativeConstructor; + var checkCorrectnessOfIteration$2 = checkCorrectnessOfIteration$4; + var FORCED_PROMISE_CONSTRUCTOR$3 = promiseConstructorDetection.CONSTRUCTOR; + + var promiseStaticsIncorrectIteration = FORCED_PROMISE_CONSTRUCTOR$3 || !checkCorrectnessOfIteration$2(function (iterable) { + NativePromiseConstructor$1.all(iterable).then(undefined, function () { /* empty */ }); + }); + + var $$N = _export; + var call$f = functionCall; + var aCallable$5 = aCallable$c; + var newPromiseCapabilityModule$2 = newPromiseCapability$2; + var perform$1 = perform$3; + var iterate$3 = iterate$4; + var PROMISE_STATICS_INCORRECT_ITERATION$1 = promiseStaticsIncorrectIteration; + + // `Promise.all` method + // https://tc39.es/ecma262/#sec-promise.all + $$N({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION$1 }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule$2.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform$1(function () { + var $promiseResolve = aCallable$5(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate$3(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call$f($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } + }); + + var $$M = _export; + var FORCED_PROMISE_CONSTRUCTOR$2 = promiseConstructorDetection.CONSTRUCTOR; + var NativePromiseConstructor = promiseNativeConstructor; + var getBuiltIn$9 = getBuiltIn$f; + var isCallable$9 = isCallable$w; + var defineBuiltIn$a = defineBuiltIn$h; + + var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + + // `Promise.prototype.catch` method + // https://tc39.es/ecma262/#sec-promise.prototype.catch + $$M({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR$2, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + + // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` + if (isCallable$9(NativePromiseConstructor)) { + var method = getBuiltIn$9('Promise').prototype['catch']; + if (NativePromisePrototype['catch'] !== method) { + defineBuiltIn$a(NativePromisePrototype, 'catch', method, { unsafe: true }); + } + } + + var $$L = _export; + var call$e = functionCall; + var aCallable$4 = aCallable$c; + var newPromiseCapabilityModule$1 = newPromiseCapability$2; + var perform = perform$3; + var iterate$2 = iterate$4; + var PROMISE_STATICS_INCORRECT_ITERATION = promiseStaticsIncorrectIteration; + + // `Promise.race` method + // https://tc39.es/ecma262/#sec-promise.race + $$L({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule$1.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable$4(C.resolve); + iterate$2(iterable, function (promise) { + call$e($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } + }); + + var $$K = _export; + var call$d = functionCall; + var newPromiseCapabilityModule = newPromiseCapability$2; + var FORCED_PROMISE_CONSTRUCTOR$1 = promiseConstructorDetection.CONSTRUCTOR; + + // `Promise.reject` method + // https://tc39.es/ecma262/#sec-promise.reject + $$K({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR$1 }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + call$d(capability.reject, undefined, r); + return capability.promise; + } + }); + + var anObject$7 = anObject$o; + var isObject$c = isObject$l; + var newPromiseCapability = newPromiseCapability$2; + + var promiseResolve$1 = function (C, x) { + anObject$7(C); + if (isObject$c(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; + }; + + var $$J = _export; + var getBuiltIn$8 = getBuiltIn$f; + var FORCED_PROMISE_CONSTRUCTOR = promiseConstructorDetection.CONSTRUCTOR; + var promiseResolve = promiseResolve$1; + + getBuiltIn$8('Promise'); + + // `Promise.resolve` method + // https://tc39.es/ecma262/#sec-promise.resolve + $$J({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve(this, x); + } + }); + + var call$c = functionCall; + var hasOwn$g = hasOwnProperty_1; + var isPrototypeOf$7 = objectIsPrototypeOf; + var regExpFlags = regexpFlags$1; + + var RegExpPrototype$4 = RegExp.prototype; + + var regexpGetFlags = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype$4) && !hasOwn$g(R, 'flags') && isPrototypeOf$7(RegExpPrototype$4, R) + ? call$c(regExpFlags, R) : flags; + }; + + var PROPER_FUNCTION_NAME$2 = functionName.PROPER; + var defineBuiltIn$9 = defineBuiltIn$h; + var anObject$6 = anObject$o; + var $toString$3 = toString$m; + var fails$z = fails$T; + var getRegExpFlags$2 = regexpGetFlags; + + var TO_STRING = 'toString'; + var RegExpPrototype$3 = RegExp.prototype; + var nativeToString = RegExpPrototype$3[TO_STRING]; + + var NOT_GENERIC = fails$z(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); + // FF44- RegExp#toString has a wrong name + var INCORRECT_NAME = PROPER_FUNCTION_NAME$2 && nativeToString.name != TO_STRING; + + // `RegExp.prototype.toString` method + // https://tc39.es/ecma262/#sec-regexp.prototype.tostring + if (NOT_GENERIC || INCORRECT_NAME) { + defineBuiltIn$9(RegExp.prototype, TO_STRING, function toString() { + var R = anObject$6(this); + var pattern = $toString$3(R.source); + var flags = $toString$3(getRegExpFlags$2(R)); + return '/' + pattern + '/' + flags; + }, { unsafe: true }); + } + + var fails$y = fails$T; + var wellKnownSymbol$d = wellKnownSymbol$v; + var V8_VERSION$1 = engineV8Version; + + var SPECIES$1 = wellKnownSymbol$d('species'); + + var arrayMethodHasSpeciesSupport$5 = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION$1 >= 51 || !fails$y(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES$1] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); + }; + + var $$I = _export; + var isArray$5 = isArray$7; + var isConstructor = isConstructor$4; + var isObject$b = isObject$l; + var toAbsoluteIndex$6 = toAbsoluteIndex$8; + var lengthOfArrayLike$j = lengthOfArrayLike$o; + var toIndexedObject$5 = toIndexedObject$b; + var createProperty$3 = createProperty$5; + var wellKnownSymbol$c = wellKnownSymbol$v; + var arrayMethodHasSpeciesSupport$4 = arrayMethodHasSpeciesSupport$5; + var nativeSlice = arraySlice$a; + + var HAS_SPECIES_SUPPORT$3 = arrayMethodHasSpeciesSupport$4('slice'); + + var SPECIES = wellKnownSymbol$c('species'); + var $Array$2 = Array; + var max$3 = Math.max; + + // `Array.prototype.slice` method + // https://tc39.es/ecma262/#sec-array.prototype.slice + // fallback for not array-like ES3 strings and DOM objects + $$I({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$3 }, { + slice: function slice(start, end) { + var O = toIndexedObject$5(this); + var length = lengthOfArrayLike$j(O); + var k = toAbsoluteIndex$6(start, length); + var fin = toAbsoluteIndex$6(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray$5(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (isConstructor(Constructor) && (Constructor === $Array$2 || isArray$5(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject$b(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === $Array$2 || Constructor === undefined) { + return nativeSlice(O, k, fin); + } + } + result = new (Constructor === undefined ? $Array$2 : Constructor)(max$3(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty$3(result, n, O[k]); + result.length = n; + return result; + } + }); + + var $$H = _export; + var $filter$1 = arrayIteration.filter; + var arrayMethodHasSpeciesSupport$3 = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT$2 = arrayMethodHasSpeciesSupport$3('filter'); + + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + // with adding support of @@species + $$H({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$2 }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var objectGetOwnPropertyNamesExternal = {}; + + var toAbsoluteIndex$5 = toAbsoluteIndex$8; + var lengthOfArrayLike$i = lengthOfArrayLike$o; + var createProperty$2 = createProperty$5; + + var $Array$1 = Array; + var max$2 = Math.max; + + var arraySliceSimple = function (O, start, end) { + var length = lengthOfArrayLike$i(O); + var k = toAbsoluteIndex$5(start, length); + var fin = toAbsoluteIndex$5(end === undefined ? length : end, length); + var result = $Array$1(max$2(fin - k, 0)); + for (var n = 0; k < fin; k++, n++) createProperty$2(result, n, O[k]); + result.length = n; + return result; + }; + + /* eslint-disable es/no-object-getownpropertynames -- safe */ + + var classof$a = classofRaw$2; + var toIndexedObject$4 = toIndexedObject$b; + var $getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var arraySlice$8 = arraySliceSimple; + + var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + + var getWindowNames = function (it) { + try { + return $getOwnPropertyNames$1(it); + } catch (error) { + return arraySlice$8(windowNames); + } + }; + + // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window + objectGetOwnPropertyNamesExternal.f = function getOwnPropertyNames(it) { + return windowNames && classof$a(it) == 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames$1(toIndexedObject$4(it)); + }; + + var wellKnownSymbolWrapped = {}; + + var wellKnownSymbol$b = wellKnownSymbol$v; + + wellKnownSymbolWrapped.f = wellKnownSymbol$b; + + var global$r = global$M; + + var path$2 = global$r; + + var path$1 = path$2; + var hasOwn$f = hasOwnProperty_1; + var wrappedWellKnownSymbolModule$1 = wellKnownSymbolWrapped; + var defineProperty$6 = objectDefineProperty.f; + + var wellKnownSymbolDefine = function (NAME) { + var Symbol = path$1.Symbol || (path$1.Symbol = {}); + if (!hasOwn$f(Symbol, NAME)) defineProperty$6(Symbol, NAME, { + value: wrappedWellKnownSymbolModule$1.f(NAME) + }); + }; + + var call$b = functionCall; + var getBuiltIn$7 = getBuiltIn$f; + var wellKnownSymbol$a = wellKnownSymbol$v; + var defineBuiltIn$8 = defineBuiltIn$h; + + var symbolDefineToPrimitive = function () { + var Symbol = getBuiltIn$7('Symbol'); + var SymbolPrototype = Symbol && Symbol.prototype; + var valueOf = SymbolPrototype && SymbolPrototype.valueOf; + var TO_PRIMITIVE = wellKnownSymbol$a('toPrimitive'); + + if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn$8(SymbolPrototype, TO_PRIMITIVE, function (hint) { + return call$b(valueOf, this); + }, { arity: 1 }); + } + }; + + var $$G = _export; + var global$q = global$M; + var call$a = functionCall; + var uncurryThis$v = functionUncurryThis; + var DESCRIPTORS$i = descriptors; + var NATIVE_SYMBOL$4 = symbolConstructorDetection; + var fails$x = fails$T; + var hasOwn$e = hasOwnProperty_1; + var isPrototypeOf$6 = objectIsPrototypeOf; + var anObject$5 = anObject$o; + var toIndexedObject$3 = toIndexedObject$b; + var toPropertyKey$1 = toPropertyKey$5; + var $toString$2 = toString$m; + var createPropertyDescriptor$5 = createPropertyDescriptor$a; + var nativeObjectCreate = objectCreate; + var objectKeys$1 = objectKeys$3; + var getOwnPropertyNamesModule$1 = objectGetOwnPropertyNames; + var getOwnPropertyNamesExternal = objectGetOwnPropertyNamesExternal; + var getOwnPropertySymbolsModule$2 = objectGetOwnPropertySymbols; + var getOwnPropertyDescriptorModule$1 = objectGetOwnPropertyDescriptor; + var definePropertyModule$1 = objectDefineProperty; + var definePropertiesModule = objectDefineProperties; + var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable; + var defineBuiltIn$7 = defineBuiltIn$h; + var defineBuiltInAccessor$a = defineBuiltInAccessor$d; + var shared$2 = sharedExports; + var sharedKey = sharedKey$4; + var hiddenKeys$1 = hiddenKeys$6; + var uid$2 = uid$5; + var wellKnownSymbol$9 = wellKnownSymbol$v; + var wrappedWellKnownSymbolModule = wellKnownSymbolWrapped; + var defineWellKnownSymbol$1 = wellKnownSymbolDefine; + var defineSymbolToPrimitive = symbolDefineToPrimitive; + var setToStringTag$5 = setToStringTag$9; + var InternalStateModule$7 = internalState; + var $forEach$1 = arrayIteration.forEach; + + var HIDDEN = sharedKey('hidden'); + var SYMBOL = 'Symbol'; + var PROTOTYPE$1 = 'prototype'; + + var setInternalState$6 = InternalStateModule$7.set; + var getInternalState$5 = InternalStateModule$7.getterFor(SYMBOL); + + var ObjectPrototype$2 = Object[PROTOTYPE$1]; + var $Symbol = global$q.Symbol; + var SymbolPrototype$1 = $Symbol && $Symbol[PROTOTYPE$1]; + var TypeError$5 = global$q.TypeError; + var QObject = global$q.QObject; + var nativeGetOwnPropertyDescriptor$1 = getOwnPropertyDescriptorModule$1.f; + var nativeDefineProperty$1 = definePropertyModule$1.f; + var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; + var nativePropertyIsEnumerable = propertyIsEnumerableModule$1.f; + var push$6 = uncurryThis$v([].push); + + var AllSymbols = shared$2('symbols'); + var ObjectPrototypeSymbols = shared$2('op-symbols'); + var WellKnownSymbolsStore = shared$2('wks'); + + // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 + var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild; + + // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 + var setSymbolDescriptor = DESCRIPTORS$i && fails$x(function () { + return nativeObjectCreate(nativeDefineProperty$1({}, 'a', { + get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; } + })).a != 7; + }) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype$2, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype$2[P]; + nativeDefineProperty$1(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype$2) { + nativeDefineProperty$1(ObjectPrototype$2, P, ObjectPrototypeDescriptor); + } + } : nativeDefineProperty$1; + + var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype$1); + setInternalState$6(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS$i) symbol.description = description; + return symbol; + }; + + var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype$2) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject$5(O); + var key = toPropertyKey$1(P); + anObject$5(Attributes); + if (hasOwn$e(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!hasOwn$e(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor$5(1, {})); + O[HIDDEN][key] = true; + } else { + if (hasOwn$e(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor$5(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty$1(O, key, Attributes); + }; + + var $defineProperties = function defineProperties(O, Properties) { + anObject$5(O); + var properties = toIndexedObject$3(Properties); + var keys = objectKeys$1(properties).concat($getOwnPropertySymbols(properties)); + $forEach$1(keys, function (key) { + if (!DESCRIPTORS$i || call$a($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; + }; + + var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); + }; + + var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPropertyKey$1(V); + var enumerable = call$a(nativePropertyIsEnumerable, this, P); + if (this === ObjectPrototype$2 && hasOwn$e(AllSymbols, P) && !hasOwn$e(ObjectPrototypeSymbols, P)) return false; + return enumerable || !hasOwn$e(this, P) || !hasOwn$e(AllSymbols, P) || hasOwn$e(this, HIDDEN) && this[HIDDEN][P] + ? enumerable : true; + }; + + var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject$3(O); + var key = toPropertyKey$1(P); + if (it === ObjectPrototype$2 && hasOwn$e(AllSymbols, key) && !hasOwn$e(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor$1(it, key); + if (descriptor && hasOwn$e(AllSymbols, key) && !(hasOwn$e(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; + }; + + var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject$3(O)); + var result = []; + $forEach$1(names, function (key) { + if (!hasOwn$e(AllSymbols, key) && !hasOwn$e(hiddenKeys$1, key)) push$6(result, key); + }); + return result; + }; + + var $getOwnPropertySymbols = function (O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype$2; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject$3(O)); + var result = []; + $forEach$1(names, function (key) { + if (hasOwn$e(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn$e(ObjectPrototype$2, key))) { + push$6(result, AllSymbols[key]); + } + }); + return result; + }; + + // `Symbol` constructor + // https://tc39.es/ecma262/#sec-symbol-constructor + if (!NATIVE_SYMBOL$4) { + $Symbol = function Symbol() { + if (isPrototypeOf$6(SymbolPrototype$1, this)) throw TypeError$5('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : $toString$2(arguments[0]); + var tag = uid$2(description); + var setter = function (value) { + if (this === ObjectPrototype$2) call$a(setter, ObjectPrototypeSymbols, value); + if (hasOwn$e(this, HIDDEN) && hasOwn$e(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDescriptor(this, tag, createPropertyDescriptor$5(1, value)); + }; + if (DESCRIPTORS$i && USE_SETTER) setSymbolDescriptor(ObjectPrototype$2, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + SymbolPrototype$1 = $Symbol[PROTOTYPE$1]; + + defineBuiltIn$7(SymbolPrototype$1, 'toString', function toString() { + return getInternalState$5(this).tag; + }); + + defineBuiltIn$7($Symbol, 'withoutSetter', function (description) { + return wrap(uid$2(description), description); + }); + + propertyIsEnumerableModule$1.f = $propertyIsEnumerable; + definePropertyModule$1.f = $defineProperty; + definePropertiesModule.f = $defineProperties; + getOwnPropertyDescriptorModule$1.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule$1.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule$2.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol$9(name), name); + }; + + if (DESCRIPTORS$i) { + // https://github.com/tc39/proposal-Symbol-description + defineBuiltInAccessor$a(SymbolPrototype$1, 'description', { + configurable: true, + get: function description() { + return getInternalState$5(this).description; + } + }); + { + defineBuiltIn$7(ObjectPrototype$2, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } + } + + $$G({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL$4, sham: !NATIVE_SYMBOL$4 }, { + Symbol: $Symbol + }); + + $forEach$1(objectKeys$1(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol$1(name); + }); + + $$G({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL$4 }, { + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } + }); + + $$G({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL$4, sham: !DESCRIPTORS$i }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor + }); + + $$G({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL$4 }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames + }); + + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + defineSymbolToPrimitive(); + + // `Symbol.prototype[@@toStringTag]` property + // https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag + setToStringTag$5($Symbol, SYMBOL); + + hiddenKeys$1[HIDDEN] = true; + + var NATIVE_SYMBOL$3 = symbolConstructorDetection; + + /* eslint-disable es/no-symbol -- safe */ + var symbolRegistryDetection = NATIVE_SYMBOL$3 && !!Symbol['for'] && !!Symbol.keyFor; + + var $$F = _export; + var getBuiltIn$6 = getBuiltIn$f; + var hasOwn$d = hasOwnProperty_1; + var toString$c = toString$m; + var shared$1 = sharedExports; + var NATIVE_SYMBOL_REGISTRY$1 = symbolRegistryDetection; + + var StringToSymbolRegistry = shared$1('string-to-symbol-registry'); + var SymbolToStringRegistry$1 = shared$1('symbol-to-string-registry'); + + // `Symbol.for` method + // https://tc39.es/ecma262/#sec-symbol.for + $$F({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY$1 }, { + 'for': function (key) { + var string = toString$c(key); + if (hasOwn$d(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = getBuiltIn$6('Symbol')(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry$1[symbol] = string; + return symbol; + } + }); + + var $$E = _export; + var hasOwn$c = hasOwnProperty_1; + var isSymbol$3 = isSymbol$6; + var tryToString$2 = tryToString$7; + var shared = sharedExports; + var NATIVE_SYMBOL_REGISTRY = symbolRegistryDetection; + + var SymbolToStringRegistry = shared('symbol-to-string-registry'); + + // `Symbol.keyFor` method + // https://tc39.es/ecma262/#sec-symbol.keyfor + $$E({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + keyFor: function keyFor(sym) { + if (!isSymbol$3(sym)) throw TypeError(tryToString$2(sym) + ' is not a symbol'); + if (hasOwn$c(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + } + }); + + var uncurryThis$u = functionUncurryThis; + var isArray$4 = isArray$7; + var isCallable$8 = isCallable$w; + var classof$9 = classofRaw$2; + var toString$b = toString$m; + + var push$5 = uncurryThis$u([].push); + + var getJsonReplacerFunction = function (replacer) { + if (isCallable$8(replacer)) return replacer; + if (!isArray$4(replacer)) return; + var rawLength = replacer.length; + var keys = []; + for (var i = 0; i < rawLength; i++) { + var element = replacer[i]; + if (typeof element == 'string') push$5(keys, element); + else if (typeof element == 'number' || classof$9(element) == 'Number' || classof$9(element) == 'String') push$5(keys, toString$b(element)); + } + var keysLength = keys.length; + var root = true; + return function (key, value) { + if (root) { + root = false; + return value; + } + if (isArray$4(this)) return value; + for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value; + }; + }; + + var $$D = _export; + var getBuiltIn$5 = getBuiltIn$f; + var apply$6 = functionApply; + var call$9 = functionCall; + var uncurryThis$t = functionUncurryThis; + var fails$w = fails$T; + var isCallable$7 = isCallable$w; + var isSymbol$2 = isSymbol$6; + var arraySlice$7 = arraySlice$a; + var getReplacerFunction = getJsonReplacerFunction; + var NATIVE_SYMBOL$2 = symbolConstructorDetection; + + var $String = String; + var $stringify = getBuiltIn$5('JSON', 'stringify'); + var exec$6 = uncurryThis$t(/./.exec); + var charAt$5 = uncurryThis$t(''.charAt); + var charCodeAt$2 = uncurryThis$t(''.charCodeAt); + var replace$8 = uncurryThis$t(''.replace); + var numberToString$1 = uncurryThis$t(1.0.toString); + + var tester = /[\uD800-\uDFFF]/g; + var low = /^[\uD800-\uDBFF]$/; + var hi = /^[\uDC00-\uDFFF]$/; + + var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL$2 || fails$w(function () { + var symbol = getBuiltIn$5('Symbol')(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; + }); + + // https://github.com/tc39/proposal-well-formed-stringify + var ILL_FORMED_UNICODE = fails$w(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; + }); + + var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice$7(arguments); + var $replacer = getReplacerFunction(replacer); + if (!isCallable$7($replacer) && (it === undefined || isSymbol$2(it))) return; // IE8 returns string on undefined + args[1] = function (key, value) { + // some old implementations (like WebKit) could pass numbers as keys + if (isCallable$7($replacer)) value = call$9($replacer, this, $String(key), value); + if (!isSymbol$2(value)) return value; + }; + return apply$6($stringify, null, args); + }; + + var fixIllFormed = function (match, offset, string) { + var prev = charAt$5(string, offset - 1); + var next = charAt$5(string, offset + 1); + if ((exec$6(low, match) && !exec$6(hi, next)) || (exec$6(hi, match) && !exec$6(low, prev))) { + return '\\u' + numberToString$1(charCodeAt$2(match, 0), 16); + } return match; + }; + + if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $$D({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice$7(arguments); + var result = apply$6(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace$8(result, tester, fixIllFormed) : result; + } + }); + } + + var $$C = _export; + var NATIVE_SYMBOL$1 = symbolConstructorDetection; + var fails$v = fails$T; + var getOwnPropertySymbolsModule$1 = objectGetOwnPropertySymbols; + var toObject$d = toObject$j; + + // V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives + // https://bugs.chromium.org/p/v8/issues/detail?id=3443 + var FORCED$d = !NATIVE_SYMBOL$1 || fails$v(function () { getOwnPropertySymbolsModule$1.f(1); }); + + // `Object.getOwnPropertySymbols` method + // https://tc39.es/ecma262/#sec-object.getownpropertysymbols + $$C({ target: 'Object', stat: true, forced: FORCED$d }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + var $getOwnPropertySymbols = getOwnPropertySymbolsModule$1.f; + return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject$d(it)) : []; + } + }); + + var $$B = _export; + var DESCRIPTORS$h = descriptors; + var global$p = global$M; + var uncurryThis$s = functionUncurryThis; + var hasOwn$b = hasOwnProperty_1; + var isCallable$6 = isCallable$w; + var isPrototypeOf$5 = objectIsPrototypeOf; + var toString$a = toString$m; + var defineBuiltInAccessor$9 = defineBuiltInAccessor$d; + var copyConstructorProperties$2 = copyConstructorProperties$4; + + var NativeSymbol = global$p.Symbol; + var SymbolPrototype = NativeSymbol && NativeSymbol.prototype; + + if (DESCRIPTORS$h && isCallable$6(NativeSymbol) && (!('description' in SymbolPrototype) || + // Safari 12 bug + NativeSymbol().description !== undefined + )) { + var EmptyStringDescriptionStore = {}; + // wrap Symbol constructor for correct work with undefined description + var SymbolWrapper = function Symbol() { + var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString$a(arguments[0]); + var result = isPrototypeOf$5(SymbolPrototype, this) + ? new NativeSymbol(description) + // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' + : description === undefined ? NativeSymbol() : NativeSymbol(description); + if (description === '') EmptyStringDescriptionStore[result] = true; + return result; + }; + + copyConstructorProperties$2(SymbolWrapper, NativeSymbol); + SymbolWrapper.prototype = SymbolPrototype; + SymbolPrototype.constructor = SymbolWrapper; + + var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)'; + var thisSymbolValue = uncurryThis$s(SymbolPrototype.valueOf); + var symbolDescriptiveString = uncurryThis$s(SymbolPrototype.toString); + var regexp = /^Symbol\((.*)\)[^)]+$/; + var replace$7 = uncurryThis$s(''.replace); + var stringSlice$7 = uncurryThis$s(''.slice); + + defineBuiltInAccessor$9(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + var symbol = thisSymbolValue(this); + if (hasOwn$b(EmptyStringDescriptionStore, symbol)) return ''; + var string = symbolDescriptiveString(symbol); + var desc = NATIVE_SYMBOL ? stringSlice$7(string, 7, -1) : replace$7(string, regexp, '$1'); + return desc === '' ? undefined : desc; + } + }); + + $$B({ global: true, constructor: true, forced: true }, { + Symbol: SymbolWrapper + }); + } + + var $$A = _export; + var $map$1 = arrayIteration.map; + var arrayMethodHasSpeciesSupport$2 = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport$2('map'); + + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + // with adding support of @@species + $$A({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, { + map: function map(callbackfn /* , thisArg */) { + return $map$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + var $$z = _export; + var uncurryThis$r = functionUncurryThis; + var IndexedObject$3 = indexedObject; + var toIndexedObject$2 = toIndexedObject$b; + var arrayMethodIsStrict$2 = arrayMethodIsStrict$4; + + var nativeJoin = uncurryThis$r([].join); + + var ES3_STRINGS = IndexedObject$3 != Object; + var FORCED$c = ES3_STRINGS || !arrayMethodIsStrict$2('join', ','); + + // `Array.prototype.join` method + // https://tc39.es/ecma262/#sec-array.prototype.join + $$z({ target: 'Array', proto: true, forced: FORCED$c }, { + join: function join(separator) { + return nativeJoin(toIndexedObject$2(this), separator === undefined ? ',' : separator); + } + }); + + var isCallable$5 = isCallable$w; + var isObject$a = isObject$l; + var setPrototypeOf$4 = objectSetPrototypeOf; + + // makes subclassing work correct for wrapped built-ins + var inheritIfRequired$6 = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf$4 && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable$5(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject$a(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf$4($this, NewTargetPrototype); + return $this; + }; + + var isObject$9 = isObject$l; + var classof$8 = classofRaw$2; + var wellKnownSymbol$8 = wellKnownSymbol$v; + + var MATCH$2 = wellKnownSymbol$8('match'); + + // `IsRegExp` abstract operation + // https://tc39.es/ecma262/#sec-isregexp + var isRegexp = function (it) { + var isRegExp; + return isObject$9(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classof$8(it) == 'RegExp'); + }; + + var defineProperty$5 = objectDefineProperty.f; + + var proxyAccessor$2 = function (Target, Source, key) { + key in Target || defineProperty$5(Target, key, { + configurable: true, + get: function () { return Source[key]; }, + set: function (it) { Source[key] = it; } + }); + }; + + var DESCRIPTORS$g = descriptors; + var global$o = global$M; + var uncurryThis$q = functionUncurryThis; + var isForced$2 = isForced_1; + var inheritIfRequired$5 = inheritIfRequired$6; + var createNonEnumerableProperty$6 = createNonEnumerableProperty$d; + var getOwnPropertyNames$3 = objectGetOwnPropertyNames.f; + var isPrototypeOf$4 = objectIsPrototypeOf; + var isRegExp$3 = isRegexp; + var toString$9 = toString$m; + var getRegExpFlags$1 = regexpGetFlags; + var stickyHelpers$1 = regexpStickyHelpers; + var proxyAccessor$1 = proxyAccessor$2; + var defineBuiltIn$6 = defineBuiltIn$h; + var fails$u = fails$T; + var hasOwn$a = hasOwnProperty_1; + var enforceInternalState$2 = internalState.enforce; + var setSpecies$3 = setSpecies$5; + var wellKnownSymbol$7 = wellKnownSymbol$v; + var UNSUPPORTED_DOT_ALL$1 = regexpUnsupportedDotAll; + var UNSUPPORTED_NCG = regexpUnsupportedNcg; + + var MATCH$1 = wellKnownSymbol$7('match'); + var NativeRegExp = global$o.RegExp; + var RegExpPrototype$2 = NativeRegExp.prototype; + var SyntaxError = global$o.SyntaxError; + var exec$5 = uncurryThis$q(RegExpPrototype$2.exec); + var charAt$4 = uncurryThis$q(''.charAt); + var replace$6 = uncurryThis$q(''.replace); + var stringIndexOf$1 = uncurryThis$q(''.indexOf); + var stringSlice$6 = uncurryThis$q(''.slice); + // TODO: Use only proper RegExpIdentifierName + var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; + var re1 = /a/g; + var re2 = /a/g; + + // "new" should create a new object, old webkit bug + var CORRECT_NEW = new NativeRegExp(re1) !== re1; + + var MISSED_STICKY$1 = stickyHelpers$1.MISSED_STICKY; + var UNSUPPORTED_Y$1 = stickyHelpers$1.UNSUPPORTED_Y; + + var BASE_FORCED = DESCRIPTORS$g && + (!CORRECT_NEW || MISSED_STICKY$1 || UNSUPPORTED_DOT_ALL$1 || UNSUPPORTED_NCG || fails$u(function () { + re2[MATCH$1] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; + })); + + var handleDotAll = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var brackets = false; + var chr; + for (; index <= length; index++) { + chr = charAt$4(string, index); + if (chr === '\\') { + result += chr + charAt$4(string, ++index); + continue; + } + if (!brackets && chr === '.') { + result += '[\\s\\S]'; + } else { + if (chr === '[') { + brackets = true; + } else if (chr === ']') { + brackets = false; + } result += chr; + } + } return result; + }; + + var handleNCG = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var named = []; + var names = {}; + var brackets = false; + var ncg = false; + var groupid = 0; + var groupname = ''; + var chr; + for (; index <= length; index++) { + chr = charAt$4(string, index); + if (chr === '\\') { + chr = chr + charAt$4(string, ++index); + } else if (chr === ']') { + brackets = false; + } else if (!brackets) switch (true) { + case chr === '[': + brackets = true; + break; + case chr === '(': + if (exec$5(IS_NCG, stringSlice$6(string, index + 1))) { + index += 2; + ncg = true; + } + result += chr; + groupid++; + continue; + case chr === '>' && ncg: + if (groupname === '' || hasOwn$a(names, groupname)) { + throw new SyntaxError('Invalid capture group name'); + } + names[groupname] = true; + named[named.length] = [groupname, groupid]; + ncg = false; + groupname = ''; + continue; + } + if (ncg) groupname += chr; + else result += chr; + } return [result, named]; + }; + + // `RegExp` constructor + // https://tc39.es/ecma262/#sec-regexp-constructor + if (isForced$2('RegExp', BASE_FORCED)) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = isPrototypeOf$4(RegExpPrototype$2, this); + var patternIsRegExp = isRegExp$3(pattern); + var flagsAreUndefined = flags === undefined; + var groups = []; + var rawPattern = pattern; + var rawFlags, dotAll, sticky, handled, result, state; + + if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { + return pattern; + } + + if (patternIsRegExp || isPrototypeOf$4(RegExpPrototype$2, pattern)) { + pattern = pattern.source; + if (flagsAreUndefined) flags = getRegExpFlags$1(rawPattern); + } + + pattern = pattern === undefined ? '' : toString$9(pattern); + flags = flags === undefined ? '' : toString$9(flags); + rawPattern = pattern; + + if (UNSUPPORTED_DOT_ALL$1 && 'dotAll' in re1) { + dotAll = !!flags && stringIndexOf$1(flags, 's') > -1; + if (dotAll) flags = replace$6(flags, /s/g, ''); + } + + rawFlags = flags; + + if (MISSED_STICKY$1 && 'sticky' in re1) { + sticky = !!flags && stringIndexOf$1(flags, 'y') > -1; + if (sticky && UNSUPPORTED_Y$1) flags = replace$6(flags, /y/g, ''); + } + + if (UNSUPPORTED_NCG) { + handled = handleNCG(pattern); + pattern = handled[0]; + groups = handled[1]; + } + + result = inheritIfRequired$5(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype$2, RegExpWrapper); + + if (dotAll || sticky || groups.length) { + state = enforceInternalState$2(result); + if (dotAll) { + state.dotAll = true; + state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); + } + if (sticky) state.sticky = true; + if (groups.length) state.groups = groups; + } + + if (pattern !== rawPattern) try { + // fails in old engines, but we have no alternatives for unsupported regex syntax + createNonEnumerableProperty$6(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); + } catch (error) { /* empty */ } + + return result; + }; + + for (var keys$1 = getOwnPropertyNames$3(NativeRegExp), index$1 = 0; keys$1.length > index$1;) { + proxyAccessor$1(RegExpWrapper, NativeRegExp, keys$1[index$1++]); + } + + RegExpPrototype$2.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype$2; + defineBuiltIn$6(global$o, 'RegExp', RegExpWrapper, { constructor: true }); + } + + // https://tc39.es/ecma262/#sec-get-regexp-@@species + setSpecies$3('RegExp'); + + var DESCRIPTORS$f = descriptors; + var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll; + var classof$7 = classofRaw$2; + var defineBuiltInAccessor$8 = defineBuiltInAccessor$d; + var getInternalState$4 = internalState.get; + + var RegExpPrototype$1 = RegExp.prototype; + var $TypeError$8 = TypeError; + + // `RegExp.prototype.dotAll` getter + // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall + if (DESCRIPTORS$f && UNSUPPORTED_DOT_ALL) { + defineBuiltInAccessor$8(RegExpPrototype$1, 'dotAll', { + configurable: true, + get: function dotAll() { + if (this === RegExpPrototype$1) return undefined; + // We can't use InternalStateModule.getterFor because + // we don't add metadata for regexps created by a literal. + if (classof$7(this) === 'RegExp') { + return !!getInternalState$4(this).dotAll; + } + throw $TypeError$8('Incompatible receiver, RegExp required'); + } + }); + } + + var DESCRIPTORS$e = descriptors; + var MISSED_STICKY = regexpStickyHelpers.MISSED_STICKY; + var classof$6 = classofRaw$2; + var defineBuiltInAccessor$7 = defineBuiltInAccessor$d; + var getInternalState$3 = internalState.get; + + var RegExpPrototype = RegExp.prototype; + var $TypeError$7 = TypeError; + + // `RegExp.prototype.sticky` getter + // https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky + if (DESCRIPTORS$e && MISSED_STICKY) { + defineBuiltInAccessor$7(RegExpPrototype, 'sticky', { + configurable: true, + get: function sticky() { + if (this === RegExpPrototype) return; + // We can't use InternalStateModule.getterFor because + // we don't add metadata for regexps created by a literal. + if (classof$6(this) === 'RegExp') { + return !!getInternalState$3(this).sticky; + } + throw $TypeError$7('Incompatible receiver, RegExp required'); + } + }); + } + + var DESCRIPTORS$d = descriptors; + var isArray$3 = isArray$7; + + var $TypeError$6 = TypeError; + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$3 = Object.getOwnPropertyDescriptor; + + // Safari < 13 does not throw an error in this case + var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS$d && !function () { + // makes no sense without proper strict mode support + if (this !== undefined) return true; + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).length = 1; + } catch (error) { + return error instanceof TypeError; + } + }(); + + var arraySetLength = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { + if (isArray$3(O) && !getOwnPropertyDescriptor$3(O, 'length').writable) { + throw $TypeError$6('Cannot set read only .length'); + } return O.length = length; + } : function (O, length) { + return O.length = length; + }; + + var $TypeError$5 = TypeError; + var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + + var doesNotExceedSafeInteger$5 = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError$5('Maximum allowed index exceeded'); + return it; + }; + + var $$y = _export; + var toObject$c = toObject$j; + var lengthOfArrayLike$h = lengthOfArrayLike$o; + var setArrayLength$2 = arraySetLength; + var doesNotExceedSafeInteger$4 = doesNotExceedSafeInteger$5; + var fails$t = fails$T; + + var INCORRECT_TO_LENGTH = fails$t(function () { + return [].push.call({ length: 0x100000000 }, 1) !== 4294967297; + }); + + // V8 and Safari <= 15.4, FF < 23 throws InternalError + // https://bugs.chromium.org/p/v8/issues/detail?id=12681 + var properErrorOnNonWritableLength$1 = function () { + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).push(); + } catch (error) { + return error instanceof TypeError; + } + }; + + var FORCED$b = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength$1(); + + // `Array.prototype.push` method + // https://tc39.es/ecma262/#sec-array.prototype.push + $$y({ target: 'Array', proto: true, arity: 1, forced: FORCED$b }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + push: function push(item) { + var O = toObject$c(this); + var len = lengthOfArrayLike$h(O); + var argCount = arguments.length; + doesNotExceedSafeInteger$4(len + argCount); + for (var i = 0; i < argCount; i++) { + O[len] = arguments[i]; + len++; + } + setArrayLength$2(O, len); + return len; + } + }); + + var internalMetadata = {exports: {}}; + + // FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it + var fails$s = fails$T; + + var arrayBufferNonExtensible = fails$s(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe + if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); + } + }); + + var fails$r = fails$T; + var isObject$8 = isObject$l; + var classof$5 = classofRaw$2; + var ARRAY_BUFFER_NON_EXTENSIBLE = arrayBufferNonExtensible; + + // eslint-disable-next-line es/no-object-isextensible -- safe + var $isExtensible = Object.isExtensible; + var FAILS_ON_PRIMITIVES$1 = fails$r(function () { $isExtensible(1); }); + + // `Object.isExtensible` method + // https://tc39.es/ecma262/#sec-object.isextensible + var objectIsExtensible = (FAILS_ON_PRIMITIVES$1 || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { + if (!isObject$8(it)) return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof$5(it) == 'ArrayBuffer') return false; + return $isExtensible ? $isExtensible(it) : true; + } : $isExtensible; + + var fails$q = fails$T; + + var freezing = !fails$q(function () { + // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing + return Object.isExtensible(Object.preventExtensions({})); + }); + + var $$x = _export; + var uncurryThis$p = functionUncurryThis; + var hiddenKeys = hiddenKeys$6; + var isObject$7 = isObject$l; + var hasOwn$9 = hasOwnProperty_1; + var defineProperty$4 = objectDefineProperty.f; + var getOwnPropertyNamesModule = objectGetOwnPropertyNames; + var getOwnPropertyNamesExternalModule = objectGetOwnPropertyNamesExternal; + var isExtensible = objectIsExtensible; + var uid$1 = uid$5; + var FREEZING = freezing; + + var REQUIRED = false; + var METADATA = uid$1('meta'); + var id = 0; + + var setMetadata = function (it) { + defineProperty$4(it, METADATA, { value: { + objectID: 'O' + id++, // object ID + weakData: {} // weak collections IDs + } }); + }; + + var fastKey$1 = function (it, create) { + // return a primitive with prefix + if (!isObject$7(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn$9(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; + }; + + var getWeakData = function (it, create) { + if (!hasOwn$9(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; + }; + + // add metadata on freeze-family methods calling + var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn$9(it, METADATA)) setMetadata(it); + return it; + }; + + var enable = function () { + meta.enable = function () { /* empty */ }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis$p([].splice); + var test = {}; + test[METADATA] = 1; + + // prevent exposing of metadata key + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } return result; + }; + + $$x({ target: 'Object', stat: true, forced: true }, { + getOwnPropertyNames: getOwnPropertyNamesExternalModule.f + }); + } + }; + + var meta = internalMetadata.exports = { + enable: enable, + fastKey: fastKey$1, + getWeakData: getWeakData, + onFreeze: onFreeze + }; + + hiddenKeys[METADATA] = true; + + var internalMetadataExports = internalMetadata.exports; + + var $$w = _export; + var global$n = global$M; + var uncurryThis$o = functionUncurryThis; + var isForced$1 = isForced_1; + var defineBuiltIn$5 = defineBuiltIn$h; + var InternalMetadataModule = internalMetadataExports; + var iterate$1 = iterate$4; + var anInstance$7 = anInstance$9; + var isCallable$4 = isCallable$w; + var isNullOrUndefined$3 = isNullOrUndefined$b; + var isObject$6 = isObject$l; + var fails$p = fails$T; + var checkCorrectnessOfIteration$1 = checkCorrectnessOfIteration$4; + var setToStringTag$4 = setToStringTag$9; + var inheritIfRequired$4 = inheritIfRequired$6; + + var collection$1 = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global$n[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis$o(NativePrototype[KEY]); + defineBuiltIn$5(NativePrototype, KEY, + KEY == 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY == 'delete' ? function (key) { + return IS_WEAK && !isObject$6(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'get' ? function get(key) { + return IS_WEAK && !isObject$6(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY == 'has' ? function has(key) { + return IS_WEAK && !isObject$6(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + var REPLACE = isForced$1( + CONSTRUCTOR_NAME, + !isCallable$4(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails$p(function () { + new NativeConstructor().entries().next(); + })) + ); + + if (REPLACE) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced$1(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails$p(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new -- required for testing + var ACCEPT_ITERABLES = checkCorrectnessOfIteration$1(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails$p(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance$7(dummy, NativePrototype); + var that = inheritIfRequired$4(new NativeConstructor(), dummy, Constructor); + if (!isNullOrUndefined$3(iterable)) iterate$1(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $$w({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported); + + setToStringTag$4(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; + }; + + var defineBuiltIn$4 = defineBuiltIn$h; + + var defineBuiltIns$3 = function (target, src, options) { + for (var key in src) defineBuiltIn$4(target, key, src[key], options); + return target; + }; + + var create$4 = objectCreate; + var defineBuiltInAccessor$6 = defineBuiltInAccessor$d; + var defineBuiltIns$2 = defineBuiltIns$3; + var bind$5 = functionBindContext; + var anInstance$6 = anInstance$9; + var isNullOrUndefined$2 = isNullOrUndefined$b; + var iterate = iterate$4; + var defineIterator = iteratorDefine; + var createIterResultObject = createIterResultObject$3; + var setSpecies$2 = setSpecies$5; + var DESCRIPTORS$c = descriptors; + var fastKey = internalMetadataExports.fastKey; + var InternalStateModule$6 = internalState; + + var setInternalState$5 = InternalStateModule$6.set; + var internalStateGetterFor = InternalStateModule$6.getterFor; + + var collectionStrong$1 = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance$6(that, Prototype); + setInternalState$5(that, { + type: CONSTRUCTOR_NAME, + index: create$4(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS$c) that.size = 0; + if (!isNullOrUndefined$2(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) state.first = entry; + if (previous) previous.next = entry; + if (DESCRIPTORS$c) state.size++; + else that.size++; + // add to index + if (index !== 'F') state.index[index] = entry; + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return state.index[index]; + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key == key) return entry; + } + }; + + defineBuiltIns$2(Prototype, { + // `{ Map, Set }.prototype.clear()` methods + // https://tc39.es/ecma262/#sec-map.prototype.clear + // https://tc39.es/ecma262/#sec-set.prototype.clear + clear: function clear() { + var that = this; + var state = getInternalState(that); + var data = state.index; + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) entry.previous = entry.previous.next = undefined; + delete data[entry.index]; + entry = entry.next; + } + state.first = state.last = undefined; + if (DESCRIPTORS$c) state.size = 0; + else that.size = 0; + }, + // `{ Map, Set }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.delete + // https://tc39.es/ecma262/#sec-set.prototype.delete + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) prev.next = next; + if (next) next.previous = prev; + if (state.first == entry) state.first = next; + if (state.last == entry) state.last = prev; + if (DESCRIPTORS$c) state.size--; + else that.size--; + } return !!entry; + }, + // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods + // https://tc39.es/ecma262/#sec-map.prototype.foreach + // https://tc39.es/ecma262/#sec-set.prototype.foreach + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = bind$5(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + } + }, + // `{ Map, Set}.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.has + // https://tc39.es/ecma262/#sec-set.prototype.has + has: function has(key) { + return !!getEntry(this, key); + } + }); + + defineBuiltIns$2(Prototype, IS_MAP ? { + // `Map.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-map.prototype.get + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // `Map.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-map.prototype.set + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // `Set.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-set.prototype.add + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS$c) defineBuiltInAccessor$6(Prototype, 'size', { + configurable: true, + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods + // https://tc39.es/ecma262/#sec-map.prototype.entries + // https://tc39.es/ecma262/#sec-map.prototype.keys + // https://tc39.es/ecma262/#sec-map.prototype.values + // https://tc39.es/ecma262/#sec-map.prototype-@@iterator + // https://tc39.es/ecma262/#sec-set.prototype.entries + // https://tc39.es/ecma262/#sec-set.prototype.keys + // https://tc39.es/ecma262/#sec-set.prototype.values + // https://tc39.es/ecma262/#sec-set.prototype-@@iterator + defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState$5(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = undefined; + return createIterResultObject(undefined, true); + } + // return step by kind + if (kind == 'keys') return createIterResultObject(entry.key, false); + if (kind == 'values') return createIterResultObject(entry.value, false); + return createIterResultObject([entry.key, entry.value], false); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // `{ Map, Set }.prototype[@@species]` accessors + // https://tc39.es/ecma262/#sec-get-map-@@species + // https://tc39.es/ecma262/#sec-get-set-@@species + setSpecies$2(CONSTRUCTOR_NAME); + } + }; + + var collection = collection$1; + var collectionStrong = collectionStrong$1; + + // `Map` constructor + // https://tc39.es/ecma262/#sec-map-objects + collection('Map', function (init) { + return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; + }, collectionStrong); + + var $$v = _export; + var call$8 = functionCall; + var uncurryThis$n = functionUncurryThis; + var requireObjectCoercible$3 = requireObjectCoercible$b; + var isCallable$3 = isCallable$w; + var isNullOrUndefined$1 = isNullOrUndefined$b; + var isRegExp$2 = isRegexp; + var toString$8 = toString$m; + var getMethod$1 = getMethod$8; + var getRegExpFlags = regexpGetFlags; + var getSubstitution = getSubstitution$2; + var wellKnownSymbol$6 = wellKnownSymbol$v; + + var REPLACE = wellKnownSymbol$6('replace'); + var $TypeError$4 = TypeError; + var indexOf = uncurryThis$n(''.indexOf); + uncurryThis$n(''.replace); + var stringSlice$5 = uncurryThis$n(''.slice); + var max$1 = Math.max; + + var stringIndexOf = function (string, searchValue, fromIndex) { + if (fromIndex > string.length) return -1; + if (searchValue === '') return fromIndex; + return indexOf(string, searchValue, fromIndex); + }; + + // `String.prototype.replaceAll` method + // https://tc39.es/ecma262/#sec-string.prototype.replaceall + $$v({ target: 'String', proto: true }, { + replaceAll: function replaceAll(searchValue, replaceValue) { + var O = requireObjectCoercible$3(this); + var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement; + var position = 0; + var endOfLastMatch = 0; + var result = ''; + if (!isNullOrUndefined$1(searchValue)) { + IS_REG_EXP = isRegExp$2(searchValue); + if (IS_REG_EXP) { + flags = toString$8(requireObjectCoercible$3(getRegExpFlags(searchValue))); + if (!~indexOf(flags, 'g')) throw $TypeError$4('`.replaceAll` does not allow non-global regexes'); + } + replacer = getMethod$1(searchValue, REPLACE); + if (replacer) { + return call$8(replacer, searchValue, O, replaceValue); + } + } + string = toString$8(O); + searchString = toString$8(searchValue); + functionalReplace = isCallable$3(replaceValue); + if (!functionalReplace) replaceValue = toString$8(replaceValue); + searchLength = searchString.length; + advanceBy = max$1(1, searchLength); + position = stringIndexOf(string, searchString, 0); + while (position !== -1) { + replacement = functionalReplace + ? toString$8(replaceValue(searchString, position, string)) + : getSubstitution(searchString, string, position, [], undefined, replaceValue); + result += stringSlice$5(string, endOfLastMatch, position) + replacement; + endOfLastMatch = position + searchLength; + position = stringIndexOf(string, searchString, position + advanceBy); + } + if (endOfLastMatch < string.length) { + result += stringSlice$5(string, endOfLastMatch); + } + return result; + } + }); + + var toString$7 = toString$m; + + var normalizeStringArgument$4 = function (argument, $default) { + return argument === undefined ? arguments.length < 2 ? '' : $default : toString$7(argument); + }; + + var isObject$5 = isObject$l; + var createNonEnumerableProperty$5 = createNonEnumerableProperty$d; + + // `InstallErrorCause` abstract operation + // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause + var installErrorCause$1 = function (O, options) { + if (isObject$5(options) && 'cause' in options) { + createNonEnumerableProperty$5(O, 'cause', options.cause); + } + }; + + var uncurryThis$m = functionUncurryThis; + + var $Error = Error; + var replace$5 = uncurryThis$m(''.replace); + + var TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd'); + // eslint-disable-next-line redos/no-vulnerable -- safe + var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; + var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); + + var errorStackClear = function (stack, dropEntries) { + if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { + while (dropEntries--) stack = replace$5(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); + } return stack; + }; + + var fails$o = fails$T; + var createPropertyDescriptor$4 = createPropertyDescriptor$a; + + var errorStackInstallable = !fails$o(function () { + var error = Error('a'); + if (!('stack' in error)) return true; + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty(error, 'stack', createPropertyDescriptor$4(1, 7)); + return error.stack !== 7; + }); + + var createNonEnumerableProperty$4 = createNonEnumerableProperty$d; + var clearErrorStack$2 = errorStackClear; + var ERROR_STACK_INSTALLABLE = errorStackInstallable; + + // non-standard V8 + var captureStackTrace = Error.captureStackTrace; + + var errorStackInstall = function (error, C, stack, dropEntries) { + if (ERROR_STACK_INSTALLABLE) { + if (captureStackTrace) captureStackTrace(error, C); + else createNonEnumerableProperty$4(error, 'stack', clearErrorStack$2(stack, dropEntries)); + } + }; + + var getBuiltIn$4 = getBuiltIn$f; + var hasOwn$8 = hasOwnProperty_1; + var createNonEnumerableProperty$3 = createNonEnumerableProperty$d; + var isPrototypeOf$3 = objectIsPrototypeOf; + var setPrototypeOf$3 = objectSetPrototypeOf; + var copyConstructorProperties$1 = copyConstructorProperties$4; + var proxyAccessor = proxyAccessor$2; + var inheritIfRequired$3 = inheritIfRequired$6; + var normalizeStringArgument$3 = normalizeStringArgument$4; + var installErrorCause = installErrorCause$1; + var installErrorStack = errorStackInstall; + var DESCRIPTORS$b = descriptors; + + var wrapErrorConstructorWithCause$1 = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) { + var STACK_TRACE_LIMIT = 'stackTraceLimit'; + var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1; + var path = FULL_NAME.split('.'); + var ERROR_NAME = path[path.length - 1]; + var OriginalError = getBuiltIn$4.apply(null, path); + + if (!OriginalError) return; + + var OriginalErrorPrototype = OriginalError.prototype; + + // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006 + if (hasOwn$8(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause; + + if (!FORCED) return OriginalError; + + var BaseError = getBuiltIn$4('Error'); + + var WrappedError = wrapper(function (a, b) { + var message = normalizeStringArgument$3(IS_AGGREGATE_ERROR ? b : a, undefined); + var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError(); + if (message !== undefined) createNonEnumerableProperty$3(result, 'message', message); + installErrorStack(result, WrappedError, result.stack, 2); + if (this && isPrototypeOf$3(OriginalErrorPrototype, this)) inheritIfRequired$3(result, this, WrappedError); + if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]); + return result; + }); + + WrappedError.prototype = OriginalErrorPrototype; + + if (ERROR_NAME !== 'Error') { + if (setPrototypeOf$3) setPrototypeOf$3(WrappedError, BaseError); + else copyConstructorProperties$1(WrappedError, BaseError, { name: true }); + } else if (DESCRIPTORS$b && STACK_TRACE_LIMIT in OriginalError) { + proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT); + proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace'); + } + + copyConstructorProperties$1(WrappedError, OriginalError); + + try { + // Safari 13- bug: WebAssembly errors does not have a proper `.name` + if (OriginalErrorPrototype.name !== ERROR_NAME) { + createNonEnumerableProperty$3(OriginalErrorPrototype, 'name', ERROR_NAME); + } + OriginalErrorPrototype.constructor = WrappedError; + } catch (error) { /* empty */ } + + return WrappedError; + }; + + /* eslint-disable no-unused-vars -- required for functions `.length` */ + + var $$u = _export; + var global$m = global$M; + var apply$5 = functionApply; + var wrapErrorConstructorWithCause = wrapErrorConstructorWithCause$1; + + var WEB_ASSEMBLY = 'WebAssembly'; + var WebAssembly$1 = global$m[WEB_ASSEMBLY]; + + var FORCED$a = Error('e', { cause: 7 }).cause !== 7; + + var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) { + var O = {}; + O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED$a); + $$u({ global: true, constructor: true, arity: 1, forced: FORCED$a }, O); + }; + + var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) { + if (WebAssembly$1 && WebAssembly$1[ERROR_NAME]) { + var O = {}; + O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED$a); + $$u({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED$a }, O); + } + }; + + // https://tc39.es/ecma262/#sec-nativeerror + // https://github.com/tc39/proposal-error-cause + exportGlobalErrorCauseWrapper('Error', function (init) { + return function Error(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('EvalError', function (init) { + return function EvalError(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('RangeError', function (init) { + return function RangeError(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('ReferenceError', function (init) { + return function ReferenceError(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('SyntaxError', function (init) { + return function SyntaxError(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('TypeError', function (init) { + return function TypeError(message) { return apply$5(init, this, arguments); }; + }); + exportGlobalErrorCauseWrapper('URIError', function (init) { + return function URIError(message) { return apply$5(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('CompileError', function (init) { + return function CompileError(message) { return apply$5(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('LinkError', function (init) { + return function LinkError(message) { return apply$5(init, this, arguments); }; + }); + exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) { + return function RuntimeError(message) { return apply$5(init, this, arguments); }; + }); + + var tryToString$1 = tryToString$7; + + var $TypeError$3 = TypeError; + + var deletePropertyOrThrow$4 = function (O, P) { + if (!delete O[P]) throw $TypeError$3('Cannot delete property ' + tryToString$1(P) + ' of ' + tryToString$1(O)); + }; + + var $$t = _export; + var toObject$b = toObject$j; + var lengthOfArrayLike$g = lengthOfArrayLike$o; + var setArrayLength$1 = arraySetLength; + var deletePropertyOrThrow$3 = deletePropertyOrThrow$4; + var doesNotExceedSafeInteger$3 = doesNotExceedSafeInteger$5; + + // IE8- + var INCORRECT_RESULT = [].unshift(0) !== 1; + + // V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError + var properErrorOnNonWritableLength = function () { + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).unshift(); + } catch (error) { + return error instanceof TypeError; + } + }; + + var FORCED$9 = INCORRECT_RESULT || !properErrorOnNonWritableLength(); + + // `Array.prototype.unshift` method + // https://tc39.es/ecma262/#sec-array.prototype.unshift + $$t({ target: 'Array', proto: true, arity: 1, forced: FORCED$9 }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + unshift: function unshift(item) { + var O = toObject$b(this); + var len = lengthOfArrayLike$g(O); + var argCount = arguments.length; + if (argCount) { + doesNotExceedSafeInteger$3(len + argCount); + var k = len; + while (k--) { + var to = k + argCount; + if (k in O) O[to] = O[k]; + else deletePropertyOrThrow$3(O, to); + } + for (var j = 0; j < argCount; j++) { + O[j] = arguments[j]; + } + } return setArrayLength$1(O, len + argCount); + } + }); + + // eslint-disable-next-line es/no-typed-arrays -- safe + var arrayBufferBasicDetection = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; + + var toIntegerOrInfinity$8 = toIntegerOrInfinity$f; + var toLength$6 = toLength$a; + + var $RangeError$4 = RangeError; + + // `ToIndex` abstract operation + // https://tc39.es/ecma262/#sec-toindex + var toIndex$2 = function (it) { + if (it === undefined) return 0; + var number = toIntegerOrInfinity$8(it); + var length = toLength$6(number); + if (number !== length) throw $RangeError$4('Wrong length or index'); + return length; + }; + + // IEEE754 conversions based on https://github.com/feross/ieee754 + var $Array = Array; + var abs$1 = Math.abs; + var pow$2 = Math.pow; + var floor$6 = Math.floor; + var log$1 = Math.log; + var LN2 = Math.LN2; + + var pack = function (number, mantissaLength, bytes) { + var buffer = $Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow$2(2, -24) - pow$2(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs$1(number); + // eslint-disable-next-line no-self-compare -- NaN check + if (number != number || number === Infinity) { + // eslint-disable-next-line no-self-compare -- NaN check + mantissa = number != number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor$6(log$1(number) / LN2); + c = pow$2(2, -exponent); + if (number * c < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow$2(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow$2(2, mantissaLength); + exponent = exponent + eBias; + } else { + mantissa = number * pow$2(2, eBias - 1) * pow$2(2, mantissaLength); + exponent = 0; + } + } + while (mantissaLength >= 8) { + buffer[index++] = mantissa & 255; + mantissa /= 256; + mantissaLength -= 8; + } + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + while (exponentLength > 0) { + buffer[index++] = exponent & 255; + exponent /= 256; + exponentLength -= 8; + } + buffer[--index] |= sign * 128; + return buffer; + }; + + var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + while (nBits > 0) { + exponent = exponent * 256 + buffer[index--]; + nBits -= 8; + } + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + while (nBits > 0) { + mantissa = mantissa * 256 + buffer[index--]; + nBits -= 8; + } + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa = mantissa + pow$2(2, mantissaLength); + exponent = exponent - eBias; + } return (sign ? -1 : 1) * mantissa * pow$2(2, exponent - mantissaLength); + }; + + var ieee754 = { + pack: pack, + unpack: unpack + }; + + var toObject$a = toObject$j; + var toAbsoluteIndex$4 = toAbsoluteIndex$8; + var lengthOfArrayLike$f = lengthOfArrayLike$o; + + // `Array.prototype.fill` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.fill + var arrayFill$1 = function fill(value /* , start = 0, end = @length */) { + var O = toObject$a(this); + var length = lengthOfArrayLike$f(O); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex$4(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex$4(end, length); + while (endPos > index) O[index++] = value; + return O; + }; + + var global$l = global$M; + var uncurryThis$l = functionUncurryThis; + var DESCRIPTORS$a = descriptors; + var NATIVE_ARRAY_BUFFER$1 = arrayBufferBasicDetection; + var FunctionName = functionName; + var createNonEnumerableProperty$2 = createNonEnumerableProperty$d; + var defineBuiltInAccessor$5 = defineBuiltInAccessor$d; + var defineBuiltIns$1 = defineBuiltIns$3; + var fails$n = fails$T; + var anInstance$5 = anInstance$9; + var toIntegerOrInfinity$7 = toIntegerOrInfinity$f; + var toLength$5 = toLength$a; + var toIndex$1 = toIndex$2; + var IEEE754 = ieee754; + var getPrototypeOf$1 = objectGetPrototypeOf; + var setPrototypeOf$2 = objectSetPrototypeOf; + var getOwnPropertyNames$2 = objectGetOwnPropertyNames.f; + var arrayFill = arrayFill$1; + var arraySlice$6 = arraySliceSimple; + var setToStringTag$3 = setToStringTag$9; + var InternalStateModule$5 = internalState; + + var PROPER_FUNCTION_NAME$1 = FunctionName.PROPER; + var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; + var ARRAY_BUFFER$1 = 'ArrayBuffer'; + var DATA_VIEW = 'DataView'; + var PROTOTYPE = 'prototype'; + var WRONG_LENGTH$1 = 'Wrong length'; + var WRONG_INDEX = 'Wrong index'; + var getInternalArrayBufferState = InternalStateModule$5.getterFor(ARRAY_BUFFER$1); + var getInternalDataViewState = InternalStateModule$5.getterFor(DATA_VIEW); + var setInternalState$4 = InternalStateModule$5.set; + var NativeArrayBuffer$1 = global$l[ARRAY_BUFFER$1]; + var $ArrayBuffer = NativeArrayBuffer$1; + var ArrayBufferPrototype$1 = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; + var $DataView = global$l[DATA_VIEW]; + var DataViewPrototype$1 = $DataView && $DataView[PROTOTYPE]; + var ObjectPrototype$1 = Object.prototype; + var Array$1 = global$l.Array; + var RangeError$3 = global$l.RangeError; + var fill = uncurryThis$l(arrayFill); + var reverse = uncurryThis$l([].reverse); + + var packIEEE754 = IEEE754.pack; + var unpackIEEE754 = IEEE754.unpack; + + var packInt8 = function (number) { + return [number & 0xFF]; + }; + + var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; + }; + + var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; + }; + + var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; + }; + + var packFloat32 = function (number) { + return packIEEE754(number, 23, 4); + }; + + var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); + }; + + var addGetter$1 = function (Constructor, key, getInternalState) { + defineBuiltInAccessor$5(Constructor[PROTOTYPE], key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); + }; + + var get = function (view, count, index, isLittleEndian) { + var intIndex = toIndex$1(index); + var store = getInternalDataViewState(view); + if (intIndex + count > store.byteLength) throw RangeError$3(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + var pack = arraySlice$6(bytes, start, start + count); + return isLittleEndian ? pack : reverse(pack); + }; + + var set = function (view, count, index, conversion, value, isLittleEndian) { + var intIndex = toIndex$1(index); + var store = getInternalDataViewState(view); + if (intIndex + count > store.byteLength) throw RangeError$3(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + var pack = conversion(+value); + for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1]; + }; + + if (!NATIVE_ARRAY_BUFFER$1) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance$5(this, ArrayBufferPrototype$1); + var byteLength = toIndex$1(length); + setInternalState$4(this, { + type: ARRAY_BUFFER$1, + bytes: fill(Array$1(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS$a) { + this.byteLength = byteLength; + this.detached = false; + } + }; + + ArrayBufferPrototype$1 = $ArrayBuffer[PROTOTYPE]; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance$5(this, DataViewPrototype$1); + anInstance$5(buffer, ArrayBufferPrototype$1); + var bufferState = getInternalArrayBufferState(buffer); + var bufferLength = bufferState.byteLength; + var offset = toIntegerOrInfinity$7(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError$3('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength$5(byteLength); + if (offset + byteLength > bufferLength) throw RangeError$3(WRONG_LENGTH$1); + setInternalState$4(this, { + type: DATA_VIEW, + buffer: buffer, + byteLength: byteLength, + byteOffset: offset, + bytes: bufferState.bytes + }); + if (!DESCRIPTORS$a) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + DataViewPrototype$1 = $DataView[PROTOTYPE]; + + if (DESCRIPTORS$a) { + addGetter$1($ArrayBuffer, 'byteLength', getInternalArrayBufferState); + addGetter$1($DataView, 'buffer', getInternalDataViewState); + addGetter$1($DataView, 'byteLength', getInternalDataViewState); + addGetter$1($DataView, 'byteOffset', getInternalDataViewState); + } + + defineBuiltIns$1(DataViewPrototype$1, { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined); + } + }); + } else { + var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME$1 && NativeArrayBuffer$1.name !== ARRAY_BUFFER$1; + /* eslint-disable no-new -- required for testing */ + if (!fails$n(function () { + NativeArrayBuffer$1(1); + }) || !fails$n(function () { + new NativeArrayBuffer$1(-1); + }) || fails$n(function () { + new NativeArrayBuffer$1(); + new NativeArrayBuffer$1(1.5); + new NativeArrayBuffer$1(NaN); + return NativeArrayBuffer$1.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; + })) { + /* eslint-enable no-new -- required for testing */ + $ArrayBuffer = function ArrayBuffer(length) { + anInstance$5(this, ArrayBufferPrototype$1); + return new NativeArrayBuffer$1(toIndex$1(length)); + }; + + $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype$1; + + for (var keys = getOwnPropertyNames$2(NativeArrayBuffer$1), j = 0, key$2; keys.length > j;) { + if (!((key$2 = keys[j++]) in $ArrayBuffer)) { + createNonEnumerableProperty$2($ArrayBuffer, key$2, NativeArrayBuffer$1[key$2]); + } + } + + ArrayBufferPrototype$1.constructor = $ArrayBuffer; + } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty$2(NativeArrayBuffer$1, 'name', ARRAY_BUFFER$1); + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (setPrototypeOf$2 && getPrototypeOf$1(DataViewPrototype$1) !== ObjectPrototype$1) { + setPrototypeOf$2(DataViewPrototype$1, ObjectPrototype$1); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = uncurryThis$l(DataViewPrototype$1.setInt8); + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns$1(DataViewPrototype$1, { + setInt8: function setInt8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); + } + + setToStringTag$3($ArrayBuffer, ARRAY_BUFFER$1); + setToStringTag$3($DataView, DATA_VIEW); + + var arrayBuffer = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView + }; + + var $$s = _export; + var uncurryThis$k = functionUncurryThisClause; + var fails$m = fails$T; + var ArrayBufferModule$1 = arrayBuffer; + var anObject$4 = anObject$o; + var toAbsoluteIndex$3 = toAbsoluteIndex$8; + var toLength$4 = toLength$a; + var speciesConstructor$2 = speciesConstructor$4; + + var ArrayBuffer$4 = ArrayBufferModule$1.ArrayBuffer; + var DataView$2 = ArrayBufferModule$1.DataView; + var DataViewPrototype = DataView$2.prototype; + var nativeArrayBufferSlice = uncurryThis$k(ArrayBuffer$4.prototype.slice); + var getUint8 = uncurryThis$k(DataViewPrototype.getUint8); + var setUint8 = uncurryThis$k(DataViewPrototype.setUint8); + + var INCORRECT_SLICE = fails$m(function () { + return !new ArrayBuffer$4(2).slice(1, undefined).byteLength; + }); + + // `ArrayBuffer.prototype.slice` method + // https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice + $$s({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, { + slice: function slice(start, end) { + if (nativeArrayBufferSlice && end === undefined) { + return nativeArrayBufferSlice(anObject$4(this), start); // FF fix + } + var length = anObject$4(this).byteLength; + var first = toAbsoluteIndex$3(start, length); + var fin = toAbsoluteIndex$3(end === undefined ? length : end, length); + var result = new (speciesConstructor$2(this, ArrayBuffer$4))(toLength$4(fin - first)); + var viewSource = new DataView$2(this); + var viewTarget = new DataView$2(result); + var index = 0; + while (first < fin) { + setUint8(viewTarget, index++, getUint8(viewSource, first++)); + } return result; + } + }); + + var typedArrayConstructor = {exports: {}}; + + var NATIVE_ARRAY_BUFFER = arrayBufferBasicDetection; + var DESCRIPTORS$9 = descriptors; + var global$k = global$M; + var isCallable$2 = isCallable$w; + var isObject$4 = isObject$l; + var hasOwn$7 = hasOwnProperty_1; + var classof$4 = classof$i; + var tryToString = tryToString$7; + var createNonEnumerableProperty$1 = createNonEnumerableProperty$d; + var defineBuiltIn$3 = defineBuiltIn$h; + var defineBuiltInAccessor$4 = defineBuiltInAccessor$d; + var isPrototypeOf$2 = objectIsPrototypeOf; + var getPrototypeOf = objectGetPrototypeOf; + var setPrototypeOf$1 = objectSetPrototypeOf; + var wellKnownSymbol$5 = wellKnownSymbol$v; + var uid = uid$5; + var InternalStateModule$4 = internalState; + + var enforceInternalState$1 = InternalStateModule$4.enforce; + var getInternalState$2 = InternalStateModule$4.get; + var Int8Array$4 = global$k.Int8Array; + var Int8ArrayPrototype$1 = Int8Array$4 && Int8Array$4.prototype; + var Uint8ClampedArray$1 = global$k.Uint8ClampedArray; + var Uint8ClampedArrayPrototype = Uint8ClampedArray$1 && Uint8ClampedArray$1.prototype; + var TypedArray$1 = Int8Array$4 && getPrototypeOf(Int8Array$4); + var TypedArrayPrototype$2 = Int8ArrayPrototype$1 && getPrototypeOf(Int8ArrayPrototype$1); + var ObjectPrototype = Object.prototype; + var TypeError$4 = global$k.TypeError; + + var TO_STRING_TAG = wellKnownSymbol$5('toStringTag'); + var TYPED_ARRAY_TAG$1 = uid('TYPED_ARRAY_TAG'); + var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; + // Fixing native typed arrays in Opera Presto crashes the browser, see #595 + var NATIVE_ARRAY_BUFFER_VIEWS$2 = NATIVE_ARRAY_BUFFER && !!setPrototypeOf$1 && classof$4(global$k.opera) !== 'Opera'; + var TYPED_ARRAY_TAG_REQUIRED = false; + var NAME, Constructor, Prototype; + + var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 + }; + + var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 + }; + + var isView = function isView(it) { + if (!isObject$4(it)) return false; + var klass = classof$4(it); + return klass === 'DataView' + || hasOwn$7(TypedArrayConstructorsList, klass) + || hasOwn$7(BigIntArrayConstructorsList, klass); + }; + + var getTypedArrayConstructor$4 = function (it) { + var proto = getPrototypeOf(it); + if (!isObject$4(proto)) return; + var state = getInternalState$2(proto); + return (state && hasOwn$7(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor$4(proto); + }; + + var isTypedArray$1 = function (it) { + if (!isObject$4(it)) return false; + var klass = classof$4(it); + return hasOwn$7(TypedArrayConstructorsList, klass) + || hasOwn$7(BigIntArrayConstructorsList, klass); + }; + + var aTypedArray$s = function (it) { + if (isTypedArray$1(it)) return it; + throw TypeError$4('Target is not a typed array'); + }; + + var aTypedArrayConstructor$3 = function (C) { + if (isCallable$2(C) && (!setPrototypeOf$1 || isPrototypeOf$2(TypedArray$1, C))) return C; + throw TypeError$4(tryToString(C) + ' is not a typed array constructor'); + }; + + var exportTypedArrayMethod$t = function (KEY, property, forced, options) { + if (!DESCRIPTORS$9) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global$k[ARRAY]; + if (TypedArrayConstructor && hasOwn$7(TypedArrayConstructor.prototype, KEY)) try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + // old WebKit bug - some methods are non-configurable + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { /* empty */ } + } + } + if (!TypedArrayPrototype$2[KEY] || forced) { + defineBuiltIn$3(TypedArrayPrototype$2, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS$2 && Int8ArrayPrototype$1[KEY] || property, options); + } + }; + + var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS$9) return; + if (setPrototypeOf$1) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global$k[ARRAY]; + if (TypedArrayConstructor && hasOwn$7(TypedArrayConstructor, KEY)) try { + delete TypedArrayConstructor[KEY]; + } catch (error) { /* empty */ } + } + if (!TypedArray$1[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return defineBuiltIn$3(TypedArray$1, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS$2 && TypedArray$1[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global$k[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn$3(TypedArrayConstructor, KEY, property); + } + } + }; + + for (NAME in TypedArrayConstructorsList) { + Constructor = global$k[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else NATIVE_ARRAY_BUFFER_VIEWS$2 = false; + } + + for (NAME in BigIntArrayConstructorsList) { + Constructor = global$k[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + } + + // WebKit bug - typed arrays constructors prototype is Object.prototype + if (!NATIVE_ARRAY_BUFFER_VIEWS$2 || !isCallable$2(TypedArray$1) || TypedArray$1 === Function.prototype) { + // eslint-disable-next-line no-shadow -- safe + TypedArray$1 = function TypedArray() { + throw TypeError$4('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS$2) for (NAME in TypedArrayConstructorsList) { + if (global$k[NAME]) setPrototypeOf$1(global$k[NAME], TypedArray$1); + } + } + + if (!NATIVE_ARRAY_BUFFER_VIEWS$2 || !TypedArrayPrototype$2 || TypedArrayPrototype$2 === ObjectPrototype) { + TypedArrayPrototype$2 = TypedArray$1.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS$2) for (NAME in TypedArrayConstructorsList) { + if (global$k[NAME]) setPrototypeOf$1(global$k[NAME].prototype, TypedArrayPrototype$2); + } + } + + // WebKit bug - one more object in Uint8ClampedArray prototype chain + if (NATIVE_ARRAY_BUFFER_VIEWS$2 && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype$2) { + setPrototypeOf$1(Uint8ClampedArrayPrototype, TypedArrayPrototype$2); + } + + if (DESCRIPTORS$9 && !hasOwn$7(TypedArrayPrototype$2, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineBuiltInAccessor$4(TypedArrayPrototype$2, TO_STRING_TAG, { + configurable: true, + get: function () { + return isObject$4(this) ? this[TYPED_ARRAY_TAG$1] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) if (global$k[NAME]) { + createNonEnumerableProperty$1(global$k[NAME], TYPED_ARRAY_TAG$1, NAME); + } + } + + var arrayBufferViewCore = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS$2, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG$1, + aTypedArray: aTypedArray$s, + aTypedArrayConstructor: aTypedArrayConstructor$3, + exportTypedArrayMethod: exportTypedArrayMethod$t, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor$4, + isView: isView, + isTypedArray: isTypedArray$1, + TypedArray: TypedArray$1, + TypedArrayPrototype: TypedArrayPrototype$2 + }; + + /* eslint-disable no-new -- required for testing */ + + var global$j = global$M; + var fails$l = fails$T; + var checkCorrectnessOfIteration = checkCorrectnessOfIteration$4; + var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; + + var ArrayBuffer$3 = global$j.ArrayBuffer; + var Int8Array$3 = global$j.Int8Array; + + var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails$l(function () { + Int8Array$3(1); + }) || !fails$l(function () { + new Int8Array$3(-1); + }) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array$3(); + new Int8Array$3(null); + new Int8Array$3(1.5); + new Int8Array$3(iterable); + }, true) || fails$l(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array$3(new ArrayBuffer$3(2), 1, undefined).length !== 1; + }); + + var isObject$3 = isObject$l; + + var floor$5 = Math.floor; + + // `IsIntegralNumber` abstract operation + // https://tc39.es/ecma262/#sec-isintegralnumber + // eslint-disable-next-line es/no-number-isinteger -- safe + var isIntegralNumber$1 = Number.isInteger || function isInteger(it) { + return !isObject$3(it) && isFinite(it) && floor$5(it) === it; + }; + + var toIntegerOrInfinity$6 = toIntegerOrInfinity$f; + + var $RangeError$3 = RangeError; + + var toPositiveInteger$1 = function (it) { + var result = toIntegerOrInfinity$6(it); + if (result < 0) throw $RangeError$3("The argument can't be less than 0"); + return result; + }; + + var toPositiveInteger = toPositiveInteger$1; + + var $RangeError$2 = RangeError; + + var toOffset$2 = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) throw $RangeError$2('Wrong offset'); + return offset; + }; + + var classof$3 = classof$i; + + var isBigIntArray$2 = function (it) { + var klass = classof$3(it); + return klass == 'BigInt64Array' || klass == 'BigUint64Array'; + }; + + var toPrimitive$1 = toPrimitive$3; + + var $TypeError$2 = TypeError; + + // `ToBigInt` abstract operation + // https://tc39.es/ecma262/#sec-tobigint + var toBigInt$3 = function (argument) { + var prim = toPrimitive$1(argument, 'number'); + if (typeof prim == 'number') throw $TypeError$2("Can't convert number to bigint"); + // eslint-disable-next-line es/no-bigint -- safe + return BigInt(prim); + }; + + var bind$4 = functionBindContext; + var call$7 = functionCall; + var aConstructor = aConstructor$2; + var toObject$9 = toObject$j; + var lengthOfArrayLike$e = lengthOfArrayLike$o; + var getIterator$1 = getIterator$4; + var getIteratorMethod$1 = getIteratorMethod$5; + var isArrayIteratorMethod = isArrayIteratorMethod$3; + var isBigIntArray$1 = isBigIntArray$2; + var aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor; + var toBigInt$2 = toBigInt$3; + + var typedArrayFrom$1 = function from(source /* , mapfn, thisArg */) { + var C = aConstructor(this); + var O = toObject$9(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod$1(O); + var i, length, result, thisIsBigIntArray, value, step, iterator, next; + if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) { + iterator = getIterator$1(O, iteratorMethod); + next = iterator.next; + O = []; + while (!(step = call$7(next, iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind$4(mapfn, arguments[2]); + } + length = lengthOfArrayLike$e(O); + result = new (aTypedArrayConstructor$2(C))(length); + thisIsBigIntArray = isBigIntArray$1(result); + for (i = 0; length > i; i++) { + value = mapping ? mapfn(O[i], i) : O[i]; + // FF30- typed arrays doesn't properly convert objects to typed array values + result[i] = thisIsBigIntArray ? toBigInt$2(value) : +value; + } + return result; + }; + + var $$r = _export; + var global$i = global$M; + var call$6 = functionCall; + var DESCRIPTORS$8 = descriptors; + var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = typedArrayConstructorsRequireWrappers; + var ArrayBufferViewCore$t = arrayBufferViewCore; + var ArrayBufferModule = arrayBuffer; + var anInstance$4 = anInstance$9; + var createPropertyDescriptor$3 = createPropertyDescriptor$a; + var createNonEnumerableProperty = createNonEnumerableProperty$d; + var isIntegralNumber = isIntegralNumber$1; + var toLength$3 = toLength$a; + var toIndex = toIndex$2; + var toOffset$1 = toOffset$2; + var toPropertyKey = toPropertyKey$5; + var hasOwn$6 = hasOwnProperty_1; + var classof$2 = classof$i; + var isObject$2 = isObject$l; + var isSymbol$1 = isSymbol$6; + var create$3 = objectCreate; + var isPrototypeOf$1 = objectIsPrototypeOf; + var setPrototypeOf = objectSetPrototypeOf; + var getOwnPropertyNames$1 = objectGetOwnPropertyNames.f; + var typedArrayFrom = typedArrayFrom$1; + var forEach = arrayIteration.forEach; + var setSpecies$1 = setSpecies$5; + var defineBuiltInAccessor$3 = defineBuiltInAccessor$d; + var definePropertyModule = objectDefineProperty; + var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor; + var InternalStateModule$3 = internalState; + var inheritIfRequired$2 = inheritIfRequired$6; + + var getInternalState$1 = InternalStateModule$3.get; + var setInternalState$3 = InternalStateModule$3.set; + var enforceInternalState = InternalStateModule$3.enforce; + var nativeDefineProperty = definePropertyModule.f; + var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var round = Math.round; + var RangeError$2 = global$i.RangeError; + var ArrayBuffer$2 = ArrayBufferModule.ArrayBuffer; + var ArrayBufferPrototype = ArrayBuffer$2.prototype; + var DataView$1 = ArrayBufferModule.DataView; + var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore$t.NATIVE_ARRAY_BUFFER_VIEWS; + var TYPED_ARRAY_TAG = ArrayBufferViewCore$t.TYPED_ARRAY_TAG; + var TypedArray = ArrayBufferViewCore$t.TypedArray; + var TypedArrayPrototype$1 = ArrayBufferViewCore$t.TypedArrayPrototype; + var aTypedArrayConstructor$1 = ArrayBufferViewCore$t.aTypedArrayConstructor; + var isTypedArray = ArrayBufferViewCore$t.isTypedArray; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var WRONG_LENGTH = 'Wrong length'; + + var fromList = function (C, list) { + aTypedArrayConstructor$1(C); + var index = 0; + var length = list.length; + var result = new C(length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var addGetter = function (it, key) { + defineBuiltInAccessor$3(it, key, { + configurable: true, + get: function () { + return getInternalState$1(this)[key]; + } + }); + }; + + var isArrayBuffer = function (it) { + var klass; + return isPrototypeOf$1(ArrayBufferPrototype, it) || (klass = classof$2(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer'; + }; + + var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && !isSymbol$1(key) + && key in target + && isIntegralNumber(+key) + && key >= 0; + }; + + var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + key = toPropertyKey(key); + return isTypedArrayIndex(target, key) + ? createPropertyDescriptor$3(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); + }; + + var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + key = toPropertyKey(key); + if (isTypedArrayIndex(target, key) + && isObject$2(descriptor) + && hasOwn$6(descriptor, 'value') + && !hasOwn$6(descriptor, 'get') + && !hasOwn$6(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!hasOwn$6(descriptor, 'writable') || descriptor.writable) + && (!hasOwn$6(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); + }; + + if (DESCRIPTORS$8) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype$1, 'buffer'); + addGetter(TypedArrayPrototype$1, 'byteOffset'); + addGetter(TypedArrayPrototype$1, 'byteLength'); + addGetter(TypedArrayPrototype$1, 'length'); + } + + $$r({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + typedArrayConstructor.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global$i[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState$1(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState$1(that); + if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; + data.view[SETTER](index * BYTES + data.byteOffset, value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance$4(that, TypedArrayConstructorPrototype); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject$2(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer$2(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset$1(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError$2(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw RangeError$2(WRONG_LENGTH); + } else { + byteLength = toLength$3($length) * BYTES; + if (byteLength + byteOffset > $len) throw RangeError$2(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return fromList(TypedArrayConstructor, data); + } else { + return call$6(typedArrayFrom, TypedArrayConstructor, data); + } + setInternalState$3(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView$1(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create$3(TypedArrayPrototype$1); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance$4(dummy, TypedArrayConstructorPrototype); + return inheritIfRequired$2(function () { + if (!isObject$2(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset$1(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return fromList(TypedArrayConstructor, data); + return call$6(typedArrayFrom, TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach(getOwnPropertyNames$1(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor; + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor; + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $$r({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies$1(CONSTRUCTOR_NAME); + }; + } else typedArrayConstructor.exports = function () { /* empty */ }; + + var typedArrayConstructorExports = typedArrayConstructor.exports; + + var createTypedArrayConstructor$7 = typedArrayConstructorExports; + + // `Uint8Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$7('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var ArrayBufferViewCore$s = arrayBufferViewCore; + var lengthOfArrayLike$d = lengthOfArrayLike$o; + var toIntegerOrInfinity$5 = toIntegerOrInfinity$f; + + var aTypedArray$r = ArrayBufferViewCore$s.aTypedArray; + var exportTypedArrayMethod$s = ArrayBufferViewCore$s.exportTypedArrayMethod; + + // `%TypedArray%.prototype.at` method + // https://github.com/tc39/proposal-relative-indexing-method + exportTypedArrayMethod$s('at', function at(index) { + var O = aTypedArray$r(this); + var len = lengthOfArrayLike$d(O); + var relativeIndex = toIntegerOrInfinity$5(index); + var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; + return (k < 0 || k >= len) ? undefined : O[k]; + }); + + var toObject$8 = toObject$j; + var toAbsoluteIndex$2 = toAbsoluteIndex$8; + var lengthOfArrayLike$c = lengthOfArrayLike$o; + var deletePropertyOrThrow$2 = deletePropertyOrThrow$4; + + var min$4 = Math.min; + + // `Array.prototype.copyWithin` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.copywithin + // eslint-disable-next-line es/no-array-prototype-copywithin -- safe + var arrayCopyWithin = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject$8(this); + var len = lengthOfArrayLike$c(O); + var to = toAbsoluteIndex$2(target, len); + var from = toAbsoluteIndex$2(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min$4((end === undefined ? len : toAbsoluteIndex$2(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow$2(O, to); + to += inc; + from += inc; + } return O; + }; + + var uncurryThis$j = functionUncurryThis; + var ArrayBufferViewCore$r = arrayBufferViewCore; + var $ArrayCopyWithin = arrayCopyWithin; + + var u$ArrayCopyWithin = uncurryThis$j($ArrayCopyWithin); + var aTypedArray$q = ArrayBufferViewCore$r.aTypedArray; + var exportTypedArrayMethod$r = ArrayBufferViewCore$r.exportTypedArrayMethod; + + // `%TypedArray%.prototype.copyWithin` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin + exportTypedArrayMethod$r('copyWithin', function copyWithin(target, start /* , end */) { + return u$ArrayCopyWithin(aTypedArray$q(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }); + + var ArrayBufferViewCore$q = arrayBufferViewCore; + var $every = arrayIteration.every; + + var aTypedArray$p = ArrayBufferViewCore$q.aTypedArray; + var exportTypedArrayMethod$q = ArrayBufferViewCore$q.exportTypedArrayMethod; + + // `%TypedArray%.prototype.every` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.every + exportTypedArrayMethod$q('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray$p(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$p = arrayBufferViewCore; + var $fill = arrayFill$1; + var toBigInt$1 = toBigInt$3; + var classof$1 = classof$i; + var call$5 = functionCall; + var uncurryThis$i = functionUncurryThis; + var fails$k = fails$T; + + var aTypedArray$o = ArrayBufferViewCore$p.aTypedArray; + var exportTypedArrayMethod$p = ArrayBufferViewCore$p.exportTypedArrayMethod; + var slice = uncurryThis$i(''.slice); + + // V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18 + var CONVERSION_BUG = fails$k(function () { + var count = 0; + // eslint-disable-next-line es/no-typed-arrays -- safe + new Int8Array(2).fill({ valueOf: function () { return count++; } }); + return count !== 1; + }); + + // `%TypedArray%.prototype.fill` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill + exportTypedArrayMethod$p('fill', function fill(value /* , start, end */) { + var length = arguments.length; + aTypedArray$o(this); + var actualValue = slice(classof$1(this), 0, 3) === 'Big' ? toBigInt$1(value) : +value; + return call$5($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined); + }, CONVERSION_BUG); + + var lengthOfArrayLike$b = lengthOfArrayLike$o; + + var arrayFromConstructorAndList$2 = function (Constructor, list) { + var index = 0; + var length = lengthOfArrayLike$b(list); + var result = new Constructor(length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var ArrayBufferViewCore$o = arrayBufferViewCore; + var speciesConstructor$1 = speciesConstructor$4; + + var aTypedArrayConstructor = ArrayBufferViewCore$o.aTypedArrayConstructor; + var getTypedArrayConstructor$3 = ArrayBufferViewCore$o.getTypedArrayConstructor; + + // a part of `TypedArraySpeciesCreate` abstract operation + // https://tc39.es/ecma262/#typedarray-species-create + var typedArraySpeciesConstructor$4 = function (originalArray) { + return aTypedArrayConstructor(speciesConstructor$1(originalArray, getTypedArrayConstructor$3(originalArray))); + }; + + var arrayFromConstructorAndList$1 = arrayFromConstructorAndList$2; + var typedArraySpeciesConstructor$3 = typedArraySpeciesConstructor$4; + + var typedArrayFromSpeciesAndList = function (instance, list) { + return arrayFromConstructorAndList$1(typedArraySpeciesConstructor$3(instance), list); + }; + + var ArrayBufferViewCore$n = arrayBufferViewCore; + var $filter = arrayIteration.filter; + var fromSpeciesAndList = typedArrayFromSpeciesAndList; + + var aTypedArray$n = ArrayBufferViewCore$n.aTypedArray; + var exportTypedArrayMethod$o = ArrayBufferViewCore$n.exportTypedArrayMethod; + + // `%TypedArray%.prototype.filter` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter + exportTypedArrayMethod$o('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray$n(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return fromSpeciesAndList(this, list); + }); + + var ArrayBufferViewCore$m = arrayBufferViewCore; + var $find$1 = arrayIteration.find; + + var aTypedArray$m = ArrayBufferViewCore$m.aTypedArray; + var exportTypedArrayMethod$n = ArrayBufferViewCore$m.exportTypedArrayMethod; + + // `%TypedArray%.prototype.find` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.find + exportTypedArrayMethod$n('find', function find(predicate /* , thisArg */) { + return $find$1(aTypedArray$m(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$l = arrayBufferViewCore; + var $findIndex = arrayIteration.findIndex; + + var aTypedArray$l = ArrayBufferViewCore$l.aTypedArray; + var exportTypedArrayMethod$m = ArrayBufferViewCore$l.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex + exportTypedArrayMethod$m('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray$l(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var bind$3 = functionBindContext; + var IndexedObject$2 = indexedObject; + var toObject$7 = toObject$j; + var lengthOfArrayLike$a = lengthOfArrayLike$o; + + // `Array.prototype.{ findLast, findLastIndex }` methods implementation + var createMethod$2 = function (TYPE) { + var IS_FIND_LAST_INDEX = TYPE == 1; + return function ($this, callbackfn, that) { + var O = toObject$7($this); + var self = IndexedObject$2(O); + var boundFunction = bind$3(callbackfn, that); + var index = lengthOfArrayLike$a(self); + var value, result; + while (index-- > 0) { + value = self[index]; + result = boundFunction(value, index, O); + if (result) switch (TYPE) { + case 0: return value; // findLast + case 1: return index; // findLastIndex + } + } + return IS_FIND_LAST_INDEX ? -1 : undefined; + }; + }; + + var arrayIterationFromLast = { + // `Array.prototype.findLast` method + // https://github.com/tc39/proposal-array-find-from-last + findLast: createMethod$2(0), + // `Array.prototype.findLastIndex` method + // https://github.com/tc39/proposal-array-find-from-last + findLastIndex: createMethod$2(1) + }; + + var ArrayBufferViewCore$k = arrayBufferViewCore; + var $findLast = arrayIterationFromLast.findLast; + + var aTypedArray$k = ArrayBufferViewCore$k.aTypedArray; + var exportTypedArrayMethod$l = ArrayBufferViewCore$k.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findLast` method + // https://github.com/tc39/proposal-array-find-from-last + exportTypedArrayMethod$l('findLast', function findLast(predicate /* , thisArg */) { + return $findLast(aTypedArray$k(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$j = arrayBufferViewCore; + var $findLastIndex = arrayIterationFromLast.findLastIndex; + + var aTypedArray$j = ArrayBufferViewCore$j.aTypedArray; + var exportTypedArrayMethod$k = ArrayBufferViewCore$j.exportTypedArrayMethod; + + // `%TypedArray%.prototype.findLastIndex` method + // https://github.com/tc39/proposal-array-find-from-last + exportTypedArrayMethod$k('findLastIndex', function findLastIndex(predicate /* , thisArg */) { + return $findLastIndex(aTypedArray$j(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$i = arrayBufferViewCore; + var $forEach = arrayIteration.forEach; + + var aTypedArray$i = ArrayBufferViewCore$i.aTypedArray; + var exportTypedArrayMethod$j = ArrayBufferViewCore$i.exportTypedArrayMethod; + + // `%TypedArray%.prototype.forEach` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach + exportTypedArrayMethod$j('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach(aTypedArray$i(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$h = arrayBufferViewCore; + var $includes = arrayIncludes.includes; + + var aTypedArray$h = ArrayBufferViewCore$h.aTypedArray; + var exportTypedArrayMethod$i = ArrayBufferViewCore$h.exportTypedArrayMethod; + + // `%TypedArray%.prototype.includes` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes + exportTypedArrayMethod$i('includes', function includes(searchElement /* , fromIndex */) { + return $includes(aTypedArray$h(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$g = arrayBufferViewCore; + var $indexOf = arrayIncludes.indexOf; + + var aTypedArray$g = ArrayBufferViewCore$g.aTypedArray; + var exportTypedArrayMethod$h = ArrayBufferViewCore$g.exportTypedArrayMethod; + + // `%TypedArray%.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof + exportTypedArrayMethod$h('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf(aTypedArray$g(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }); + + var global$h = global$M; + var fails$j = fails$T; + var uncurryThis$h = functionUncurryThis; + var ArrayBufferViewCore$f = arrayBufferViewCore; + var ArrayIterators = es_array_iterator; + var wellKnownSymbol$4 = wellKnownSymbol$v; + + var ITERATOR$4 = wellKnownSymbol$4('iterator'); + var Uint8Array$2 = global$h.Uint8Array; + var arrayValues = uncurryThis$h(ArrayIterators.values); + var arrayKeys = uncurryThis$h(ArrayIterators.keys); + var arrayEntries = uncurryThis$h(ArrayIterators.entries); + var aTypedArray$f = ArrayBufferViewCore$f.aTypedArray; + var exportTypedArrayMethod$g = ArrayBufferViewCore$f.exportTypedArrayMethod; + var TypedArrayPrototype = Uint8Array$2 && Uint8Array$2.prototype; + + var GENERIC = !fails$j(function () { + TypedArrayPrototype[ITERATOR$4].call([1]); + }); + + var ITERATOR_IS_VALUES = !!TypedArrayPrototype + && TypedArrayPrototype.values + && TypedArrayPrototype[ITERATOR$4] === TypedArrayPrototype.values + && TypedArrayPrototype.values.name === 'values'; + + var typedArrayValues = function values() { + return arrayValues(aTypedArray$f(this)); + }; + + // `%TypedArray%.prototype.entries` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries + exportTypedArrayMethod$g('entries', function entries() { + return arrayEntries(aTypedArray$f(this)); + }, GENERIC); + // `%TypedArray%.prototype.keys` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys + exportTypedArrayMethod$g('keys', function keys() { + return arrayKeys(aTypedArray$f(this)); + }, GENERIC); + // `%TypedArray%.prototype.values` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.values + exportTypedArrayMethod$g('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + // `%TypedArray%.prototype[@@iterator]` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator + exportTypedArrayMethod$g(ITERATOR$4, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + + var ArrayBufferViewCore$e = arrayBufferViewCore; + var uncurryThis$g = functionUncurryThis; + + var aTypedArray$e = ArrayBufferViewCore$e.aTypedArray; + var exportTypedArrayMethod$f = ArrayBufferViewCore$e.exportTypedArrayMethod; + var $join = uncurryThis$g([].join); + + // `%TypedArray%.prototype.join` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.join + exportTypedArrayMethod$f('join', function join(separator) { + return $join(aTypedArray$e(this), separator); + }); + + /* eslint-disable es/no-array-prototype-lastindexof -- safe */ + var apply$4 = functionApply; + var toIndexedObject$1 = toIndexedObject$b; + var toIntegerOrInfinity$4 = toIntegerOrInfinity$f; + var lengthOfArrayLike$9 = lengthOfArrayLike$o; + var arrayMethodIsStrict$1 = arrayMethodIsStrict$4; + + var min$3 = Math.min; + var $lastIndexOf$1 = [].lastIndexOf; + var NEGATIVE_ZERO = !!$lastIndexOf$1 && 1 / [1].lastIndexOf(1, -0) < 0; + var STRICT_METHOD$1 = arrayMethodIsStrict$1('lastIndexOf'); + var FORCED$8 = NEGATIVE_ZERO || !STRICT_METHOD$1; + + // `Array.prototype.lastIndexOf` method implementation + // https://tc39.es/ecma262/#sec-array.prototype.lastindexof + var arrayLastIndexOf = FORCED$8 ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return apply$4($lastIndexOf$1, this, arguments) || 0; + var O = toIndexedObject$1(this); + var length = lengthOfArrayLike$9(O); + var index = length - 1; + if (arguments.length > 1) index = min$3(index, toIntegerOrInfinity$4(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; + } : $lastIndexOf$1; + + var ArrayBufferViewCore$d = arrayBufferViewCore; + var apply$3 = functionApply; + var $lastIndexOf = arrayLastIndexOf; + + var aTypedArray$d = ArrayBufferViewCore$d.aTypedArray; + var exportTypedArrayMethod$e = ArrayBufferViewCore$d.exportTypedArrayMethod; + + // `%TypedArray%.prototype.lastIndexOf` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof + exportTypedArrayMethod$e('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + var length = arguments.length; + return apply$3($lastIndexOf, aTypedArray$d(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]); + }); + + var ArrayBufferViewCore$c = arrayBufferViewCore; + var $map = arrayIteration.map; + var typedArraySpeciesConstructor$2 = typedArraySpeciesConstructor$4; + + var aTypedArray$c = ArrayBufferViewCore$c.aTypedArray; + var exportTypedArrayMethod$d = ArrayBufferViewCore$c.exportTypedArrayMethod; + + // `%TypedArray%.prototype.map` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.map + exportTypedArrayMethod$d('map', function map(mapfn /* , thisArg */) { + return $map(aTypedArray$c(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (typedArraySpeciesConstructor$2(O))(length); + }); + }); + + var aCallable$3 = aCallable$c; + var toObject$6 = toObject$j; + var IndexedObject$1 = indexedObject; + var lengthOfArrayLike$8 = lengthOfArrayLike$o; + + var $TypeError$1 = TypeError; + + // `Array.prototype.{ reduce, reduceRight }` methods implementation + var createMethod$1 = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + aCallable$3(callbackfn); + var O = toObject$6(that); + var self = IndexedObject$1(O); + var length = lengthOfArrayLike$8(O); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw $TypeError$1('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; + }; + + var arrayReduce = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod$1(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod$1(true) + }; + + var ArrayBufferViewCore$b = arrayBufferViewCore; + var $reduce = arrayReduce.left; + + var aTypedArray$b = ArrayBufferViewCore$b.aTypedArray; + var exportTypedArrayMethod$c = ArrayBufferViewCore$b.exportTypedArrayMethod; + + // `%TypedArray%.prototype.reduce` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce + exportTypedArrayMethod$c('reduce', function reduce(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduce(aTypedArray$b(this), callbackfn, length, length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$a = arrayBufferViewCore; + var $reduceRight = arrayReduce.right; + + var aTypedArray$a = ArrayBufferViewCore$a.aTypedArray; + var exportTypedArrayMethod$b = ArrayBufferViewCore$a.exportTypedArrayMethod; + + // `%TypedArray%.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright + exportTypedArrayMethod$b('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduceRight(aTypedArray$a(this), callbackfn, length, length > 1 ? arguments[1] : undefined); + }); + + var ArrayBufferViewCore$9 = arrayBufferViewCore; + + var aTypedArray$9 = ArrayBufferViewCore$9.aTypedArray; + var exportTypedArrayMethod$a = ArrayBufferViewCore$9.exportTypedArrayMethod; + var floor$4 = Math.floor; + + // `%TypedArray%.prototype.reverse` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse + exportTypedArrayMethod$a('reverse', function reverse() { + var that = this; + var length = aTypedArray$9(that).length; + var middle = floor$4(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }); + + var global$g = global$M; + var call$4 = functionCall; + var ArrayBufferViewCore$8 = arrayBufferViewCore; + var lengthOfArrayLike$7 = lengthOfArrayLike$o; + var toOffset = toOffset$2; + var toIndexedObject = toObject$j; + var fails$i = fails$T; + + var RangeError$1 = global$g.RangeError; + var Int8Array$2 = global$g.Int8Array; + var Int8ArrayPrototype = Int8Array$2 && Int8Array$2.prototype; + var $set = Int8ArrayPrototype && Int8ArrayPrototype.set; + var aTypedArray$8 = ArrayBufferViewCore$8.aTypedArray; + var exportTypedArrayMethod$9 = ArrayBufferViewCore$8.exportTypedArrayMethod; + + var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails$i(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + var array = new Uint8ClampedArray(2); + call$4($set, array, { length: 1, 0: 3 }, 1); + return array[1] !== 3; + }); + + // https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other + var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore$8.NATIVE_ARRAY_BUFFER_VIEWS && fails$i(function () { + var array = new Int8Array$2(2); + array.set(1); + array.set('2', 1); + return array[0] !== 0 || array[1] !== 2; + }); + + // `%TypedArray%.prototype.set` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.set + exportTypedArrayMethod$9('set', function set(arrayLike /* , offset */) { + aTypedArray$8(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var src = toIndexedObject(arrayLike); + if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call$4($set, this, src, offset); + var length = this.length; + var len = lengthOfArrayLike$7(src); + var index = 0; + if (len + offset > length) throw RangeError$1('Wrong length'); + while (index < len) this[offset + index] = src[index++]; + }, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG); + + var ArrayBufferViewCore$7 = arrayBufferViewCore; + var typedArraySpeciesConstructor$1 = typedArraySpeciesConstructor$4; + var fails$h = fails$T; + var arraySlice$5 = arraySlice$a; + + var aTypedArray$7 = ArrayBufferViewCore$7.aTypedArray; + var exportTypedArrayMethod$8 = ArrayBufferViewCore$7.exportTypedArrayMethod; + + var FORCED$7 = fails$h(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + new Int8Array(1).slice(); + }); + + // `%TypedArray%.prototype.slice` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice + exportTypedArrayMethod$8('slice', function slice(start, end) { + var list = arraySlice$5(aTypedArray$7(this), start, end); + var C = typedArraySpeciesConstructor$1(this); + var index = 0; + var length = list.length; + var result = new C(length); + while (length > index) result[index] = list[index++]; + return result; + }, FORCED$7); + + var ArrayBufferViewCore$6 = arrayBufferViewCore; + var $some = arrayIteration.some; + + var aTypedArray$6 = ArrayBufferViewCore$6.aTypedArray; + var exportTypedArrayMethod$7 = ArrayBufferViewCore$6.exportTypedArrayMethod; + + // `%TypedArray%.prototype.some` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.some + exportTypedArrayMethod$7('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray$6(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }); + + var arraySlice$4 = arraySliceSimple; + + var floor$3 = Math.floor; + + var mergeSort = function (array, comparefn) { + var length = array.length; + var middle = floor$3(length / 2); + return length < 8 ? insertionSort(array, comparefn) : merge( + array, + mergeSort(arraySlice$4(array, 0, middle), comparefn), + mergeSort(arraySlice$4(array, middle), comparefn), + comparefn + ); + }; + + var insertionSort = function (array, comparefn) { + var length = array.length; + var i = 1; + var element, j; + + while (i < length) { + j = i; + element = array[i]; + while (j && comparefn(array[j - 1], element) > 0) { + array[j] = array[--j]; + } + if (j !== i++) array[j] = element; + } return array; + }; + + var merge = function (array, left, right, comparefn) { + var llength = left.length; + var rlength = right.length; + var lindex = 0; + var rindex = 0; + + while (lindex < llength || rindex < rlength) { + array[lindex + rindex] = (lindex < llength && rindex < rlength) + ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] + : lindex < llength ? left[lindex++] : right[rindex++]; + } return array; + }; + + var arraySort$1 = mergeSort; + + var userAgent$1 = engineUserAgent; + + var firefox = userAgent$1.match(/firefox\/(\d+)/i); + + var engineFfVersion = !!firefox && +firefox[1]; + + var UA = engineUserAgent; + + var engineIsIeOrEdge = /MSIE|Trident/.test(UA); + + var userAgent = engineUserAgent; + + var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); + + var engineWebkitVersion = !!webkit && +webkit[1]; + + var global$f = global$M; + var uncurryThis$f = functionUncurryThisClause; + var fails$g = fails$T; + var aCallable$2 = aCallable$c; + var internalSort$1 = arraySort$1; + var ArrayBufferViewCore$5 = arrayBufferViewCore; + var FF$1 = engineFfVersion; + var IE_OR_EDGE$1 = engineIsIeOrEdge; + var V8$1 = engineV8Version; + var WEBKIT$1 = engineWebkitVersion; + + var aTypedArray$5 = ArrayBufferViewCore$5.aTypedArray; + var exportTypedArrayMethod$6 = ArrayBufferViewCore$5.exportTypedArrayMethod; + var Uint16Array$1 = global$f.Uint16Array; + var nativeSort$1 = Uint16Array$1 && uncurryThis$f(Uint16Array$1.prototype.sort); + + // WebKit + var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort$1 && !(fails$g(function () { + nativeSort$1(new Uint16Array$1(2), null); + }) && fails$g(function () { + nativeSort$1(new Uint16Array$1(2), {}); + })); + + var STABLE_SORT$1 = !!nativeSort$1 && !fails$g(function () { + // feature detection can be too slow, so check engines versions + if (V8$1) return V8$1 < 74; + if (FF$1) return FF$1 < 67; + if (IE_OR_EDGE$1) return true; + if (WEBKIT$1) return WEBKIT$1 < 602; + + var array = new Uint16Array$1(516); + var expected = Array(516); + var index, mod; + + for (index = 0; index < 516; index++) { + mod = index % 4; + array[index] = 515 - index; + expected[index] = index - 2 * mod + 3; + } + + nativeSort$1(array, function (a, b) { + return (a / 4 | 0) - (b / 4 | 0); + }); + + for (index = 0; index < 516; index++) { + if (array[index] !== expected[index]) return true; + } + }); + + var getSortCompare$1 = function (comparefn) { + return function (x, y) { + if (comparefn !== undefined) return +comparefn(x, y) || 0; + // eslint-disable-next-line no-self-compare -- NaN check + if (y !== y) return -1; + // eslint-disable-next-line no-self-compare -- NaN check + if (x !== x) return 1; + if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1; + return x > y; + }; + }; + + // `%TypedArray%.prototype.sort` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort + exportTypedArrayMethod$6('sort', function sort(comparefn) { + if (comparefn !== undefined) aCallable$2(comparefn); + if (STABLE_SORT$1) return nativeSort$1(this, comparefn); + + return internalSort$1(aTypedArray$5(this), getSortCompare$1(comparefn)); + }, !STABLE_SORT$1 || ACCEPT_INCORRECT_ARGUMENTS); + + var ArrayBufferViewCore$4 = arrayBufferViewCore; + var toLength$2 = toLength$a; + var toAbsoluteIndex$1 = toAbsoluteIndex$8; + var typedArraySpeciesConstructor = typedArraySpeciesConstructor$4; + + var aTypedArray$4 = ArrayBufferViewCore$4.aTypedArray; + var exportTypedArrayMethod$5 = ArrayBufferViewCore$4.exportTypedArrayMethod; + + // `%TypedArray%.prototype.subarray` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray + exportTypedArrayMethod$5('subarray', function subarray(begin, end) { + var O = aTypedArray$4(this); + var length = O.length; + var beginIndex = toAbsoluteIndex$1(begin, length); + var C = typedArraySpeciesConstructor(O); + return new C( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength$2((end === undefined ? length : toAbsoluteIndex$1(end, length)) - beginIndex) + ); + }); + + var global$e = global$M; + var apply$2 = functionApply; + var ArrayBufferViewCore$3 = arrayBufferViewCore; + var fails$f = fails$T; + var arraySlice$3 = arraySlice$a; + + var Int8Array$1 = global$e.Int8Array; + var aTypedArray$3 = ArrayBufferViewCore$3.aTypedArray; + var exportTypedArrayMethod$4 = ArrayBufferViewCore$3.exportTypedArrayMethod; + var $toLocaleString = [].toLocaleString; + + // iOS Safari 6.x fails here + var TO_LOCALE_STRING_BUG = !!Int8Array$1 && fails$f(function () { + $toLocaleString.call(new Int8Array$1(1)); + }); + + var FORCED$6 = fails$f(function () { + return [1, 2].toLocaleString() != new Int8Array$1([1, 2]).toLocaleString(); + }) || !fails$f(function () { + Int8Array$1.prototype.toLocaleString.call([1, 2]); + }); + + // `%TypedArray%.prototype.toLocaleString` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring + exportTypedArrayMethod$4('toLocaleString', function toLocaleString() { + return apply$2( + $toLocaleString, + TO_LOCALE_STRING_BUG ? arraySlice$3(aTypedArray$3(this)) : aTypedArray$3(this), + arraySlice$3(arguments) + ); + }, FORCED$6); + + var exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod; + var fails$e = fails$T; + var global$d = global$M; + var uncurryThis$e = functionUncurryThis; + + var Uint8Array$1 = global$d.Uint8Array; + var Uint8ArrayPrototype = Uint8Array$1 && Uint8Array$1.prototype || {}; + var arrayToString = [].toString; + var join$3 = uncurryThis$e([].join); + + if (fails$e(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return join$3(this); + }; + } + + var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString; + + // `%TypedArray%.prototype.toString` method + // https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring + exportTypedArrayMethod$3('toString', arrayToString, IS_NOT_ARRAY_METHOD); + + var lengthOfArrayLike$6 = lengthOfArrayLike$o; + + // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed + var arrayToReversed$1 = function (O, C) { + var len = lengthOfArrayLike$6(O); + var A = new C(len); + var k = 0; + for (; k < len; k++) A[k] = O[len - k - 1]; + return A; + }; + + var arrayToReversed = arrayToReversed$1; + var ArrayBufferViewCore$2 = arrayBufferViewCore; + + var aTypedArray$2 = ArrayBufferViewCore$2.aTypedArray; + var exportTypedArrayMethod$2 = ArrayBufferViewCore$2.exportTypedArrayMethod; + var getTypedArrayConstructor$2 = ArrayBufferViewCore$2.getTypedArrayConstructor; + + // `%TypedArray%.prototype.toReversed` method + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed + exportTypedArrayMethod$2('toReversed', function toReversed() { + return arrayToReversed(aTypedArray$2(this), getTypedArrayConstructor$2(this)); + }); + + var ArrayBufferViewCore$1 = arrayBufferViewCore; + var uncurryThis$d = functionUncurryThis; + var aCallable$1 = aCallable$c; + var arrayFromConstructorAndList = arrayFromConstructorAndList$2; + + var aTypedArray$1 = ArrayBufferViewCore$1.aTypedArray; + var getTypedArrayConstructor$1 = ArrayBufferViewCore$1.getTypedArrayConstructor; + var exportTypedArrayMethod$1 = ArrayBufferViewCore$1.exportTypedArrayMethod; + var sort = uncurryThis$d(ArrayBufferViewCore$1.TypedArrayPrototype.sort); + + // `%TypedArray%.prototype.toSorted` method + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSorted + exportTypedArrayMethod$1('toSorted', function toSorted(compareFn) { + if (compareFn !== undefined) aCallable$1(compareFn); + var O = aTypedArray$1(this); + var A = arrayFromConstructorAndList(getTypedArrayConstructor$1(O), O); + return sort(A, compareFn); + }); + + var lengthOfArrayLike$5 = lengthOfArrayLike$o; + var toIntegerOrInfinity$3 = toIntegerOrInfinity$f; + + var $RangeError$1 = RangeError; + + // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with + var arrayWith$1 = function (O, C, index, value) { + var len = lengthOfArrayLike$5(O); + var relativeIndex = toIntegerOrInfinity$3(index); + var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex; + if (actualIndex >= len || actualIndex < 0) throw $RangeError$1('Incorrect index'); + var A = new C(len); + var k = 0; + for (; k < len; k++) A[k] = k === actualIndex ? value : O[k]; + return A; + }; + + var arrayWith = arrayWith$1; + var ArrayBufferViewCore = arrayBufferViewCore; + var isBigIntArray = isBigIntArray$2; + var toIntegerOrInfinity$2 = toIntegerOrInfinity$f; + var toBigInt = toBigInt$3; + + var aTypedArray = ArrayBufferViewCore.aTypedArray; + var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor; + var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + + var PROPER_ORDER = !!function () { + try { + // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing + new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } }); + } catch (error) { + // some early implementations, like WebKit, does not follow the final semantic + // https://github.com/tc39/proposal-change-array-by-copy/pull/86 + return error === 8; + } + }(); + + // `%TypedArray%.prototype.with` method + // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with + exportTypedArrayMethod('with', { 'with': function (index, value) { + var O = aTypedArray(this); + var relativeIndex = toIntegerOrInfinity$2(index); + var actualValue = isBigIntArray(O) ? toBigInt(value) : +value; + return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue); + } }['with'], !PROPER_ORDER); + + var $$q = _export; + var toObject$5 = toObject$j; + var toAbsoluteIndex = toAbsoluteIndex$8; + var toIntegerOrInfinity$1 = toIntegerOrInfinity$f; + var lengthOfArrayLike$4 = lengthOfArrayLike$o; + var setArrayLength = arraySetLength; + var doesNotExceedSafeInteger$2 = doesNotExceedSafeInteger$5; + var arraySpeciesCreate$2 = arraySpeciesCreate$4; + var createProperty$1 = createProperty$5; + var deletePropertyOrThrow$1 = deletePropertyOrThrow$4; + var arrayMethodHasSpeciesSupport$1 = arrayMethodHasSpeciesSupport$5; + + var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport$1('splice'); + + var max = Math.max; + var min$2 = Math.min; + + // `Array.prototype.splice` method + // https://tc39.es/ecma262/#sec-array.prototype.splice + // with adding support of @@species + $$q({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject$5(this); + var len = lengthOfArrayLike$4(O); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min$2(max(toIntegerOrInfinity$1(deleteCount), 0), len - actualStart); + } + doesNotExceedSafeInteger$2(len + insertCount - actualDeleteCount); + A = arraySpeciesCreate$2(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty$1(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow$1(O, to); + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow$1(O, k - 1); + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow$1(O, to); + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + setArrayLength(O, len - actualDeleteCount + insertCount); + return A; + } + }); + + var fails$d = fails$T; + var wellKnownSymbol$3 = wellKnownSymbol$v; + var DESCRIPTORS$7 = descriptors; + var IS_PURE$1 = isPure; + + var ITERATOR$3 = wellKnownSymbol$3('iterator'); + + var urlConstructorDetection = !fails$d(function () { + // eslint-disable-next-line unicorn/relative-url-style -- required for testing + var url = new URL('b?a=1&b=2&c=3', 'http://a'); + var searchParams = url.searchParams; + var result = ''; + url.pathname = 'c%20d'; + searchParams.forEach(function (value, key) { + searchParams['delete']('b'); + result += key + value; + }); + return (IS_PURE$1 && !url.toJSON) + || (!searchParams.size && (IS_PURE$1 || !DESCRIPTORS$7)) + || !searchParams.sort + || url.href !== 'http://a/c%20d?a=1&c=3' + || searchParams.get('c') !== '3' + || String(new URLSearchParams('?a=1')) !== 'a=1' + || !searchParams[ITERATOR$3] + // throws in Edge + || new URL('https://a@b').username !== 'a' + || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' + // not punycoded in Edge + || new URL('http://тест').host !== 'xn--e1aybc' + // not escaped in Chrome 62- + || new URL('http://a#б').hash !== '#%D0%B1' + // fails in Chrome 66- + || result !== 'a1c3' + // throws in Safari + || new URL('http://x', undefined).host !== 'x'; + }); + + var DESCRIPTORS$6 = descriptors; + var uncurryThis$c = functionUncurryThis; + var call$3 = functionCall; + var fails$c = fails$T; + var objectKeys = objectKeys$3; + var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols; + var propertyIsEnumerableModule = objectPropertyIsEnumerable; + var toObject$4 = toObject$j; + var IndexedObject = indexedObject; + + // eslint-disable-next-line es/no-object-assign -- safe + var $assign = Object.assign; + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + var defineProperty$3 = Object.defineProperty; + var concat = uncurryThis$c([].concat); + + // `Object.assign` method + // https://tc39.es/ecma262/#sec-object.assign + var objectAssign = !$assign || fails$c(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS$6 && $assign({ b: 1 }, $assign(defineProperty$3({}, 'a', { + enumerable: true, + get: function () { + defineProperty$3(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es/no-symbol -- safe + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet; + }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject$4(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS$6 || call$3(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; + } : $assign; + + // based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js + var uncurryThis$b = functionUncurryThis; + + var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + var base = 36; + var tMin = 1; + var tMax = 26; + var skew = 38; + var damp = 700; + var initialBias = 72; + var initialN = 128; // 0x80 + var delimiter = '-'; // '\x2D' + var regexNonASCII = /[^\0-\u007E]/; // non-ASCII chars + var regexSeparators = /[.\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process'; + var baseMinusTMin = base - tMin; + + var $RangeError = RangeError; + var exec$4 = uncurryThis$b(regexSeparators.exec); + var floor$2 = Math.floor; + var fromCharCode$1 = String.fromCharCode; + var charCodeAt$1 = uncurryThis$b(''.charCodeAt); + var join$2 = uncurryThis$b([].join); + var push$4 = uncurryThis$b([].push); + var replace$4 = uncurryThis$b(''.replace); + var split$2 = uncurryThis$b(''.split); + var toLowerCase$1 = uncurryThis$b(''.toLowerCase); + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + */ + var ucs2decode = function (string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = charCodeAt$1(string, counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = charCodeAt$1(string, counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + push$4(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + push$4(output, value); + counter--; + } + } else { + push$4(output, value); + } + } + return output; + }; + + /** + * Converts a digit/integer into a basic code point. + */ + var digitToBasic = function (digit) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26); + }; + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + */ + var adapt = function (delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor$2(delta / damp) : delta >> 1; + delta += floor$2(delta / numPoints); + while (delta > baseMinusTMin * tMax >> 1) { + delta = floor$2(delta / baseMinusTMin); + k += base; + } + return floor$2(k + (baseMinusTMin + 1) * delta / (delta + skew)); + }; + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + */ + var encode = function (input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + var i, currentValue; + + // Handle the basic code points. + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < 0x80) { + push$4(output, fromCharCode$1(currentValue)); + } + } + + var basicLength = output.length; // number of basic code points. + var handledCPCount = basicLength; // number of code points that have been handled; + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + push$4(output, delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + // All non-basic code points < n have been handled already. Find the next larger one: + var m = maxInt; + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , but guard against overflow. + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor$2((maxInt - delta) / handledCPCountPlusOne)) { + throw $RangeError(OVERFLOW_ERROR); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (i = 0; i < input.length; i++) { + currentValue = input[i]; + if (currentValue < n && ++delta > maxInt) { + throw $RangeError(OVERFLOW_ERROR); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + var k = base; + while (true) { + var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) break; + var qMinusT = q - t; + var baseMinusT = base - t; + push$4(output, fromCharCode$1(digitToBasic(t + qMinusT % baseMinusT))); + q = floor$2(qMinusT / baseMinusT); + k += base; + } + + push$4(output, fromCharCode$1(digitToBasic(q))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + handledCPCount++; + } + } + + delta++; + n++; + } + return join$2(output, ''); + }; + + var stringPunycodeToAscii = function (input) { + var encoded = []; + var labels = split$2(replace$4(toLowerCase$1(input), regexSeparators, '\u002E'), '.'); + var i, label; + for (i = 0; i < labels.length; i++) { + label = labels[i]; + push$4(encoded, exec$4(regexNonASCII, label) ? 'xn--' + encode(label) : label); + } + return join$2(encoded, '.'); + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + var $$p = _export; + var global$c = global$M; + var call$2 = functionCall; + var uncurryThis$a = functionUncurryThis; + var DESCRIPTORS$5 = descriptors; + var USE_NATIVE_URL$1 = urlConstructorDetection; + var defineBuiltIn$2 = defineBuiltIn$h; + var defineBuiltInAccessor$2 = defineBuiltInAccessor$d; + var defineBuiltIns = defineBuiltIns$3; + var setToStringTag$2 = setToStringTag$9; + var createIteratorConstructor = iteratorCreateConstructor; + var InternalStateModule$2 = internalState; + var anInstance$3 = anInstance$9; + var isCallable$1 = isCallable$w; + var hasOwn$5 = hasOwnProperty_1; + var bind$2 = functionBindContext; + var classof = classof$i; + var anObject$3 = anObject$o; + var isObject$1 = isObject$l; + var $toString$1 = toString$m; + var create$2 = objectCreate; + var createPropertyDescriptor$2 = createPropertyDescriptor$a; + var getIterator = getIterator$4; + var getIteratorMethod = getIteratorMethod$5; + var validateArgumentsLength$3 = validateArgumentsLength$5; + var wellKnownSymbol$2 = wellKnownSymbol$v; + var arraySort = arraySort$1; + + var ITERATOR$2 = wellKnownSymbol$2('iterator'); + var URL_SEARCH_PARAMS = 'URLSearchParams'; + var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; + var setInternalState$2 = InternalStateModule$2.set; + var getInternalParamsState = InternalStateModule$2.getterFor(URL_SEARCH_PARAMS); + var getInternalIteratorState = InternalStateModule$2.getterFor(URL_SEARCH_PARAMS_ITERATOR); + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor; + + // Avoid NodeJS experimental warning + var safeGetBuiltIn = function (name) { + if (!DESCRIPTORS$5) return global$c[name]; + var descriptor = getOwnPropertyDescriptor$2(global$c, name); + return descriptor && descriptor.value; + }; + + var nativeFetch = safeGetBuiltIn('fetch'); + var NativeRequest = safeGetBuiltIn('Request'); + var Headers$1 = safeGetBuiltIn('Headers'); + var RequestPrototype = NativeRequest && NativeRequest.prototype; + var HeadersPrototype = Headers$1 && Headers$1.prototype; + var RegExp$1 = global$c.RegExp; + var TypeError$3 = global$c.TypeError; + var decodeURIComponent$1 = global$c.decodeURIComponent; + var encodeURIComponent$1 = global$c.encodeURIComponent; + var charAt$3 = uncurryThis$a(''.charAt); + var join$1 = uncurryThis$a([].join); + var push$3 = uncurryThis$a([].push); + var replace$3 = uncurryThis$a(''.replace); + var shift$1 = uncurryThis$a([].shift); + var splice = uncurryThis$a([].splice); + var split$1 = uncurryThis$a(''.split); + var stringSlice$4 = uncurryThis$a(''.slice); + + var plus = /\+/g; + var sequences = Array(4); + + var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp$1('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); + }; + + var percentDecode = function (sequence) { + try { + return decodeURIComponent$1(sequence); + } catch (error) { + return sequence; + } + }; + + var deserialize = function (it) { + var result = replace$3(it, plus, ' '); + var bytes = 4; + try { + return decodeURIComponent$1(result); + } catch (error) { + while (bytes) { + result = replace$3(result, percentSequence(bytes--), percentDecode); + } + return result; + } + }; + + var find = /[!'()~]|%20/g; + + var replacements = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' + }; + + var replacer = function (match) { + return replacements[match]; + }; + + var serialize = function (it) { + return replace$3(encodeURIComponent$1(it), find, replacer); + }; + + var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState$2(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + iterator: getIterator(getInternalParamsState(params).entries), + kind: kind + }); + }, 'Iterator', function next() { + var state = getInternalIteratorState(this); + var kind = state.kind; + var step = state.iterator.next(); + var entry = step.value; + if (!step.done) { + step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; + } return step; + }, true); + + var URLSearchParamsState = function (init) { + this.entries = []; + this.url = null; + + if (init !== undefined) { + if (isObject$1(init)) this.parseObject(init); + else this.parseQuery(typeof init == 'string' ? charAt$3(init, 0) === '?' ? stringSlice$4(init, 1) : init : $toString$1(init)); + } + }; + + URLSearchParamsState.prototype = { + type: URL_SEARCH_PARAMS, + bindURL: function (url) { + this.url = url; + this.update(); + }, + parseObject: function (object) { + var iteratorMethod = getIteratorMethod(object); + var iterator, next, step, entryIterator, entryNext, first, second; + + if (iteratorMethod) { + iterator = getIterator(object, iteratorMethod); + next = iterator.next; + while (!(step = call$2(next, iterator)).done) { + entryIterator = getIterator(anObject$3(step.value)); + entryNext = entryIterator.next; + if ( + (first = call$2(entryNext, entryIterator)).done || + (second = call$2(entryNext, entryIterator)).done || + !call$2(entryNext, entryIterator).done + ) throw TypeError$3('Expected sequence with length 2'); + push$3(this.entries, { key: $toString$1(first.value), value: $toString$1(second.value) }); + } + } else for (var key in object) if (hasOwn$5(object, key)) { + push$3(this.entries, { key: key, value: $toString$1(object[key]) }); + } + }, + parseQuery: function (query) { + if (query) { + var attributes = split$1(query, '&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = split$1(attribute, '='); + push$3(this.entries, { + key: deserialize(shift$1(entry)), + value: deserialize(join$1(entry, '=')) + }); + } + } + } + }, + serialize: function () { + var entries = this.entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + push$3(result, serialize(entry.key) + '=' + serialize(entry.value)); + } return join$1(result, '&'); + }, + update: function () { + this.entries.length = 0; + this.parseQuery(this.url.query); + }, + updateURL: function () { + if (this.url) this.url.update(); + } + }; + + // `URLSearchParams` constructor + // https://url.spec.whatwg.org/#interface-urlsearchparams + var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance$3(this, URLSearchParamsPrototype); + var init = arguments.length > 0 ? arguments[0] : undefined; + var state = setInternalState$2(this, new URLSearchParamsState(init)); + if (!DESCRIPTORS$5) this.length = state.entries.length; + }; + + var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + + defineBuiltIns(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.append` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + validateArgumentsLength$3(arguments.length, 2); + var state = getInternalParamsState(this); + push$3(state.entries, { key: $toString$1(name), value: $toString$1(value) }); + if (!DESCRIPTORS$5) this.length++; + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name) { + validateArgumentsLength$3(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var key = $toString$1(name); + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) splice(entries, index, 1); + else index++; + } + if (!DESCRIPTORS$5) this.length = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + validateArgumentsLength$3(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = $toString$1(name); + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + validateArgumentsLength$3(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = $toString$1(name); + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) push$3(result, entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name) { + validateArgumentsLength$3(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = $toString$1(name); + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + validateArgumentsLength$3(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var found = false; + var key = $toString$1(name); + var val = $toString$1(value); + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) splice(entries, index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) push$3(entries, { key: key, value: val }); + if (!DESCRIPTORS$5) this.length = entries.length; + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + arraySort(state.entries, function (a, b) { + return a.key > b.key ? 1 : -1; + }); + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind$2(callback, arguments.length > 1 ? arguments[1] : undefined); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } + }, { enumerable: true }); + + // `URLSearchParams.prototype[@@iterator]` method + defineBuiltIn$2(URLSearchParamsPrototype, ITERATOR$2, URLSearchParamsPrototype.entries, { name: 'entries' }); + + // `URLSearchParams.prototype.toString` method + // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior + defineBuiltIn$2(URLSearchParamsPrototype, 'toString', function toString() { + return getInternalParamsState(this).serialize(); + }, { enumerable: true }); + + // `URLSearchParams.prototype.size` getter + // https://github.com/whatwg/url/pull/734 + if (DESCRIPTORS$5) defineBuiltInAccessor$2(URLSearchParamsPrototype, 'size', { + get: function size() { + return getInternalParamsState(this).entries.length; + }, + configurable: true, + enumerable: true + }); + + setToStringTag$2(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + + $$p({ global: true, constructor: true, forced: !USE_NATIVE_URL$1 }, { + URLSearchParams: URLSearchParamsConstructor + }); + + // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` + if (!USE_NATIVE_URL$1 && isCallable$1(Headers$1)) { + var headersHas = uncurryThis$a(HeadersPrototype.has); + var headersSet = uncurryThis$a(HeadersPrototype.set); + + var wrapRequestOptions = function (init) { + if (isObject$1(init)) { + var body = init.body; + var headers; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers$1(init.headers) : new Headers$1(); + if (!headersHas(headers, 'content-type')) { + headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + return create$2(init, { + body: createPropertyDescriptor$2(0, $toString$1(body)), + headers: createPropertyDescriptor$2(0, headers) + }); + } + } return init; + }; + + if (isCallable$1(nativeFetch)) { + $$p({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { + fetch: function fetch(input /* , init */) { + return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + } + }); + } + + if (isCallable$1(NativeRequest)) { + var RequestConstructor = function Request(input /* , init */) { + anInstance$3(this, RequestPrototype); + return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); + }; + + RequestPrototype.constructor = RequestConstructor; + RequestConstructor.prototype = RequestPrototype; + + $$p({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { + Request: RequestConstructor + }); + } + } + + var web_urlSearchParams_constructor = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState + }; + + // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` + + var $$o = _export; + var DESCRIPTORS$4 = descriptors; + var USE_NATIVE_URL = urlConstructorDetection; + var global$b = global$M; + var bind$1 = functionBindContext; + var uncurryThis$9 = functionUncurryThis; + var defineBuiltIn$1 = defineBuiltIn$h; + var defineBuiltInAccessor$1 = defineBuiltInAccessor$d; + var anInstance$2 = anInstance$9; + var hasOwn$4 = hasOwnProperty_1; + var assign = objectAssign; + var arrayFrom = arrayFrom$1; + var arraySlice$2 = arraySliceSimple; + var codeAt = stringMultibyte.codeAt; + var toASCII = stringPunycodeToAscii; + var $toString = toString$m; + var setToStringTag$1 = setToStringTag$9; + var validateArgumentsLength$2 = validateArgumentsLength$5; + var URLSearchParamsModule = web_urlSearchParams_constructor; + var InternalStateModule$1 = internalState; + + var setInternalState$1 = InternalStateModule$1.set; + var getInternalURLState = InternalStateModule$1.getterFor('URL'); + var URLSearchParams$1 = URLSearchParamsModule.URLSearchParams; + var getInternalSearchParamsState = URLSearchParamsModule.getState; + + var NativeURL = global$b.URL; + var TypeError$2 = global$b.TypeError; + var parseInt$1 = global$b.parseInt; + var floor$1 = Math.floor; + var pow$1 = Math.pow; + var charAt$2 = uncurryThis$9(''.charAt); + var exec$3 = uncurryThis$9(/./.exec); + var join = uncurryThis$9([].join); + var numberToString = uncurryThis$9(1.0.toString); + var pop = uncurryThis$9([].pop); + var push$2 = uncurryThis$9([].push); + var replace$2 = uncurryThis$9(''.replace); + var shift = uncurryThis$9([].shift); + var split = uncurryThis$9(''.split); + var stringSlice$3 = uncurryThis$9(''.slice); + var toLowerCase = uncurryThis$9(''.toLowerCase); + var unshift = uncurryThis$9([].unshift); + + var INVALID_AUTHORITY = 'Invalid authority'; + var INVALID_SCHEME = 'Invalid scheme'; + var INVALID_HOST = 'Invalid host'; + var INVALID_PORT = 'Invalid port'; + + var ALPHA = /[a-z]/i; + // eslint-disable-next-line regexp/no-obscure-range -- safe + var ALPHANUMERIC = /[\d+-.a-z]/i; + var DIGIT = /\d/; + var HEX_START = /^0x/i; + var OCT = /^[0-7]+$/; + var DEC = /^\d+$/; + var HEX = /^[\da-f]+$/i; + /* eslint-disable regexp/no-control-character -- safe */ + var FORBIDDEN_HOST_CODE_POINT = /[\0\t\n\r #%/:<>?@[\\\]^|]/; + var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\0\t\n\r #/:<>?@[\\\]^|]/; + var LEADING_C0_CONTROL_OR_SPACE = /^[\u0000-\u0020]+/; + var TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\u0000-\u0020])[\u0000-\u0020]+$/; + var TAB_AND_NEW_LINE = /[\t\n\r]/g; + /* eslint-enable regexp/no-control-character -- safe */ + var EOF; + + // https://url.spec.whatwg.org/#ipv4-number-parser + var parseIPv4 = function (input) { + var parts = split(input, '.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.length--; + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part == '') return input; + radix = 10; + if (part.length > 1 && charAt$2(part, 0) == '0') { + radix = exec$3(HEX_START, part) ? 16 : 8; + part = stringSlice$3(part, radix == 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!exec$3(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input; + number = parseInt$1(part, radix); + } + push$2(numbers, number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow$1(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = pop(numbers); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow$1(256, 3 - index); + } + return ipv4; + }; + + // https://url.spec.whatwg.org/#concept-ipv6-parser + // eslint-disable-next-line max-statements -- TODO + var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var chr = function () { + return charAt$2(input, pointer); + }; + + if (chr() == ':') { + if (charAt$2(input, 1) != ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (chr()) { + if (pieceIndex == 8) return; + if (chr() == ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && exec$3(HEX, chr())) { + value = value * 16 + parseInt$1(chr(), 16); + pointer++; + length++; + } + if (chr() == '.') { + if (length == 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (chr()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (chr() == '.' && numbersSeen < 4) pointer++; + else return; + } + if (!exec$3(DIGIT, chr())) return; + while (exec$3(DIGIT, chr())) { + number = parseInt$1(chr(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece == 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++; + } + if (numbersSeen != 4) return; + break; + } else if (chr() == ':') { + pointer++; + if (!chr()) return; + } else if (chr()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex != 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex != 8) return; + return address; + }; + + var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; + }; + + // https://url.spec.whatwg.org/#host-serializing + var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + unshift(result, host % 256); + host = floor$1(host / 256); + } return join(result, '.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += numberToString(host[index], 16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } return host; + }; + + var C0ControlPercentEncodeSet = {}; + var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 + }); + var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 + }); + var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 + }); + + var percentEncode = function (chr, set) { + var code = codeAt(chr, 0); + return code > 0x20 && code < 0x7F && !hasOwn$4(set, chr) ? chr : encodeURIComponent(chr); + }; + + // https://url.spec.whatwg.org/#special-scheme + var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + + // https://url.spec.whatwg.org/#windows-drive-letter + var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length == 2 && exec$3(ALPHA, charAt$2(string, 0)) + && ((second = charAt$2(string, 1)) == ':' || (!normalized && second == '|')); + }; + + // https://url.spec.whatwg.org/#start-with-a-windows-drive-letter + var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(stringSlice$3(string, 0, 2)) && ( + string.length == 2 || + ((third = charAt$2(string, 2)) === '/' || third === '\\' || third === '?' || third === '#') + ); + }; + + // https://url.spec.whatwg.org/#single-dot-path-segment + var isSingleDot = function (segment) { + return segment === '.' || toLowerCase(segment) === '%2e'; + }; + + // https://url.spec.whatwg.org/#double-dot-path-segment + var isDoubleDot = function (segment) { + segment = toLowerCase(segment); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; + }; + + // States: + var SCHEME_START = {}; + var SCHEME = {}; + var NO_SCHEME = {}; + var SPECIAL_RELATIVE_OR_AUTHORITY = {}; + var PATH_OR_AUTHORITY = {}; + var RELATIVE = {}; + var RELATIVE_SLASH = {}; + var SPECIAL_AUTHORITY_SLASHES = {}; + var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; + var AUTHORITY = {}; + var HOST = {}; + var HOSTNAME = {}; + var PORT = {}; + var FILE = {}; + var FILE_SLASH = {}; + var FILE_HOST = {}; + var PATH_START = {}; + var PATH = {}; + var CANNOT_BE_A_BASE_URL_PATH = {}; + var QUERY = {}; + var FRAGMENT = {}; + + var URLState = function (url, isBase, base) { + var urlString = $toString(url); + var baseState, failure, searchParams; + if (isBase) { + failure = this.parse(urlString); + if (failure) throw TypeError$2(failure); + this.searchParams = null; + } else { + if (base !== undefined) baseState = new URLState(base, true); + failure = this.parse(urlString, null, baseState); + if (failure) throw TypeError$2(failure); + searchParams = getInternalSearchParamsState(new URLSearchParams$1()); + searchParams.bindURL(this); + this.searchParams = searchParams; + } + }; + + URLState.prototype = { + type: 'URL', + // https://url.spec.whatwg.org/#url-parsing + // eslint-disable-next-line max-statements -- TODO + parse: function (input, stateOverride, base) { + var url = this; + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, chr, bufferCodePoints, failure; + + input = $toString(input); + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = replace$2(input, LEADING_C0_CONTROL_OR_SPACE, ''); + input = replace$2(input, TRAILING_C0_CONTROL_OR_SPACE, '$1'); + } + + input = replace$2(input, TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + chr = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (chr && exec$3(ALPHA, chr)) { + buffer += toLowerCase(chr); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (chr && (exec$3(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) { + buffer += toLowerCase(chr); + } else if (chr == ':') { + if (stateOverride && ( + (url.isSpecial() != hasOwn$4(specialSchemes, buffer)) || + (buffer == 'file' && (url.includesCredentials() || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme == 'file') { + state = FILE; + } else if (url.isSpecial() && base && base.scheme == url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (url.isSpecial()) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] == '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + push$2(url.path, ''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && chr == '#') { + url.scheme = base.scheme; + url.path = arraySlice$2(base.path); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme == 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (chr == '/' && codePoints[pointer + 1] == '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (chr == '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (chr == EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice$2(base.path); + url.query = base.query; + } else if (chr == '/' || (chr == '\\' && url.isSpecial())) { + state = RELATIVE_SLASH; + } else if (chr == '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice$2(base.path); + url.query = ''; + state = QUERY; + } else if (chr == '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice$2(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = arraySlice$2(base.path); + url.path.length--; + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (url.isSpecial() && (chr == '/' || chr == '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (chr == '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (chr != '/' || charAt$2(buffer, pointer + 1) != '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (chr != '/' && chr != '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (chr == '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint == ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + chr == EOF || chr == '/' || chr == '?' || chr == '#' || + (chr == '\\' && url.isSpecial()) + ) { + if (seenAt && buffer == '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += chr; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme == 'file') { + state = FILE_HOST; + continue; + } else if (chr == ':' && !seenBracket) { + if (buffer == '') return INVALID_HOST; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride == HOSTNAME) return; + } else if ( + chr == EOF || chr == '/' || chr == '?' || chr == '#' || + (chr == '\\' && url.isSpecial()) + ) { + if (url.isSpecial() && buffer == '') return INVALID_HOST; + if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return; + failure = url.parseHost(buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (chr == '[') seenBracket = true; + else if (chr == ']') seenBracket = false; + buffer += chr; + } break; + + case PORT: + if (exec$3(DIGIT, chr)) { + buffer += chr; + } else if ( + chr == EOF || chr == '/' || chr == '?' || chr == '#' || + (chr == '\\' && url.isSpecial()) || + stateOverride + ) { + if (buffer != '') { + var port = parseInt$1(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (chr == '/' || chr == '\\') state = FILE_SLASH; + else if (base && base.scheme == 'file') { + if (chr == EOF) { + url.host = base.host; + url.path = arraySlice$2(base.path); + url.query = base.query; + } else if (chr == '?') { + url.host = base.host; + url.path = arraySlice$2(base.path); + url.query = ''; + state = QUERY; + } else if (chr == '#') { + url.host = base.host; + url.path = arraySlice$2(base.path); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + if (!startsWithWindowsDriveLetter(join(arraySlice$2(codePoints, pointer), ''))) { + url.host = base.host; + url.path = arraySlice$2(base.path); + url.shortenPath(); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (chr == '/' || chr == '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice$2(codePoints, pointer), ''))) { + if (isWindowsDriveLetter(base.path[0], true)) push$2(url.path, base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (chr == EOF || chr == '/' || chr == '\\' || chr == '?' || chr == '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer == '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = url.parseHost(buffer); + if (failure) return failure; + if (url.host == 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += chr; + break; + + case PATH_START: + if (url.isSpecial()) { + state = PATH; + if (chr != '/' && chr != '\\') continue; + } else if (!stateOverride && chr == '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && chr == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr != EOF) { + state = PATH; + if (chr != '/') continue; + } break; + + case PATH: + if ( + chr == EOF || chr == '/' || + (chr == '\\' && url.isSpecial()) || + (!stateOverride && (chr == '?' || chr == '#')) + ) { + if (isDoubleDot(buffer)) { + url.shortenPath(); + if (chr != '/' && !(chr == '\\' && url.isSpecial())) { + push$2(url.path, ''); + } + } else if (isSingleDot(buffer)) { + if (chr != '/' && !(chr == '\\' && url.isSpecial())) { + push$2(url.path, ''); + } + } else { + if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = charAt$2(buffer, 0) + ':'; // normalize windows drive letter + } + push$2(url.path, buffer); + } + buffer = ''; + if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) { + while (url.path.length > 1 && url.path[0] === '') { + shift(url.path); + } + } + if (chr == '?') { + url.query = ''; + state = QUERY; + } else if (chr == '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(chr, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (chr == '?') { + url.query = ''; + state = QUERY; + } else if (chr == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr != EOF) { + url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && chr == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (chr != EOF) { + if (chr == "'" && url.isSpecial()) url.query += '%27'; + else if (chr == '#') url.query += '%23'; + else url.query += percentEncode(chr, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet); + break; + } + + pointer++; + } + }, + // https://url.spec.whatwg.org/#host-parsing + parseHost: function (input) { + var result, codePoints, index; + if (charAt$2(input, 0) == '[') { + if (charAt$2(input, input.length - 1) != ']') return INVALID_HOST; + result = parseIPv6(stringSlice$3(input, 1, -1)); + if (!result) return INVALID_HOST; + this.host = result; + // opaque host + } else if (!this.isSpecial()) { + if (exec$3(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + this.host = result; + } else { + input = toASCII(input); + if (exec$3(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + this.host = result; + } + }, + // https://url.spec.whatwg.org/#cannot-have-a-username-password-port + cannotHaveUsernamePasswordPort: function () { + return !this.host || this.cannotBeABaseURL || this.scheme == 'file'; + }, + // https://url.spec.whatwg.org/#include-credentials + includesCredentials: function () { + return this.username != '' || this.password != ''; + }, + // https://url.spec.whatwg.org/#is-special + isSpecial: function () { + return hasOwn$4(specialSchemes, this.scheme); + }, + // https://url.spec.whatwg.org/#shorten-a-urls-path + shortenPath: function () { + var path = this.path; + var pathSize = path.length; + if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { + path.length--; + } + }, + // https://url.spec.whatwg.org/#concept-url-serializer + serialize: function () { + var url = this; + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (url.includesCredentials()) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme == 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; + }, + // https://url.spec.whatwg.org/#dom-url-href + setHref: function (href) { + var failure = this.parse(href); + if (failure) throw TypeError$2(failure); + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-origin + getOrigin: function () { + var scheme = this.scheme; + var port = this.port; + if (scheme == 'blob') try { + return new URLConstructor(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme == 'file' || !this.isSpecial()) return 'null'; + return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : ''); + }, + // https://url.spec.whatwg.org/#dom-url-protocol + getProtocol: function () { + return this.scheme + ':'; + }, + setProtocol: function (protocol) { + this.parse($toString(protocol) + ':', SCHEME_START); + }, + // https://url.spec.whatwg.org/#dom-url-username + getUsername: function () { + return this.username; + }, + setUsername: function (username) { + var codePoints = arrayFrom($toString(username)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.username = ''; + for (var i = 0; i < codePoints.length; i++) { + this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-password + getPassword: function () { + return this.password; + }, + setPassword: function (password) { + var codePoints = arrayFrom($toString(password)); + if (this.cannotHaveUsernamePasswordPort()) return; + this.password = ''; + for (var i = 0; i < codePoints.length; i++) { + this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }, + // https://url.spec.whatwg.org/#dom-url-host + getHost: function () { + var host = this.host; + var port = this.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; + }, + setHost: function (host) { + if (this.cannotBeABaseURL) return; + this.parse(host, HOST); + }, + // https://url.spec.whatwg.org/#dom-url-hostname + getHostname: function () { + var host = this.host; + return host === null ? '' : serializeHost(host); + }, + setHostname: function (hostname) { + if (this.cannotBeABaseURL) return; + this.parse(hostname, HOSTNAME); + }, + // https://url.spec.whatwg.org/#dom-url-port + getPort: function () { + var port = this.port; + return port === null ? '' : $toString(port); + }, + setPort: function (port) { + if (this.cannotHaveUsernamePasswordPort()) return; + port = $toString(port); + if (port == '') this.port = null; + else this.parse(port, PORT); + }, + // https://url.spec.whatwg.org/#dom-url-pathname + getPathname: function () { + var path = this.path; + return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : ''; + }, + setPathname: function (pathname) { + if (this.cannotBeABaseURL) return; + this.path = []; + this.parse(pathname, PATH_START); + }, + // https://url.spec.whatwg.org/#dom-url-search + getSearch: function () { + var query = this.query; + return query ? '?' + query : ''; + }, + setSearch: function (search) { + search = $toString(search); + if (search == '') { + this.query = null; + } else { + if ('?' == charAt$2(search, 0)) search = stringSlice$3(search, 1); + this.query = ''; + this.parse(search, QUERY); + } + this.searchParams.update(); + }, + // https://url.spec.whatwg.org/#dom-url-searchparams + getSearchParams: function () { + return this.searchParams.facade; + }, + // https://url.spec.whatwg.org/#dom-url-hash + getHash: function () { + var fragment = this.fragment; + return fragment ? '#' + fragment : ''; + }, + setHash: function (hash) { + hash = $toString(hash); + if (hash == '') { + this.fragment = null; + return; + } + if ('#' == charAt$2(hash, 0)) hash = stringSlice$3(hash, 1); + this.fragment = ''; + this.parse(hash, FRAGMENT); + }, + update: function () { + this.query = this.searchParams.serialize() || null; + } + }; + + // `URL` constructor + // https://url.spec.whatwg.org/#url-class + var URLConstructor = function URL(url /* , base */) { + var that = anInstance$2(this, URLPrototype); + var base = validateArgumentsLength$2(arguments.length, 1) > 1 ? arguments[1] : undefined; + var state = setInternalState$1(that, new URLState(url, false, base)); + if (!DESCRIPTORS$4) { + that.href = state.serialize(); + that.origin = state.getOrigin(); + that.protocol = state.getProtocol(); + that.username = state.getUsername(); + that.password = state.getPassword(); + that.host = state.getHost(); + that.hostname = state.getHostname(); + that.port = state.getPort(); + that.pathname = state.getPathname(); + that.search = state.getSearch(); + that.searchParams = state.getSearchParams(); + that.hash = state.getHash(); + } + }; + + var URLPrototype = URLConstructor.prototype; + + var accessorDescriptor = function (getter, setter) { + return { + get: function () { + return getInternalURLState(this)[getter](); + }, + set: setter && function (value) { + return getInternalURLState(this)[setter](value); + }, + configurable: true, + enumerable: true + }; + }; + + if (DESCRIPTORS$4) { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + defineBuiltInAccessor$1(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref')); + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + defineBuiltInAccessor$1(URLPrototype, 'origin', accessorDescriptor('getOrigin')); + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + defineBuiltInAccessor$1(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol')); + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + defineBuiltInAccessor$1(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername')); + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + defineBuiltInAccessor$1(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword')); + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + defineBuiltInAccessor$1(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost')); + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + defineBuiltInAccessor$1(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname')); + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + defineBuiltInAccessor$1(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort')); + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + defineBuiltInAccessor$1(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname')); + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + defineBuiltInAccessor$1(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch')); + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + defineBuiltInAccessor$1(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams')); + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + defineBuiltInAccessor$1(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash')); + } + + // `URL.prototype.toJSON` method + // https://url.spec.whatwg.org/#dom-url-tojson + defineBuiltIn$1(URLPrototype, 'toJSON', function toJSON() { + return getInternalURLState(this).serialize(); + }, { enumerable: true }); + + // `URL.prototype.toString` method + // https://url.spec.whatwg.org/#URL-stringification-behavior + defineBuiltIn$1(URLPrototype, 'toString', function toString() { + return getInternalURLState(this).serialize(); + }, { enumerable: true }); + + if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + if (nativeCreateObjectURL) defineBuiltIn$1(URLConstructor, 'createObjectURL', bind$1(nativeCreateObjectURL, NativeURL)); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + if (nativeRevokeObjectURL) defineBuiltIn$1(URLConstructor, 'revokeObjectURL', bind$1(nativeRevokeObjectURL, NativeURL)); + } + + setToStringTag$1(URLConstructor, 'URL'); + + $$o({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS$4 }, { + URL: URLConstructor + }); + + var $$n = _export; + var $find = arrayIteration.find; + var addToUnscopables$2 = addToUnscopables$4; + + var FIND = 'find'; + var SKIPS_HOLES = true; + + // Shouldn't skip holes + // eslint-disable-next-line es/no-array-prototype-find -- testing + if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + $$n({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } + }); + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables$2(FIND); + + var $$m = _export; + var fails$b = fails$T; + var toObject$3 = toObject$j; + var nativeGetPrototypeOf = objectGetPrototypeOf; + var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter; + + var FAILS_ON_PRIMITIVES = fails$b(function () { nativeGetPrototypeOf(1); }); + + // `Object.getPrototypeOf` method + // https://tc39.es/ecma262/#sec-object.getprototypeof + $$m({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(it) { + return nativeGetPrototypeOf(toObject$3(it)); + } + }); + + var isArray$2 = isArray$7; + var lengthOfArrayLike$3 = lengthOfArrayLike$o; + var doesNotExceedSafeInteger$1 = doesNotExceedSafeInteger$5; + var bind = functionBindContext; + + // `FlattenIntoArray` abstract operation + // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray + var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? bind(mapper, thisArg) : false; + var element, elementLen; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + if (depth > 0 && isArray$2(element)) { + elementLen = lengthOfArrayLike$3(element); + targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1; + } else { + doesNotExceedSafeInteger$1(targetIndex + 1); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; + }; + + var flattenIntoArray_1 = flattenIntoArray$1; + + var $$l = _export; + var flattenIntoArray = flattenIntoArray_1; + var toObject$2 = toObject$j; + var lengthOfArrayLike$2 = lengthOfArrayLike$o; + var toIntegerOrInfinity = toIntegerOrInfinity$f; + var arraySpeciesCreate$1 = arraySpeciesCreate$4; + + // `Array.prototype.flat` method + // https://tc39.es/ecma262/#sec-array.prototype.flat + $$l({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject$2(this); + var sourceLen = lengthOfArrayLike$2(O); + var A = arraySpeciesCreate$1(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg)); + return A; + } + }); + + // this method was added to unscopables after implementation + // in popular engines, so it's moved to a separate module + var addToUnscopables$1 = addToUnscopables$4; + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables$1('flat'); + + var $$k = _export; + var fails$a = fails$T; + var isArray$1 = isArray$7; + var isObject = isObject$l; + var toObject$1 = toObject$j; + var lengthOfArrayLike$1 = lengthOfArrayLike$o; + var doesNotExceedSafeInteger = doesNotExceedSafeInteger$5; + var createProperty = createProperty$5; + var arraySpeciesCreate = arraySpeciesCreate$4; + var arrayMethodHasSpeciesSupport = arrayMethodHasSpeciesSupport$5; + var wellKnownSymbol$1 = wellKnownSymbol$v; + var V8_VERSION = engineV8Version; + + var IS_CONCAT_SPREADABLE = wellKnownSymbol$1('isConcatSpreadable'); + + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/679 + var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails$a(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; + }); + + var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray$1(O); + }; + + var FORCED$5 = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); + + // `Array.prototype.concat` method + // https://tc39.es/ecma262/#sec-array.prototype.concat + // with adding support of @@isConcatSpreadable and @@species + $$k({ target: 'Array', proto: true, arity: 1, forced: FORCED$5 }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject$1(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike$1(E); + doesNotExceedSafeInteger(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + doesNotExceedSafeInteger(n + 1); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } + }); + + var $$j = _export; + var uncurryThis$8 = functionUncurryThis; + var aCallable = aCallable$c; + var toObject = toObject$j; + var lengthOfArrayLike = lengthOfArrayLike$o; + var deletePropertyOrThrow = deletePropertyOrThrow$4; + var toString$6 = toString$m; + var fails$9 = fails$T; + var internalSort = arraySort$1; + var arrayMethodIsStrict = arrayMethodIsStrict$4; + var FF = engineFfVersion; + var IE_OR_EDGE = engineIsIeOrEdge; + var V8 = engineV8Version; + var WEBKIT = engineWebkitVersion; + + var test$2 = []; + var nativeSort = uncurryThis$8(test$2.sort); + var push$1 = uncurryThis$8(test$2.push); + + // IE8- + var FAILS_ON_UNDEFINED = fails$9(function () { + test$2.sort(undefined); + }); + // V8 bug + var FAILS_ON_NULL = fails$9(function () { + test$2.sort(null); + }); + // Old WebKit + var STRICT_METHOD = arrayMethodIsStrict('sort'); + + var STABLE_SORT = !fails$9(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 70; + if (FF && FF > 3) return; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 603; + + var result = ''; + var code, chr, value, index; + + // generate an array with more 512 elements (Chakra and old V8 fails only in this case) + for (code = 65; code < 76; code++) { + chr = String.fromCharCode(code); + + switch (code) { + case 66: case 69: case 70: case 72: value = 3; break; + case 68: case 71: value = 4; break; + default: value = 2; + } + + for (index = 0; index < 47; index++) { + test$2.push({ k: chr + index, v: value }); + } + } + + test$2.sort(function (a, b) { return b.v - a.v; }); + + for (index = 0; index < test$2.length; index++) { + chr = test$2[index].k.charAt(0); + if (result.charAt(result.length - 1) !== chr) result += chr; + } + + return result !== 'DGBEFHACIJK'; + }); + + var FORCED$4 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT; + + var getSortCompare = function (comparefn) { + return function (x, y) { + if (y === undefined) return -1; + if (x === undefined) return 1; + if (comparefn !== undefined) return +comparefn(x, y) || 0; + return toString$6(x) > toString$6(y) ? 1 : -1; + }; + }; + + // `Array.prototype.sort` method + // https://tc39.es/ecma262/#sec-array.prototype.sort + $$j({ target: 'Array', proto: true, forced: FORCED$4 }, { + sort: function sort(comparefn) { + if (comparefn !== undefined) aCallable(comparefn); + + var array = toObject(this); + + if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn); + + var items = []; + var arrayLength = lengthOfArrayLike(array); + var itemsLength, index; + + for (index = 0; index < arrayLength; index++) { + if (index in array) push$1(items, array[index]); + } + + internalSort(items, getSortCompare(comparefn)); + + itemsLength = lengthOfArrayLike(items); + index = 0; + + while (index < itemsLength) array[index] = items[index++]; + while (index < arrayLength) deletePropertyOrThrow(array, index++); + + return array; + } + }); + + var defineWellKnownSymbol = wellKnownSymbolDefine; + + // `Symbol.iterator` well-known symbol + // https://tc39.es/ecma262/#sec-symbol.iterator + defineWellKnownSymbol('iterator'); + + var $$i = _export; + var uncurryThis$7 = functionUncurryThis; + var isArray = isArray$7; + + var nativeReverse = uncurryThis$7([].reverse); + var test$1 = [1, 2]; + + // `Array.prototype.reverse` method + // https://tc39.es/ecma262/#sec-array.prototype.reverse + // fix for Safari 12.0 bug + // https://bugs.webkit.org/show_bug.cgi?id=188794 + $$i({ target: 'Array', proto: true, forced: String(test$1) === String(test$1.reverse()) }, { + reverse: function reverse() { + // eslint-disable-next-line no-self-assign -- dirty hack + if (isArray(this)) this.length = this.length; + return nativeReverse(this); + } + }); + + // a string of all valid unicode whitespaces + var whitespaces$5 = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + var uncurryThis$6 = functionUncurryThis; + var requireObjectCoercible$2 = requireObjectCoercible$b; + var toString$5 = toString$m; + var whitespaces$4 = whitespaces$5; + + var replace$1 = uncurryThis$6(''.replace); + var ltrim = RegExp('^[' + whitespaces$4 + ']+'); + var rtrim = RegExp('(^|[^' + whitespaces$4 + '])[' + whitespaces$4 + ']+$'); + + // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation + var createMethod = function (TYPE) { + return function ($this) { + var string = toString$5(requireObjectCoercible$2($this)); + if (TYPE & 1) string = replace$1(string, ltrim, ''); + if (TYPE & 2) string = replace$1(string, rtrim, '$1'); + return string; + }; + }; + + var stringTrim = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) + }; + + var global$a = global$M; + var fails$8 = fails$T; + var uncurryThis$5 = functionUncurryThis; + var toString$4 = toString$m; + var trim$2 = stringTrim.trim; + var whitespaces$3 = whitespaces$5; + + var charAt$1 = uncurryThis$5(''.charAt); + var $parseFloat$1 = global$a.parseFloat; + var Symbol$2 = global$a.Symbol; + var ITERATOR$1 = Symbol$2 && Symbol$2.iterator; + var FORCED$3 = 1 / $parseFloat$1(whitespaces$3 + '-0') !== -Infinity + // MS Edge 18- broken with boxed symbols + || (ITERATOR$1 && !fails$8(function () { $parseFloat$1(Object(ITERATOR$1)); })); + + // `parseFloat` method + // https://tc39.es/ecma262/#sec-parsefloat-string + var numberParseFloat = FORCED$3 ? function parseFloat(string) { + var trimmedString = trim$2(toString$4(string)); + var result = $parseFloat$1(trimmedString); + return result === 0 && charAt$1(trimmedString, 0) == '-' ? -0 : result; + } : $parseFloat$1; + + var $$h = _export; + var $parseFloat = numberParseFloat; + + // `parseFloat` method + // https://tc39.es/ecma262/#sec-parsefloat-string + $$h({ global: true, forced: parseFloat != $parseFloat }, { + parseFloat: $parseFloat + }); + + var global$9 = global$M; + var fails$7 = fails$T; + var uncurryThis$4 = functionUncurryThis; + var toString$3 = toString$m; + var trim$1 = stringTrim.trim; + var whitespaces$2 = whitespaces$5; + + var $parseInt$1 = global$9.parseInt; + var Symbol$1 = global$9.Symbol; + var ITERATOR = Symbol$1 && Symbol$1.iterator; + var hex = /^[+-]?0x/i; + var exec$2 = uncurryThis$4(hex.exec); + var FORCED$2 = $parseInt$1(whitespaces$2 + '08') !== 8 || $parseInt$1(whitespaces$2 + '0x16') !== 22 + // MS Edge 18- broken with boxed symbols + || (ITERATOR && !fails$7(function () { $parseInt$1(Object(ITERATOR)); })); + + // `parseInt` method + // https://tc39.es/ecma262/#sec-parseint-string-radix + var numberParseInt = FORCED$2 ? function parseInt(string, radix) { + var S = trim$1(toString$3(string)); + return $parseInt$1(S, (radix >>> 0) || (exec$2(hex, S) ? 16 : 10)); + } : $parseInt$1; + + var $$g = _export; + var $parseInt = numberParseInt; + + // `parseInt` method + // https://tc39.es/ecma262/#sec-parseint-string-radix + $$g({ global: true, forced: parseInt != $parseInt }, { + parseInt: $parseInt + }); + + var PROPER_FUNCTION_NAME = functionName.PROPER; + var fails$6 = fails$T; + var whitespaces$1 = whitespaces$5; + + var non = '\u200B\u0085\u180E'; + + // check that a method works with the correct list + // of whitespaces and has a correct name + var stringTrimForced = function (METHOD_NAME) { + return fails$6(function () { + return !!whitespaces$1[METHOD_NAME]() + || non[METHOD_NAME]() !== non + || (PROPER_FUNCTION_NAME && whitespaces$1[METHOD_NAME].name !== METHOD_NAME); + }); + }; + + var $$f = _export; + var $trim = stringTrim.trim; + var forcedStringTrimMethod = stringTrimForced; + + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + $$f({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } + }); + + /*! + * jQuery JavaScript Library v3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween + * https://jquery.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2023-05-11T18:29Z + */ + (function (global, factory) { + + if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && _typeof(module.exports) === "object") { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket trac-14549 for more info. + module.exports = global.document ? factory(global, true) : function (w) { + if (!w.document) { + throw new Error("jQuery requires a window with a document"); + } + return factory(w); + }; + } else { + factory(global); + } + + // Pass this if window is not defined yet + })(typeof window !== "undefined" ? window : undefined, function (window, noGlobal) { + + var arr = []; + var getProto = Object.getPrototypeOf; + var _slice = arr.slice; + var flat = arr.flat ? function (array) { + return arr.flat.call(array); + } : function (array) { + return arr.concat.apply([], array); + }; + var push = arr.push; + var indexOf = arr.indexOf; + var class2type = {}; + var toString = class2type.toString; + var hasOwn = class2type.hasOwnProperty; + var fnToString = hasOwn.toString; + var ObjectFunctionString = fnToString.call(Object); + var support = {}; + var isFunction = function isFunction(obj) { + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; + }; + var isWindow = function isWindow(obj) { + return obj != null && obj === obj.window; + }; + var document = window.document; + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + function DOMEval(code, node, doc) { + doc = doc || document; + var i, + val, + script = doc.createElement("script"); + script.text = code; + if (node) { + for (i in preservedScriptAttributes) { + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[i] || node.getAttribute && node.getAttribute(i); + if (val) { + script.setAttribute(i, val); + } + } + } + doc.head.appendChild(script).parentNode.removeChild(script); + } + function toType(obj) { + if (obj == null) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return _typeof(obj) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : _typeof(obj); + } + /* global Symbol */ + // Defining this global in .eslintrc.json would create a danger of using the global + // unguarded in another place, it seems safer to define global only for this module + + var version = "3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween", + rhtmlSuffix = /HTML$/i, + // Define a local copy of jQuery + jQuery = function jQuery(selector, context) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init(selector, context); + }; + jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + constructor: jQuery, + // The default length of a jQuery object is 0 + length: 0, + toArray: function toArray() { + return _slice.call(this); + }, + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function get(num) { + // Return all the elements in a clean array + if (num == null) { + return _slice.call(this); + } + + // Return just the one element from the set + return num < 0 ? this[num + this.length] : this[num]; + }, + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function pushStack(elems) { + // Build a new jQuery matched element set + var ret = jQuery.merge(this.constructor(), elems); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + // Execute a callback for every element in the matched set. + each: function each(callback) { + return jQuery.each(this, callback); + }, + map: function map(callback) { + return this.pushStack(jQuery.map(this, function (elem, i) { + return callback.call(elem, i, elem); + })); + }, + slice: function slice() { + return this.pushStack(_slice.apply(this, arguments)); + }, + first: function first() { + return this.eq(0); + }, + last: function last() { + return this.eq(-1); + }, + even: function even() { + return this.pushStack(jQuery.grep(this, function (_elem, i) { + return (i + 1) % 2; + })); + }, + odd: function odd() { + return this.pushStack(jQuery.grep(this, function (_elem, i) { + return i % 2; + })); + }, + eq: function eq(i) { + var len = this.length, + j = +i + (i < 0 ? len : 0); + return this.pushStack(j >= 0 && j < len ? [this[j]] : []); + }, + end: function end() { + return this.prevObject || this.constructor(); + }, + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice + }; + jQuery.extend = jQuery.fn.extend = function () { + var options, + name, + src, + copy, + copyIsArray, + clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if (typeof target === "boolean") { + deep = target; + + // Skip the boolean and the target + target = arguments[i] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if (_typeof(target) !== "object" && !isFunction(target)) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if (i === length) { + target = this; + i--; + } + for (; i < length; i++) { + // Only deal with non-null/undefined values + if ((options = arguments[i]) != null) { + // Extend the base object + for (name in options) { + copy = options[name]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if (name === "__proto__" || target === copy) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { + src = target[name]; + + // Ensure proper type for the source value + if (copyIsArray && !Array.isArray(src)) { + clone = []; + } else if (!copyIsArray && !jQuery.isPlainObject(src)) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[name] = jQuery.extend(deep, clone, copy); + + // Don't bring in undefined values + } else if (copy !== undefined) { + target[name] = copy; + } + } + } + } + + // Return the modified object + return target; + }; + jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), + // Assume jQuery is ready without the ready module + isReady: true, + error: function error(msg) { + throw new Error(msg); + }, + noop: function noop() {}, + isPlainObject: function isPlainObject(obj) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if (!obj || toString.call(obj) !== "[object Object]") { + return false; + } + proto = getProto(obj); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if (!proto) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; + }, + isEmptyObject: function isEmptyObject(obj) { + var name; + for (name in obj) { + return false; + } + return true; + }, + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function globalEval(code, options, doc) { + DOMEval(code, { + nonce: options && options.nonce + }, doc); + }, + each: function each(obj, callback) { + var length, + i = 0; + if (isArrayLike(obj)) { + length = obj.length; + for (; i < length; i++) { + if (callback.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (i in obj) { + if (callback.call(obj[i], i, obj[i]) === false) { + break; + } + } + } + return obj; + }, + // Retrieve the text value of an array of DOM nodes + text: function text(elem) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + if (!nodeType) { + // If no nodeType, this is expected to be an array + while (node = elem[i++]) { + // Do not traverse comment nodes + ret += jQuery.text(node); + } + } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + return elem.textContent; + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; + }, + // results is for internal usage only + makeArray: function makeArray(arr, results) { + var ret = results || []; + if (arr != null) { + if (isArrayLike(Object(arr))) { + jQuery.merge(ret, typeof arr === "string" ? [arr] : arr); + } else { + push.call(ret, arr); + } + } + return ret; + }, + inArray: function inArray(elem, arr, i) { + return arr == null ? -1 : indexOf.call(arr, elem, i); + }, + isXMLDoc: function isXMLDoc(elem) { + var namespace = elem && elem.namespaceURI, + docElem = elem && (elem.ownerDocument || elem).documentElement; + + // Assume HTML when documentElement doesn't yet exist, such as inside + // document fragments. + return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML"); + }, + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function merge(first, second) { + var len = +second.length, + j = 0, + i = first.length; + for (; j < len; j++) { + first[i++] = second[j]; + } + first.length = i; + return first; + }, + grep: function grep(elems, callback, invert) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for (; i < length; i++) { + callbackInverse = !callback(elems[i], i); + if (callbackInverse !== callbackExpect) { + matches.push(elems[i]); + } + } + return matches; + }, + // arg is for internal usage only + map: function map(elems, callback, arg) { + var length, + value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if (isArrayLike(elems)) { + length = elems.length; + for (; i < length; i++) { + value = callback(elems[i], i, arg); + if (value != null) { + ret.push(value); + } + } + + // Go through every key on the object, + } else { + for (i in elems) { + value = callback(elems[i], i, arg); + if (value != null) { + ret.push(value); + } + } + } + + // Flatten any nested arrays + return flat(ret); + }, + // A global GUID counter for objects + guid: 1, + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support + }); + if (typeof Symbol === "function") { + jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]; + } + + // Populate the class2type map + jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (_i, name) { + class2type["[object " + name + "]"] = name.toLowerCase(); + }); + function isArrayLike(obj) { + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType(obj); + if (isFunction(obj) || isWindow(obj)) { + return false; + } + return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; + } + function nodeName(elem, name) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + } + var pop = arr.pop; + var sort = arr.sort; + var splice = arr.splice; + var whitespace = "[\\x20\\t\\r\\n\\f]"; + var rtrimCSS = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"); + + // Note: an element does not contain itself + jQuery.contains = function (a, b) { + var bup = b && b.parentNode; + return a === bup || !!(bup && bup.nodeType === 1 && ( + // Support: IE 9 - 11+ + // IE doesn't have `contains` on SVG. + a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); + }; + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + function fcssescape(ch, asCodePoint) { + if (asCodePoint) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if (ch === "\0") { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + } + jQuery.escapeSelector = function (sel) { + return (sel + "").replace(rcssescape, fcssescape); + }; + var preferredDoc = document, + pushNative = push; + (function () { + var i, + Expr, + outermostContext, + sortInput, + hasDuplicate, + push = pushNative, + // Local document vars + document, + documentElement, + documentIsHTML, + rbuggyQSA, + matches, + // Instance-specific data + expando = jQuery.expando, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function sortOrder(a, b) { + if (a === b) { + hasDuplicate = true; + } + return 0; + }, + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + "loop|multiple|open|readonly|required|scoped", + // Regular expressions + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + ")\\)|)", + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp(whitespace + "+", "g"), + rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), + rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), + rdescend = new RegExp(whitespace + "|>"), + rpseudo = new RegExp(pseudos), + ridentifier = new RegExp("^" + identifier + "$"), + matchExpr = { + ID: new RegExp("^#(" + identifier + ")"), + CLASS: new RegExp("^\\.(" + identifier + ")"), + TAG: new RegExp("^(" + identifier + "|[*])"), + ATTR: new RegExp("^" + attributes), + PSEUDO: new RegExp("^" + pseudos), + CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), + bool: new RegExp("^(?:" + booleans + ")$", "i"), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") + }, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + rsibling = /[+~]/, + // CSS escapes + // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), + funescape = function funescape(escape, nonHex) { + var high = "0x" + escape.slice(1) - 0x10000; + if (nonHex) { + // Strip the backslash prefix from a non-hex escape sequence + return nonHex; + } + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00); + }, + // Used for iframes; see `setDocument`. + // Support: IE 9 - 11+, Edge 12 - 18+ + // Removing the function wrapper causes a "Permission Denied" + // error in IE/Edge. + unloadHandler = function unloadHandler() { + setDocument(); + }, + inDisabledFieldset = addCombinator(function (elem) { + return elem.disabled === true && nodeName(elem, "fieldset"); + }, { + dir: "parentNode", + next: "legend" + }); + + // Support: IE <=9 only + // Accessing document.activeElement can throw unexpectedly + // https://bugs.jquery.com/ticket/13393 + function safeActiveElement() { + try { + return document.activeElement; + } catch (err) {} + } + + // Optimize for push.apply( _, NodeList ) + try { + push.apply(arr = _slice.call(preferredDoc.childNodes), preferredDoc.childNodes); + + // Support: Android <=4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[preferredDoc.childNodes.length].nodeType; + } catch (e) { + push = { + apply: function apply(target, els) { + pushNative.apply(target, _slice.call(els)); + }, + call: function call(target) { + pushNative.apply(target, _slice.call(arguments, 1)); + } + }; + } + function find(selector, context, results, seed) { + var m, + i, + elem, + nid, + match, + groups, + newSelector, + newContext = context && context.ownerDocument, + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + results = results || []; + + // Return early from calls with invalid selector or context + if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if (!seed) { + setDocument(context); + context = context || document; + if (documentIsHTML) { + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if (nodeType !== 11 && (match = rquickExpr.exec(selector))) { + // ID selector + if (m = match[1]) { + // Document context + if (nodeType === 9) { + if (elem = context.getElementById(m)) { + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if (elem.id === m) { + push.call(results, elem); + return results; + } + } else { + return results; + } + + // Element context + } else { + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) { + push.call(results, elem); + return results; + } + } + + // Type selector + } else if (match[2]) { + push.apply(results, context.getElementsByTagName(selector)); + return results; + + // Class selector + } else if ((m = match[3]) && context.getElementsByClassName) { + push.apply(results, context.getElementsByClassName(m)); + return results; + } + } + + // Take advantage of querySelectorAll + if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) { + // Expand context for sibling selectors + newContext = rsibling.test(selector) && testContext(context.parentNode) || context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when + // strict-comparing two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (newContext != context || !support.scope) { + // Capture the context ID, setting it first if necessary + if (nid = context.getAttribute("id")) { + nid = jQuery.escapeSelector(nid); + } else { + context.setAttribute("id", nid = expando); + } + } + + // Prefix every selector in the list + groups = tokenize(selector); + i = groups.length; + while (i--) { + groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]); + } + newSelector = groups.join(","); + } + try { + push.apply(results, newContext.querySelectorAll(newSelector)); + return results; + } catch (qsaError) { + nonnativeSelectorCache(selector, true); + } finally { + if (nid === expando) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select(selector.replace(rtrimCSS, "$1"), context, results, seed); + } + + /** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ + function createCache() { + var keys = []; + function cache(key, value) { + // Use (key + " ") to avoid collision with native prototype properties + // (see https://github.com/jquery/sizzle/issues/157) + if (keys.push(key + " ") > Expr.cacheLength) { + // Only keep the most recent entries + delete cache[keys.shift()]; + } + return cache[key + " "] = value; + } + return cache; + } + + /** + * Mark a function for special use by jQuery selector module + * @param {Function} fn The function to mark + */ + function markFunction(fn) { + fn[expando] = true; + return fn; + } + + /** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ + function assert(fn) { + var el = document.createElement("fieldset"); + try { + return !!fn(el); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if (el.parentNode) { + el.parentNode.removeChild(el); + } + + // release memory in IE + el = null; + } + } + + /** + * Returns a function to use in pseudos for input types + * @param {String} type + */ + function createInputPseudo(type) { + return function (elem) { + return nodeName(elem, "input") && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ + function createButtonPseudo(type) { + return function (elem) { + return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ + function createDisabledPseudo(disabled) { + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function (elem) { + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ("form" in elem) { + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if (elem.parentNode && elem.disabled === false) { + // Option elements defer to a parent optgroup if present + if ("label" in elem) { + if ("label" in elem.parentNode) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11+ + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + // Where there is no isDisabled, check manually + elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled; + } + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ("label" in elem) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; + } + + /** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ + function createPositionalPseudo(fn) { + return markFunction(function (argument) { + argument = +argument; + return markFunction(function (seed, matches) { + var j, + matchIndexes = fn([], seed.length, argument), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while (i--) { + if (seed[j = matchIndexes[i]]) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + + /** + * Checks a node for validity as a jQuery selector context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ + function testContext(context) { + return context && typeof context.getElementsByTagName !== "undefined" && context; + } + + /** + * Sets document-related variables once based on the current document + * @param {Element|Object} [node] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ + function setDocument(node) { + var subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (doc == document || doc.nodeType !== 9 || !doc.documentElement) { + return document; + } + + // Update global variables + document = doc; + documentElement = document.documentElement; + documentIsHTML = !jQuery.isXMLDoc(document); + + // Support: iOS 7 only, IE 9 - 11+ + // Older browsers didn't support unprefixed `matches`. + matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector; + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (see trac-13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) { + // Support: IE 9 - 11+, Edge 12 - 18+ + subWindow.addEventListener("unload", unloadHandler); + } + + // Support: IE <10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function (el) { + documentElement.appendChild(el).id = jQuery.expando; + return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length; + }); + + // Support: IE 9 only + // Check to see if it's possible to do matchesSelector + // on a disconnected node. + support.disconnectedMatch = assert(function (el) { + return matches.call(el, "*"); + }); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // IE/Edge don't support the :scope pseudo-class. + support.scope = assert(function () { + return document.querySelectorAll(":scope"); + }); + + // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only + // Make sure the `:has()` argument is parsed unforgivingly. + // We include `*` in the test to detect buggy implementations that are + // _selectively_ forgiving (specifically when the list includes at least + // one valid selector). + // Note that we treat complete lack of support for `:has()` as if it were + // spec-compliant support, which is fine because use of `:has()` in such + // environments will fail in the qSA path and fall back to jQuery traversal + // anyway. + support.cssHas = assert(function () { + try { + document.querySelector(":has(*,:jqfake)"); + return false; + } catch (e) { + return true; + } + }); + + // ID filter and find + if (support.getById) { + Expr.filter.ID = function (id) { + var attrId = id.replace(runescape, funescape); + return function (elem) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find.ID = function (id, context) { + if (typeof context.getElementById !== "undefined" && documentIsHTML) { + var elem = context.getElementById(id); + return elem ? [elem] : []; + } + }; + } else { + Expr.filter.ID = function (id) { + var attrId = id.replace(runescape, funescape); + return function (elem) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find.ID = function (id, context) { + if (typeof context.getElementById !== "undefined" && documentIsHTML) { + var node, + i, + elems, + elem = context.getElementById(id); + if (elem) { + // Verify the id attribute + node = elem.getAttributeNode("id"); + if (node && node.value === id) { + return [elem]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName(id); + i = 0; + while (elem = elems[i++]) { + node = elem.getAttributeNode("id"); + if (node && node.value === id) { + return [elem]; + } + } + } + return []; + } + }; + } + + // Tag + Expr.find.TAG = function (tag, context) { + if (typeof context.getElementsByTagName !== "undefined") { + return context.getElementsByTagName(tag); + + // DocumentFragment nodes don't have gEBTN + } else { + return context.querySelectorAll(tag); + } + }; + + // Class + Expr.find.CLASS = function (className, context) { + if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { + return context.getElementsByClassName(className); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + rbuggyQSA = []; + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function (el) { + var input; + documentElement.appendChild(el).innerHTML = "" + ""; + + // Support: iOS <=7 - 8 only + // Boolean attributes and "value" are not treated correctly in some XML documents + if (!el.querySelectorAll("[selected]").length) { + rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); + } + + // Support: iOS <=7 - 8 only + if (!el.querySelectorAll("[id~=" + expando + "-]").length) { + rbuggyQSA.push("~="); + } + + // Support: iOS 8 only + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if (!el.querySelectorAll("a#" + expando + "+*").length) { + rbuggyQSA.push(".#.+[+~]"); + } + + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + if (!el.querySelectorAll(":checked").length) { + rbuggyQSA.push(":checked"); + } + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + input = document.createElement("input"); + input.setAttribute("type", "hidden"); + el.appendChild(input).setAttribute("name", "D"); + + // Support: IE 9 - 11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + documentElement.appendChild(el).disabled = true; + if (el.querySelectorAll(":disabled").length !== 2) { + rbuggyQSA.push(":enabled", ":disabled"); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement("input"); + input.setAttribute("name", ""); + el.appendChild(input); + if (!el.querySelectorAll("[name='']").length) { + rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")"); + } + }); + if (!support.cssHas) { + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Our regular `try-catch` mechanism fails to detect natively-unsupported + // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) + // in browsers that parse the `:has()` argument as a forgiving selector list. + // https://drafts.csswg.org/selectors/#relational now requires the argument + // to be parsed unforgivingly, but browsers have not yet fully adjusted. + rbuggyQSA.push(":has"); + } + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = function sortOrder(a, b) { + // Flag for duplicate removal + if (a === b) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if (compare) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) { + return 1; + } + + // Maintain original order + return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0; + } + return compare & 4 ? -1 : 1; + }; + return document; + } + find.matches = function (expr, elements) { + return find(expr, null, null, elements); + }; + find.matchesSelector = function (elem, expr) { + setDocument(elem); + if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + try { + var ret = matches.call(elem, expr); + + // IE 9's matchesSelector returns false on disconnected nodes + if (ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) { + nonnativeSelectorCache(expr, true); + } + } + return find(expr, document, null, [elem]).length > 0; + }; + find.contains = function (context, elem) { + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ((context.ownerDocument || context) != document) { + setDocument(context); + } + return jQuery.contains(context, elem); + }; + find.attr = function (elem, name) { + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ((elem.ownerDocument || elem) != document) { + setDocument(elem); + } + var fn = Expr.attrHandle[name.toLowerCase()], + // Don't get fooled by Object.prototype properties (see trac-13807) + val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; + if (val !== undefined) { + return val; + } + return elem.getAttribute(name); + }; + find.error = function (msg) { + throw new Error("Syntax error, unrecognized expression: " + msg); + }; + + /** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ + jQuery.uniqueSort = function (results) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + // + // Support: Android <=4.0+ + // Testing for detecting duplicates is unpredictable so instead assume we can't + // depend on duplicate detection in all browsers without a stable sort. + hasDuplicate = !support.sortStable; + sortInput = !support.sortStable && _slice.call(results, 0); + sort.call(results, sortOrder); + if (hasDuplicate) { + while (elem = results[i++]) { + if (elem === results[i]) { + j = duplicates.push(i); + } + } + while (j--) { + splice.call(results, duplicates[j], 1); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + return results; + }; + jQuery.fn.uniqueSort = function () { + return this.pushStack(jQuery.uniqueSort(_slice.apply(this))); + }; + Expr = jQuery.expr = { + // Can be adjusted by the user + cacheLength: 50, + createPseudo: markFunction, + match: matchExpr, + attrHandle: {}, + find: {}, + relative: { + ">": { + dir: "parentNode", + first: true + }, + " ": { + dir: "parentNode" + }, + "+": { + dir: "previousSibling", + first: true + }, + "~": { + dir: "previousSibling" + } + }, + preFilter: { + ATTR: function ATTR(match) { + match[1] = match[1].replace(runescape, funescape); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); + if (match[2] === "~=") { + match[3] = " " + match[3] + " "; + } + return match.slice(0, 4); + }, + CHILD: function CHILD(match) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + if (match[1].slice(0, 3) === "nth") { + // nth-* requires argument + if (!match[3]) { + find.error(match[0]); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); + match[5] = +(match[7] + match[8] || match[3] === "odd"); + + // other types prohibit arguments + } else if (match[3]) { + find.error(match[0]); + } + return match; + }, + PSEUDO: function PSEUDO(match) { + var excess, + unquoted = !match[6] && match[2]; + if (matchExpr.CHILD.test(match[0])) { + return null; + } + + // Accept quoted arguments as-is + if (match[3]) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if (unquoted && rpseudo.test(unquoted) && ( + // Get excess from tokenize (recursively) + excess = tokenize(unquoted, true)) && ( + // advance to the next closing parenthesis + excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { + // excess is a negative index + match[0] = match[0].slice(0, excess); + match[2] = unquoted.slice(0, excess); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice(0, 3); + } + }, + filter: { + TAG: function TAG(nodeNameSelector) { + var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); + return nodeNameSelector === "*" ? function () { + return true; + } : function (elem) { + return nodeName(elem, expectedNodeName); + }; + }, + CLASS: function CLASS(className) { + var pattern = classCache[className + " "]; + return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) { + return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""); + }); + }, + ATTR: function ATTR(name, operator, check) { + return function (elem) { + var result = find.attr(elem, name); + if (result == null) { + return operator === "!="; + } + if (!operator) { + return true; + } + result += ""; + if (operator === "=") { + return result === check; + } + if (operator === "!=") { + return result !== check; + } + if (operator === "^=") { + return check && result.indexOf(check) === 0; + } + if (operator === "*=") { + return check && result.indexOf(check) > -1; + } + if (operator === "$=") { + return check && result.slice(-check.length) === check; + } + if (operator === "~=") { + return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1; + } + if (operator === "|=") { + return result === check || result.slice(0, check.length + 1) === check + "-"; + } + return false; + }; + }, + CHILD: function CHILD(type, what, _argument, first, last) { + var simple = type.slice(0, 3) !== "nth", + forward = type.slice(-4) !== "last", + ofType = what === "of-type"; + return first === 1 && last === 0 ? + // Shortcut for :nth-*(n) + function (elem) { + return !!elem.parentNode; + } : function (elem, _context, xml) { + var cache, + outerCache, + node, + nodeIndex, + start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + if (parent) { + // :(first|last|only)-(child|of-type) + if (simple) { + while (dir) { + node = elem; + while (node = node[dir]) { + if (ofType ? nodeName(node, name) : node.nodeType === 1) { + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + start = [forward ? parent.firstChild : parent.lastChild]; + + // non-xml :nth-child(...) stores cache data on `parent` + if (forward && useCache) { + // Seek `elem` from a previously-cached index + outerCache = parent[expando] || (parent[expando] = {}); + cache = outerCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = nodeIndex && cache[2]; + node = nodeIndex && parent.childNodes[nodeIndex]; + while (node = ++nodeIndex && node && node[dir] || ( + // Fallback to seeking `elem` from the start + diff = nodeIndex = 0) || start.pop()) { + // When found, cache indexes on `parent` and break + if (node.nodeType === 1 && ++diff && node === elem) { + outerCache[type] = [dirruns, nodeIndex, diff]; + break; + } + } + } else { + // Use previously-cached element index if available + if (useCache) { + outerCache = elem[expando] || (elem[expando] = {}); + cache = outerCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if (diff === false) { + // Use the same loop as above to seek `elem` from the start + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) { + // Cache the index of each encountered element + if (useCache) { + outerCache = node[expando] || (node[expando] = {}); + outerCache[type] = [dirruns, diff]; + } + if (node === elem) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || diff % first === 0 && diff / first >= 0; + } + }; + }, + PSEUDO: function PSEUDO(pseudo, argument) { + // pseudo-class names are case-insensitive + // https://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as jQuery does + if (fn[expando]) { + return fn(argument); + } + + // But maintain support for old signatures + if (fn.length > 1) { + args = [pseudo, pseudo, "", argument]; + return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) { + var idx, + matched = fn(seed, argument), + i = matched.length; + while (i--) { + idx = indexOf.call(seed, matched[i]); + seed[idx] = !(matches[idx] = matched[i]); + } + }) : function (elem) { + return fn(elem, 0, args); + }; + } + return fn; + } + }, + pseudos: { + // Potentially complex pseudos + not: markFunction(function (selector) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile(selector.replace(rtrimCSS, "$1")); + return matcher[expando] ? markFunction(function (seed, matches, _context, xml) { + var elem, + unmatched = matcher(seed, null, xml, []), + i = seed.length; + + // Match elements unmatched by `matcher` + while (i--) { + if (elem = unmatched[i]) { + seed[i] = !(matches[i] = elem); + } + } + }) : function (elem, _context, xml) { + input[0] = elem; + matcher(input, null, xml, results); + + // Don't keep the element + // (see https://github.com/jquery/sizzle/issues/299) + input[0] = null; + return !results.pop(); + }; + }), + has: markFunction(function (selector) { + return function (elem) { + return find(selector, elem).length > 0; + }; + }), + contains: markFunction(function (text) { + text = text.replace(runescape, funescape); + return function (elem) { + return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1; + }; + }), + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // https://www.w3.org/TR/selectors/#lang-pseudo + lang: markFunction(function (lang) { + // lang value must be a valid identifier + if (!ridentifier.test(lang || "")) { + find.error("unsupported lang: " + lang); + } + lang = lang.replace(runescape, funescape).toLowerCase(); + return function (elem) { + var elemLang; + do { + if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) { + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf(lang + "-") === 0; + } + } while ((elem = elem.parentNode) && elem.nodeType === 1); + return false; + }; + }), + // Miscellaneous + target: function target(elem) { + var hash = window.location && window.location.hash; + return hash && hash.slice(1) === elem.id; + }, + root: function root(elem) { + return elem === documentElement; + }, + focus: function focus(elem) { + return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex); + }, + // Boolean properties + enabled: createDisabledPseudo(false), + disabled: createDisabledPseudo(true), + checked: function checked(elem) { + // In CSS3, :checked should return both checked and selected elements + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected; + }, + selected: function selected(elem) { + // Support: IE <=11+ + // Accessing the selectedIndex property + // forces the browser to treat the default option as + // selected when in an optgroup. + if (elem.parentNode) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + return elem.selected === true; + }, + // Contents + empty: function empty(elem) { + // https://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + if (elem.nodeType < 6) { + return false; + } + } + return true; + }, + parent: function parent(elem) { + return !Expr.pseudos.empty(elem); + }, + // Element/input types + header: function header(elem) { + return rheader.test(elem.nodeName); + }, + input: function input(elem) { + return rinputs.test(elem.nodeName); + }, + button: function button(elem) { + return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button"); + }, + text: function text(elem) { + var attr; + return nodeName(elem, "input") && elem.type === "text" && ( + // Support: IE <10 only + // New HTML5 attribute values (e.g., "search") appear + // with elem.type === "text" + (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); + }, + // Position-in-collection + first: createPositionalPseudo(function () { + return [0]; + }), + last: createPositionalPseudo(function (_matchIndexes, length) { + return [length - 1]; + }), + eq: createPositionalPseudo(function (_matchIndexes, length, argument) { + return [argument < 0 ? argument + length : argument]; + }), + even: createPositionalPseudo(function (matchIndexes, length) { + var i = 0; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + odd: createPositionalPseudo(function (matchIndexes, length) { + var i = 1; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + lt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i; + if (argument < 0) { + i = argument + length; + } else if (argument > length) { + i = length; + } else { + i = argument; + } + for (; --i >= 0;) { + matchIndexes.push(i); + } + return matchIndexes; + }), + gt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; ++i < length;) { + matchIndexes.push(i); + } + return matchIndexes; + }) + } + }; + Expr.pseudos.nth = Expr.pseudos.eq; + + // Add button/input type pseudos + for (i in { + radio: true, + checkbox: true, + file: true, + password: true, + image: true + }) { + Expr.pseudos[i] = createInputPseudo(i); + } + for (i in { + submit: true, + reset: true + }) { + Expr.pseudos[i] = createButtonPseudo(i); + } + + // Easy API for creating new setFilters + function setFilters() {} + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + function tokenize(selector, parseOnly) { + var matched, + match, + tokens, + type, + soFar, + groups, + preFilters, + cached = tokenCache[selector + " "]; + if (cached) { + return parseOnly ? 0 : cached.slice(0); + } + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + while (soFar) { + // Comma and first run + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + // Don't consume trailing commas as valid + soFar = soFar.slice(match[0].length) || soFar; + } + groups.push(tokens = []); + } + matched = false; + + // Combinators + if (match = rleadingCombinator.exec(soFar)) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace(rtrimCSS, " ") + }); + soFar = soFar.slice(matched.length); + } + + // Filters + for (type in Expr.filter) { + if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice(matched.length); + } + } + if (!matched) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + if (parseOnly) { + return soFar.length; + } + return soFar ? find.error(selector) : + // Cache the tokens + tokenCache(selector, groups).slice(0); + } + function toSelector(tokens) { + var i = 0, + len = tokens.length, + selector = ""; + for (; i < len; i++) { + selector += tokens[i].value; + } + return selector; + } + function addCombinator(matcher, combinator, base) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + return combinator.first ? + // Check against closest ancestor/preceding element + function (elem, context, xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + return matcher(elem, context, xml); + } + } + return false; + } : + // Check against all ancestor/preceding elements + function (elem, context, xml) { + var oldCache, + outerCache, + newCache = [dirruns, doneName]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if (xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + if (matcher(elem, context, xml)) { + return true; + } + } + } + } else { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + outerCache = elem[expando] || (elem[expando] = {}); + if (skip && nodeName(elem, skip)) { + elem = elem[dir] || elem; + } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) { + // Assign to newCache so results back-propagate to previous elements + return newCache[2] = oldCache[2]; + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[key] = newCache; + + // A match means we're done; a fail means we have to keep checking + if (newCache[2] = matcher(elem, context, xml)) { + return true; + } + } + } + } + } + return false; + }; + } + function elementMatcher(matchers) { + return matchers.length > 1 ? function (elem, context, xml) { + var i = matchers.length; + while (i--) { + if (!matchers[i](elem, context, xml)) { + return false; + } + } + return true; + } : matchers[0]; + } + function multipleContexts(selector, contexts, results) { + var i = 0, + len = contexts.length; + for (; i < len; i++) { + find(selector, contexts[i], results); + } + return results; + } + function condense(unmatched, map, filter, context, xml) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + for (; i < len; i++) { + if (elem = unmatched[i]) { + if (!filter || filter(elem, context, xml)) { + newUnmatched.push(elem); + if (mapped) { + map.push(i); + } + } + } + } + return newUnmatched; + } + function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { + if (postFilter && !postFilter[expando]) { + postFilter = setMatcher(postFilter); + } + if (postFinder && !postFinder[expando]) { + postFinder = setMatcher(postFinder, postSelector); + } + return markFunction(function (seed, results, context, xml) { + var temp, + i, + elem, + matcherOut, + preMap = [], + postMap = [], + preexisting = results.length, + // Get initial elements from seed or context + elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []), + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems; + if (matcher) { + // If we have a postFinder, or filtered seed, or non-seed postFilter + // or preexisting results, + matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ? + // ...intermediate processing is necessary + [] : + // ...otherwise use results directly + results; + + // Find primary matches + matcher(matcherIn, matcherOut, context, xml); + } else { + matcherOut = matcherIn; + } + + // Apply postFilter + if (postFilter) { + temp = condense(matcherOut, postMap); + postFilter(temp, [], context, xml); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while (i--) { + if (elem = temp[i]) { + matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); + } + } + } + if (seed) { + if (postFinder || preFilter) { + if (postFinder) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while (i--) { + if (elem = matcherOut[i]) { + // Restore matcherIn since elem is not yet a final match + temp.push(matcherIn[i] = elem); + } + } + postFinder(null, matcherOut = [], temp, xml); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) { + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); + if (postFinder) { + postFinder(null, results, matcherOut, xml); + } else { + push.apply(results, matcherOut); + } + } + }); + } + function matcherFromTokens(tokens) { + var checkContext, + matcher, + j, + len = tokens.length, + leadingRelative = Expr.relative[tokens[0].type], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator(function (elem) { + return elem === checkContext; + }, implicitRelative, true), + matchAnyContext = addCombinator(function (elem) { + return indexOf.call(checkContext, elem) > -1; + }, implicitRelative, true), + matchers = [function (elem, context, xml) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); + + // Avoid hanging onto element + // (see https://github.com/jquery/sizzle/issues/299) + checkContext = null; + return ret; + }]; + for (; i < len; i++) { + if (matcher = Expr.relative[tokens[i].type]) { + matchers = [addCombinator(elementMatcher(matchers), matcher)]; + } else { + matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); + + // Return special upon seeing a positional matcher + if (matcher[expando]) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for (; j < len; j++) { + if (Expr.relative[tokens[j].type]) { + break; + } + } + return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice(0, i - 1).concat({ + value: tokens[i - 2].type === " " ? "*" : "" + })).replace(rtrimCSS, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); + } + matchers.push(matcher); + } + } + return elementMatcher(matchers); + } + function matcherFromGroupMatchers(elementMatchers, setMatchers) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function superMatcher(seed, context, xml, results, outermost) { + var elem, + j, + matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find.TAG("*", outermost), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, + len = elems.length; + if (outermost) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: iOS <=7 - 9 only + // Tolerate NodeList properties (IE: "length"; Safari: ) matching + // elements by id. (see trac-14142) + for (; i !== len && (elem = elems[i]) != null; i++) { + if (byElement && elem) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if (!context && elem.ownerDocument != document) { + setDocument(elem); + xml = !documentIsHTML; + } + while (matcher = elementMatchers[j++]) { + if (matcher(elem, context || document, xml)) { + push.call(results, elem); + break; + } + } + if (outermost) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if (bySet) { + // They will have gone through all possible matchers + if (elem = !matcher && elem) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if (seed) { + unmatched.push(elem); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if (bySet && i !== matchedCount) { + j = 0; + while (matcher = setMatchers[j++]) { + matcher(unmatched, setMatched, context, xml); + } + if (seed) { + // Reintegrate element matches to eliminate the need for sorting + if (matchedCount > 0) { + while (i--) { + if (!(unmatched[i] || setMatched[i])) { + setMatched[i] = pop.call(results); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense(setMatched); + } + + // Add matches to results + push.apply(results, setMatched); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { + jQuery.uniqueSort(results); + } + } + + // Override manipulation of globals by nested matchers + if (outermost) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + return unmatched; + }; + return bySet ? markFunction(superMatcher) : superMatcher; + } + function compile(selector, match /* Internal Use Only */) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[selector + " "]; + if (!cached) { + // Generate a function of recursive functions that can be used to check each element + if (!match) { + match = tokenize(selector); + } + i = match.length; + while (i--) { + cached = matcherFromTokens(match[i]); + if (cached[expando]) { + setMatchers.push(cached); + } else { + elementMatchers.push(cached); + } + } + + // Cache the compiled function + cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; + } + + /** + * A low-level selection function that works with jQuery's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with jQuery selector compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ + function select(selector, context, results, seed) { + var i, + tokens, + token, + type, + find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize(selector = compiled.selector || selector); + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if (match.length === 1) { + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice(0); + if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { + context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0]; + if (!context) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if (compiled) { + context = context.parentNode; + } + selector = selector.slice(tokens.shift().value.length); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; + while (i--) { + token = tokens[i]; + + // Abort if we hit a combinator + if (Expr.relative[type = token.type]) { + break; + } + if (find = Expr.find[type]) { + // Search, expanding context for leading sibling combinators + if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) { + // If seed is empty or no tokens remain, we can return early + tokens.splice(i, 1); + selector = seed.length && toSelector(tokens); + if (!selector) { + push.apply(results, seed); + return results; + } + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context); + return results; + } + + // One-time assignments + + // Support: Android <=4.0 - 4.1+ + // Sort stability + support.sortStable = expando.split("").sort(sortOrder).join("") === expando; + + // Initialize against the default document + setDocument(); + + // Support: Android <=4.0 - 4.1+ + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function (el) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition(document.createElement("fieldset")) & 1; + }); + jQuery.find = find; + + // Deprecated + jQuery.expr[":"] = jQuery.expr.pseudos; + jQuery.unique = jQuery.uniqueSort; + + // These have always been private, but they used to be documented + // as part of Sizzle so let's maintain them in the 3.x line + // for backwards compatibility purposes. + find.compile = compile; + find.select = select; + find.setDocument = setDocument; + find.escape = jQuery.escapeSelector; + find.getText = jQuery.text; + find.isXML = jQuery.isXMLDoc; + find.selectors = jQuery.expr; + find.support = jQuery.support; + find.uniqueSort = jQuery.uniqueSort; + + /* eslint-enable */ + })(); + + var dir = function dir(elem, _dir, until) { + var matched = [], + truncate = until !== undefined; + while ((elem = elem[_dir]) && elem.nodeType !== 9) { + if (elem.nodeType === 1) { + if (truncate && jQuery(elem).is(until)) { + break; + } + matched.push(elem); + } + } + return matched; + }; + var _siblings = function siblings(n, elem) { + var matched = []; + for (; n; n = n.nextSibling) { + if (n.nodeType === 1 && n !== elem) { + matched.push(n); + } + } + return matched; + }; + var rneedsContext = jQuery.expr.match.needsContext; + var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; + + // Implement the identical functionality for filter and not + function winnow(elements, qualifier, not) { + if (isFunction(qualifier)) { + return jQuery.grep(elements, function (elem, i) { + return !!qualifier.call(elem, i, elem) !== not; + }); + } + + // Single element + if (qualifier.nodeType) { + return jQuery.grep(elements, function (elem) { + return elem === qualifier !== not; + }); + } + + // Arraylike of elements (jQuery, arguments, Array) + if (typeof qualifier !== "string") { + return jQuery.grep(elements, function (elem) { + return indexOf.call(qualifier, elem) > -1 !== not; + }); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter(qualifier, elements, not); + } + jQuery.filter = function (expr, elems, not) { + var elem = elems[0]; + if (not) { + expr = ":not(" + expr + ")"; + } + if (elems.length === 1 && elem.nodeType === 1) { + return jQuery.find.matchesSelector(elem, expr) ? [elem] : []; + } + return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) { + return elem.nodeType === 1; + })); + }; + jQuery.fn.extend({ + find: function find(selector) { + var i, + ret, + len = this.length, + self = this; + if (typeof selector !== "string") { + return this.pushStack(jQuery(selector).filter(function () { + for (i = 0; i < len; i++) { + if (jQuery.contains(self[i], this)) { + return true; + } + } + })); + } + ret = this.pushStack([]); + for (i = 0; i < len; i++) { + jQuery.find(selector, self[i], ret); + } + return len > 1 ? jQuery.uniqueSort(ret) : ret; + }, + filter: function filter(selector) { + return this.pushStack(winnow(this, selector || [], false)); + }, + not: function not(selector) { + return this.pushStack(winnow(this, selector || [], true)); + }, + is: function is(selector) { + return !!winnow(this, + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length; + } + }); + + // Initialize a jQuery object + + // A central reference to the root jQuery(document) + var rootjQuery, + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (trac-9521) + // Strict HTML recognition (trac-11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + init = jQuery.fn.init = function (selector, context, root) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if (!selector) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if (typeof selector === "string") { + if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [null, selector, null]; + } else { + match = rquickExpr.exec(selector); + } + + // Match html or make sure no context is specified for #id + if (match && (match[1] || !context)) { + // HANDLE: $(html) -> $(array) + if (match[1]) { + context = context instanceof jQuery ? context[0] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); + + // HANDLE: $(html, props) + if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) { + for (match in context) { + // Properties of context are called as methods if possible + if (isFunction(this[match])) { + this[match](context[match]); + + // ...and otherwise set as attributes + } else { + this.attr(match, context[match]); + } + } + } + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById(match[2]); + if (elem) { + // Inject the element directly into the jQuery object + this[0] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if (!context || context.jquery) { + return (context || root).find(selector); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor(context).find(selector); + } + + // HANDLE: $(DOMElement) + } else if (selector.nodeType) { + this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if (isFunction(selector)) { + return root.ready !== undefined ? root.ready(selector) : + // Execute immediately if ready is not present + selector(jQuery); + } + return jQuery.makeArray(selector, this); + }; + + // Give the init function the jQuery prototype for later instantiation + init.prototype = jQuery.fn; + + // Initialize central reference + rootjQuery = jQuery(document); + var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + jQuery.fn.extend({ + has: function has(target) { + var targets = jQuery(target, this), + l = targets.length; + return this.filter(function () { + var i = 0; + for (; i < l; i++) { + if (jQuery.contains(this, targets[i])) { + return true; + } + } + }); + }, + closest: function closest(selectors, context) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery(selectors); + + // Positional selectors never match, since there's no _selection_ context + if (!rneedsContext.test(selectors)) { + for (; i < l; i++) { + for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { + // Always skip document fragments + if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : + // Don't pass non-elements to jQuery#find + cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) { + matched.push(cur); + break; + } + } + } + } + return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched); + }, + // Determine the position of an element within the set + index: function index(elem) { + // No argument, return index in parent + if (!elem) { + return this[0] && this[0].parentNode ? this.first().prevAll().length : -1; + } + + // Index in selector + if (typeof elem === "string") { + return indexOf.call(jQuery(elem), this[0]); + } + + // Locate the position of the desired element + return indexOf.call(this, + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem); + }, + add: function add(selector, context) { + return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context)))); + }, + addBack: function addBack(selector) { + return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector)); + } + }); + function sibling(cur, dir) { + while ((cur = cur[dir]) && cur.nodeType !== 1) {} + return cur; + } + jQuery.each({ + parent: function parent(elem) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function parents(elem) { + return dir(elem, "parentNode"); + }, + parentsUntil: function parentsUntil(elem, _i, until) { + return dir(elem, "parentNode", until); + }, + next: function next(elem) { + return sibling(elem, "nextSibling"); + }, + prev: function prev(elem) { + return sibling(elem, "previousSibling"); + }, + nextAll: function nextAll(elem) { + return dir(elem, "nextSibling"); + }, + prevAll: function prevAll(elem) { + return dir(elem, "previousSibling"); + }, + nextUntil: function nextUntil(elem, _i, until) { + return dir(elem, "nextSibling", until); + }, + prevUntil: function prevUntil(elem, _i, until) { + return dir(elem, "previousSibling", until); + }, + siblings: function siblings(elem) { + return _siblings((elem.parentNode || {}).firstChild, elem); + }, + children: function children(elem) { + return _siblings(elem.firstChild); + }, + contents: function contents(elem) { + if (elem.contentDocument != null && + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto(elem.contentDocument)) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if (nodeName(elem, "template")) { + elem = elem.content || elem; + } + return jQuery.merge([], elem.childNodes); + } + }, function (name, fn) { + jQuery.fn[name] = function (until, selector) { + var matched = jQuery.map(this, fn, until); + if (name.slice(-5) !== "Until") { + selector = until; + } + if (selector && typeof selector === "string") { + matched = jQuery.filter(selector, matched); + } + if (this.length > 1) { + // Remove duplicates + if (!guaranteedUnique[name]) { + jQuery.uniqueSort(matched); + } + + // Reverse order for parents* and prev-derivatives + if (rparentsprev.test(name)) { + matched.reverse(); + } + } + return this.pushStack(matched); + }; + }); + var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; + + // Convert String-formatted options into Object-formatted ones + function createOptions(options) { + var object = {}; + jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) { + object[flag] = true; + }); + return object; + } + + /* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ + jQuery.Callbacks = function (options) { + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options); + var + // Flag to know if list is currently firing + firing, + // Last fire value for non-forgettable lists + memory, + // Flag to know if list was already fired + _fired, + // Flag to prevent firing + _locked, + // Actual callback list + list = [], + // Queue of execution data for repeatable lists + queue = [], + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + // Fire callbacks + fire = function fire() { + // Enforce single-firing + _locked = _locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + _fired = firing = true; + for (; queue.length; firingIndex = -1) { + memory = queue.shift(); + while (++firingIndex < list.length) { + // Run callback and check for early termination + if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if (!options.memory) { + memory = false; + } + firing = false; + + // Clean up if we're done firing for good + if (_locked) { + // Keep an empty list if we have data for future add calls + if (memory) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function add() { + if (list) { + // If we have memory from a past run, we should fire after adding + if (memory && !firing) { + firingIndex = list.length - 1; + queue.push(memory); + } + (function add(args) { + jQuery.each(args, function (_, arg) { + if (isFunction(arg)) { + if (!options.unique || !self.has(arg)) { + list.push(arg); + } + } else if (arg && arg.length && toType(arg) !== "string") { + // Inspect recursively + add(arg); + } + }); + })(arguments); + if (memory && !firing) { + fire(); + } + } + return this; + }, + // Remove a callback from the list + remove: function remove() { + jQuery.each(arguments, function (_, arg) { + var index; + while ((index = jQuery.inArray(arg, list, index)) > -1) { + list.splice(index, 1); + + // Handle firing indexes + if (index <= firingIndex) { + firingIndex--; + } + } + }); + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function has(fn) { + return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0; + }, + // Remove all callbacks from the list + empty: function empty() { + if (list) { + list = []; + } + return this; + }, + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function disable() { + _locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function disabled() { + return !list; + }, + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function lock() { + _locked = queue = []; + if (!memory && !firing) { + list = memory = ""; + } + return this; + }, + locked: function locked() { + return !!_locked; + }, + // Call all callbacks with the given context and arguments + fireWith: function fireWith(context, args) { + if (!_locked) { + args = args || []; + args = [context, args.slice ? args.slice() : args]; + queue.push(args); + if (!firing) { + fire(); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function fire() { + self.fireWith(this, arguments); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function fired() { + return !!_fired; + } + }; + return self; + }; + function Identity(v) { + return v; + } + function Thrower(ex) { + throw ex; + } + function adoptValue(value, resolve, reject, noValue) { + var method; + try { + // Check for promise aspect first to privilege synchronous behavior + if (value && isFunction(method = value.promise)) { + method.call(value).done(resolve).fail(reject); + + // Other thenables + } else if (value && isFunction(method = value.then)) { + method.call(value, resolve, reject); + + // Other non-thenables + } else { + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply(undefined, [value].slice(noValue)); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch (value) { + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply(undefined, [value]); + } + } + jQuery.extend({ + Deferred: function Deferred(func) { + var tuples = [ + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + ["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2], ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected"]], + _state = "pending", + _promise = { + state: function state() { + return _state; + }, + always: function always() { + deferred.done(arguments).fail(arguments); + return this; + }, + "catch": function _catch(fn) { + return _promise.then(null, fn); + }, + // Keep pipe for back-compat + pipe: function pipe( /* fnDone, fnFail, fnProgress */ + ) { + var fns = arguments; + return jQuery.Deferred(function (newDefer) { + jQuery.each(tuples, function (_i, tuple) { + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[tuple[1]](function () { + var returned = fn && fn.apply(this, arguments); + if (returned && isFunction(returned.promise)) { + returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject); + } else { + newDefer[tuple[0] + "With"](this, fn ? [returned] : arguments); + } + }); + }); + fns = null; + }).promise(); + }, + then: function then(onFulfilled, onRejected, onProgress) { + var maxDepth = 0; + function resolve(depth, deferred, handler, special) { + return function () { + var that = this, + args = arguments, + mightThrow = function mightThrow() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if (depth < maxDepth) { + return; + } + returned = handler.apply(that, args); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if (returned === deferred.promise()) { + throw new TypeError("Thenable self-resolution"); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && ( + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + _typeof(returned) === "object" || typeof returned === "function") && returned.then; + + // Handle a returned thenable + if (isFunction(then)) { + // Special processors (notify) just wait for resolution + if (special) { + then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); + + // Normal processors (resolve) also hook into progress + } else { + // ...and disregard older resolution values + maxDepth++; + then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith)); + } + + // Handle all other returned values + } else { + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if (handler !== Identity) { + that = undefined; + args = [returned]; + } + + // Process the value(s) + // Default process is resolve + (special || deferred.resolveWith)(that, args); + } + }, + // Only normal processors (resolve) catch and reject exceptions + process = special ? mightThrow : function () { + try { + mightThrow(); + } catch (e) { + if (jQuery.Deferred.exceptionHook) { + jQuery.Deferred.exceptionHook(e, process.error); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if (depth + 1 >= maxDepth) { + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if (handler !== Thrower) { + that = undefined; + args = [e]; + } + deferred.rejectWith(that, args); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if (depth) { + process(); + } else { + // Call an optional hook to record the error, in case of exception + // since it's otherwise lost when execution goes async + if (jQuery.Deferred.getErrorHook) { + process.error = jQuery.Deferred.getErrorHook(); + + // The deprecated alias of the above. While the name suggests + // returning the stack, not an error instance, jQuery just passes + // it directly to `console.warn` so both will work; an instance + // just better cooperates with source maps. + } else if (jQuery.Deferred.getStackHook) { + process.error = jQuery.Deferred.getStackHook(); + } + window.setTimeout(process); + } + }; + } + return jQuery.Deferred(function (newDefer) { + // progress_handlers.add( ... ) + tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); + + // fulfilled_handlers.add( ... ) + tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); + + // rejected_handlers.add( ... ) + tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower)); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function promise(obj) { + return obj != null ? jQuery.extend(obj, _promise) : _promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each(tuples, function (i, tuple) { + var list = tuple[2], + stateString = tuple[5]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + _promise[tuple[1]] = list.add; + + // Handle state + if (stateString) { + list.add(function () { + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + _state = stateString; + }, + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[3 - i][2].disable, + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[3 - i][3].disable, + // progress_callbacks.lock + tuples[0][2].lock, + // progress_handlers.lock + tuples[0][3].lock); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add(tuple[3].fire); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[tuple[0]] = function () { + deferred[tuple[0] + "With"](this === deferred ? undefined : this, arguments); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[tuple[0] + "With"] = list.fireWith; + }); + + // Make the deferred a promise + _promise.promise(deferred); + + // Call given func if any + if (func) { + func.call(deferred, deferred); + } + + // All done! + return deferred; + }, + // Deferred helper + when: function when(singleValue) { + var + // count of uncompleted subordinates + remaining = arguments.length, + // count of unprocessed arguments + i = remaining, + // subordinate fulfillment data + resolveContexts = Array(i), + resolveValues = _slice.call(arguments), + // the primary Deferred + primary = jQuery.Deferred(), + // subordinate callback factory + updateFunc = function updateFunc(i) { + return function (value) { + resolveContexts[i] = this; + resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value; + if (! --remaining) { + primary.resolveWith(resolveContexts, resolveValues); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if (remaining <= 1) { + adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) { + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while (i--) { + adoptValue(resolveValues[i], updateFunc(i), primary.reject); + } + return primary.promise(); + } + }); + + // These usually indicate a programmer mistake during development, + // warn about them ASAP rather than swallowing them by default. + var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + + // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error + // captured before the async barrier to get the original error cause + // which may otherwise be hidden. + jQuery.Deferred.exceptionHook = function (error, asyncError) { + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if (window.console && window.console.warn && error && rerrorNames.test(error.name)) { + window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, asyncError); + } + }; + jQuery.readyException = function (error) { + window.setTimeout(function () { + throw error; + }); + }; + + // The deferred used on DOM ready + var readyList = jQuery.Deferred(); + jQuery.fn.ready = function (fn) { + readyList.then(fn) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch(function (error) { + jQuery.readyException(error); + }); + return this; + }; + jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + // A counter to track how many items to wait for before + // the ready event fires. See trac-6781 + readyWait: 1, + // Handle when the DOM is ready + ready: function ready(wait) { + // Abort if there are pending holds or we're already ready + if (wait === true ? --jQuery.readyWait : jQuery.isReady) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if (wait !== true && --jQuery.readyWait > 0) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith(document, [jQuery]); + } + }); + jQuery.ready.then = readyList.then; + + // The ready event handler and self cleanup method + function completed() { + document.removeEventListener("DOMContentLoaded", completed); + window.removeEventListener("load", completed); + jQuery.ready(); + } + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE <=9 - 10 only + // Older IE sometimes signals "interactive" too soon + if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout(jQuery.ready); + } else { + // Use the handy event callback + document.addEventListener("DOMContentLoaded", completed); + + // A fallback to window.onload, that will always work + window.addEventListener("load", completed); + } + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + var access = function access(elems, fn, key, value, chainable, emptyGet, raw) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if (toType(key) === "object") { + chainable = true; + for (i in key) { + access(elems, fn, i, key[i], true, emptyGet, raw); + } + + // Sets one value + } else if (value !== undefined) { + chainable = true; + if (!isFunction(value)) { + raw = true; + } + if (bulk) { + // Bulk operations run against the entire set + if (raw) { + fn.call(elems, value); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function fn(elem, _key, value) { + return bulk.call(jQuery(elem), value); + }; + } + } + if (fn) { + for (; i < len; i++) { + fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key))); + } + } + } + if (chainable) { + return elems; + } + + // Gets + if (bulk) { + return fn.call(elems); + } + return len ? fn(elems[0], key) : emptyGet; + }; + + // Matches dashed string for camelizing + var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + + // Used by camelCase as callback to replace() + function fcamelCase(_all, letter) { + return letter.toUpperCase(); + } + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 15 + // Microsoft forgot to hump their vendor prefix (trac-9572) + function camelCase(string) { + return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); + } + var acceptData = function acceptData(owner) { + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType; + }; + function Data() { + this.expando = jQuery.expando + Data.uid++; + } + Data.uid = 1; + Data.prototype = { + cache: function cache(owner) { + // Check if the owner object already has a cache + var value = owner[this.expando]; + + // If not, create one + if (!value) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see trac-8335. + // Always return an empty object. + if (acceptData(owner)) { + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if (owner.nodeType) { + owner[this.expando] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty(owner, this.expando, { + value: value, + configurable: true + }); + } + } + } + return value; + }, + set: function set(owner, data, value) { + var prop, + cache = this.cache(owner); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if (typeof data === "string") { + cache[camelCase(data)] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Copy the properties one-by-one to the cache object + for (prop in data) { + cache[camelCase(prop)] = data[prop]; + } + } + return cache; + }, + get: function get(owner, key) { + return key === undefined ? this.cache(owner) : + // Always use camelCase key (gh-2257) + owner[this.expando] && owner[this.expando][camelCase(key)]; + }, + access: function access(owner, key, value) { + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if (key === undefined || key && typeof key === "string" && value === undefined) { + return this.get(owner, key); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set(owner, key, value); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function remove(owner, key) { + var i, + cache = owner[this.expando]; + if (cache === undefined) { + return; + } + if (key !== undefined) { + // Support array or space separated string of keys + if (Array.isArray(key)) { + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map(camelCase); + } else { + key = camelCase(key); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? [key] : key.match(rnothtmlwhite) || []; + } + i = key.length; + while (i--) { + delete cache[key[i]]; + } + } + + // Remove the expando if there's no more data + if (key === undefined || jQuery.isEmptyObject(cache)) { + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if (owner.nodeType) { + owner[this.expando] = undefined; + } else { + delete owner[this.expando]; + } + } + }, + hasData: function hasData(owner) { + var cache = owner[this.expando]; + return cache !== undefined && !jQuery.isEmptyObject(cache); + } + }; + var dataPriv = new Data(); + var dataUser = new Data(); + + // Implementation Summary + // + // 1. Enforce API surface and semantic compatibility with 1.9.x branch + // 2. Improve the module's maintainability by reducing the storage + // paths to a single mechanism. + // 3. Use the same single mechanism to support "private" and "user" data. + // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + // 5. Avoid exposing implementation details on user objects (eg. expando properties) + // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + + var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + function getData(data) { + if (data === "true") { + return true; + } + if (data === "false") { + return false; + } + if (data === "null") { + return null; + } + + // Only convert to a number if it doesn't change the string + if (data === +data + "") { + return +data; + } + if (rbrace.test(data)) { + return JSON.parse(data); + } + return data; + } + function dataAttr(elem, key, data) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if (data === undefined && elem.nodeType === 1) { + name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(); + data = elem.getAttribute(name); + if (typeof data === "string") { + try { + data = getData(data); + } catch (e) {} + + // Make sure we set the data so it isn't changed later + dataUser.set(elem, key, data); + } else { + data = undefined; + } + } + return data; + } + jQuery.extend({ + hasData: function hasData(elem) { + return dataUser.hasData(elem) || dataPriv.hasData(elem); + }, + data: function data(elem, name, _data) { + return dataUser.access(elem, name, _data); + }, + removeData: function removeData(elem, name) { + dataUser.remove(elem, name); + }, + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function _data(elem, name, data) { + return dataPriv.access(elem, name, data); + }, + _removeData: function _removeData(elem, name) { + dataPriv.remove(elem, name); + } + }); + jQuery.fn.extend({ + data: function data(key, value) { + var i, + name, + data, + elem = this[0], + attrs = elem && elem.attributes; + + // Gets all values + if (key === undefined) { + if (this.length) { + data = dataUser.get(elem); + if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) { + i = attrs.length; + while (i--) { + // Support: IE 11 only + // The attrs elements can be null (trac-14894) + if (attrs[i]) { + name = attrs[i].name; + if (name.indexOf("data-") === 0) { + name = camelCase(name.slice(5)); + dataAttr(elem, name, data[name]); + } + } + } + dataPriv.set(elem, "hasDataAttrs", true); + } + } + return data; + } + + // Sets multiple values + if (_typeof(key) === "object") { + return this.each(function () { + dataUser.set(this, key); + }); + } + return access(this, function (value) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if (elem && value === undefined) { + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get(elem, key); + if (data !== undefined) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr(elem, key); + if (data !== undefined) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each(function () { + // We always store the camelCased key + dataUser.set(this, key, value); + }); + }, null, value, arguments.length > 1, null, true); + }, + removeData: function removeData(key) { + return this.each(function () { + dataUser.remove(this, key); + }); + } + }); + jQuery.extend({ + queue: function queue(elem, type, data) { + var queue; + if (elem) { + type = (type || "fx") + "queue"; + queue = dataPriv.get(elem, type); + + // Speed up dequeue by getting out quickly if this is just a lookup + if (data) { + if (!queue || Array.isArray(data)) { + queue = dataPriv.access(elem, type, jQuery.makeArray(data)); + } else { + queue.push(data); + } + } + return queue || []; + } + }, + dequeue: function dequeue(elem, type) { + type = type || "fx"; + var queue = jQuery.queue(elem, type), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks(elem, type), + next = function next() { + jQuery.dequeue(elem, type); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if (fn === "inprogress") { + fn = queue.shift(); + startLength--; + } + if (fn) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if (type === "fx") { + queue.unshift("inprogress"); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call(elem, next, hooks); + } + if (!startLength && hooks) { + hooks.empty.fire(); + } + }, + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function _queueHooks(elem, type) { + var key = type + "queueHooks"; + return dataPriv.get(elem, key) || dataPriv.access(elem, key, { + empty: jQuery.Callbacks("once memory").add(function () { + dataPriv.remove(elem, [type + "queue", key]); + }) + }); + } + }); + jQuery.fn.extend({ + queue: function queue(type, data) { + var setter = 2; + if (typeof type !== "string") { + data = type; + type = "fx"; + setter--; + } + if (arguments.length < setter) { + return jQuery.queue(this[0], type); + } + return data === undefined ? this : this.each(function () { + var queue = jQuery.queue(this, type, data); + + // Ensure a hooks for this queue + jQuery._queueHooks(this, type); + if (type === "fx" && queue[0] !== "inprogress") { + jQuery.dequeue(this, type); + } + }); + }, + dequeue: function dequeue(type) { + return this.each(function () { + jQuery.dequeue(this, type); + }); + }, + clearQueue: function clearQueue(type) { + return this.queue(type || "fx", []); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function promise(type, obj) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function resolve() { + if (! --count) { + defer.resolveWith(elements, [elements]); + } + }; + if (typeof type !== "string") { + obj = type; + type = undefined; + } + type = type || "fx"; + while (i--) { + tmp = dataPriv.get(elements[i], type + "queueHooks"); + if (tmp && tmp.empty) { + count++; + tmp.empty.add(resolve); + } + } + resolve(); + return defer.promise(obj); + } + }); + var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; + var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); + var cssExpand = ["Top", "Right", "Bottom", "Left"]; + var documentElement = document.documentElement; + var isAttached = function isAttached(elem) { + return jQuery.contains(elem.ownerDocument, elem); + }, + composed = { + composed: true + }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if (documentElement.getRootNode) { + isAttached = function isAttached(elem) { + return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument; + }; + } + var isHiddenWithinTree = function isHiddenWithinTree(elem, el) { + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || elem.style.display === "" && + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached(elem) && jQuery.css(elem, "display") === "none"; + }; + function adjustCSS(elem, prop, valueParts, tween) { + var adjusted, + scale, + maxIterations = 20, + currentValue = tween ? function () { + return tween.cur(); + } : function () { + return jQuery.css(elem, prop, ""); + }, + initial = currentValue(), + unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"), + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop)); + if (initialInUnit && initialInUnit[3] !== unit) { + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[3]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + while (maxIterations--) { + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style(elem, prop, initialInUnit + unit); + if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + } + initialInUnit = initialInUnit * 2; + jQuery.style(elem, prop, initialInUnit + unit); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + if (valueParts) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2]; + if (tween) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; + } + var defaultDisplayMap = {}; + function getDefaultDisplay(elem) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[nodeName]; + if (display) { + return display; + } + temp = doc.body.appendChild(doc.createElement(nodeName)); + display = jQuery.css(temp, "display"); + temp.parentNode.removeChild(temp); + if (display === "none") { + display = "block"; + } + defaultDisplayMap[nodeName] = display; + return display; + } + function showHide(elements, show) { + var display, + elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for (; index < length; index++) { + elem = elements[index]; + if (!elem.style) { + continue; + } + display = elem.style.display; + if (show) { + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if (display === "none") { + values[index] = dataPriv.get(elem, "display") || null; + if (!values[index]) { + elem.style.display = ""; + } + } + if (elem.style.display === "" && isHiddenWithinTree(elem)) { + values[index] = getDefaultDisplay(elem); + } + } else { + if (display !== "none") { + values[index] = "none"; + + // Remember what we're overwriting + dataPriv.set(elem, "display", display); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for (index = 0; index < length; index++) { + if (values[index] != null) { + elements[index].style.display = values[index]; + } + } + return elements; + } + jQuery.fn.extend({ + show: function show() { + return showHide(this, true); + }, + hide: function hide() { + return showHide(this); + }, + toggle: function toggle(state) { + if (typeof state === "boolean") { + return state ? this.show() : this.hide(); + } + return this.each(function () { + if (isHiddenWithinTree(this)) { + jQuery(this).show(); + } else { + jQuery(this).hide(); + } + }); + } + }); + var rcheckableType = /^(?:checkbox|radio)$/i; + var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; + var rscriptType = /^$|^module$|\/(?:java|ecma)script/i; + (function () { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild(document.createElement("div")), + input = document.createElement("input"); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (trac-11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (trac-14901) + input.setAttribute("type", "radio"); + input.setAttribute("checked", "checked"); + input.setAttribute("name", "t"); + div.appendChild(input); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; + })(); + + // We have to close these tags to support XHTML (trac-13200) + var wrapMap = { + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [1, "", "
"], + col: [2, "", "
"], + tr: [2, "", "
"], + td: [3, "", "
"], + _default: [0, "", ""] + }; + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + + // Support: IE <=9 only + if (!support.option) { + wrapMap.optgroup = wrapMap.option = [1, ""]; + } + function getAll(context, tag) { + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) + var ret; + if (typeof context.getElementsByTagName !== "undefined") { + ret = context.getElementsByTagName(tag || "*"); + } else if (typeof context.querySelectorAll !== "undefined") { + ret = context.querySelectorAll(tag || "*"); + } else { + ret = []; + } + if (tag === undefined || tag && nodeName(context, tag)) { + return jQuery.merge([context], ret); + } + return ret; + } + + // Mark scripts as having already been evaluated + function setGlobalEval(elems, refElements) { + var i = 0, + l = elems.length; + for (; i < l; i++) { + dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval")); + } + } + var rhtml = /<|&#?\w+;/; + function buildFragment(elems, context, scripts, selection, ignored) { + var elem, + tmp, + tag, + wrap, + attached, + j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + for (; i < l; i++) { + elem = elems[i]; + if (elem || elem === 0) { + // Add nodes directly + if (toType(elem) === "object") { + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge(nodes, elem.nodeType ? [elem] : elem); + + // Convert non-html into a text node + } else if (!rhtml.test(elem)) { + nodes.push(context.createTextNode(elem)); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild(context.createElement("div")); + + // Deserialize a standard representation + tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); + wrap = wrapMap[tag] || wrapMap._default; + tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while (j--) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge(nodes, tmp.childNodes); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (trac-12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + i = 0; + while (elem = nodes[i++]) { + // Skip elements already in the context collection (trac-4087) + if (selection && jQuery.inArray(elem, selection) > -1) { + if (ignored) { + ignored.push(elem); + } + continue; + } + attached = isAttached(elem); + + // Append to fragment + tmp = getAll(fragment.appendChild(elem), "script"); + + // Preserve script evaluation history + if (attached) { + setGlobalEval(tmp); + } + + // Capture executables + if (scripts) { + j = 0; + while (elem = tmp[j++]) { + if (rscriptType.test(elem.type || "")) { + scripts.push(elem); + } + } + } + } + return fragment; + } + var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + function returnTrue() { + return true; + } + function returnFalse() { + return false; + } + function _on(elem, types, selector, data, fn, one) { + var origFn, type; + + // Types can be a map of types/handlers + if (_typeof(types) === "object") { + // ( types-Object, selector, data ) + if (typeof selector !== "string") { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for (type in types) { + _on(elem, type, selector, data, types[type], one); + } + return elem; + } + if (data == null && fn == null) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if (fn == null) { + if (typeof selector === "string") { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if (fn === false) { + fn = returnFalse; + } else if (!fn) { + return elem; + } + if (one === 1) { + origFn = fn; + fn = function fn(event) { + // Can use an empty set, since event contains the info + jQuery().off(event); + return origFn.apply(this, arguments); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || (origFn.guid = jQuery.guid++); + } + return elem.each(function () { + jQuery.event.add(this, types, fn, data, selector); + }); + } + + /* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ + jQuery.event = { + global: {}, + add: function add(elem, types, handler, data, selector) { + var handleObjIn, + eventHandle, + tmp, + events, + t, + handleObj, + special, + handlers, + type, + namespaces, + origType, + elemData = dataPriv.get(elem); + + // Only attach events to objects that accept data + if (!acceptData(elem)) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if (handler.handler) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if (selector) { + jQuery.find.matchesSelector(documentElement, selector); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if (!handler.guid) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if (!(events = elemData.events)) { + events = elemData.events = Object.create(null); + } + if (!(eventHandle = elemData.handle)) { + eventHandle = elemData.handle = function (e) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined; + }; + } + + // Handle multiple events separated by a space + types = (types || "").match(rnothtmlwhite) || [""]; + t = types.length; + while (t--) { + tmp = rtypenamespace.exec(types[t]) || []; + type = origType = tmp[1]; + namespaces = (tmp[2] || "").split(".").sort(); + + // There *must* be a type, no attaching namespace-only handlers + if (!type) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[type] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = (selector ? special.delegateType : special.bindType) || type; + + // Update special based on newly reset type + special = jQuery.event.special[type] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test(selector), + namespace: namespaces.join(".") + }, handleObjIn); + + // Init the event handler queue if we're the first + if (!(handlers = events[type])) { + handlers = events[type] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { + if (elem.addEventListener) { + elem.addEventListener(type, eventHandle); + } + } + } + if (special.add) { + special.add.call(elem, handleObj); + if (!handleObj.handler.guid) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if (selector) { + handlers.splice(handlers.delegateCount++, 0, handleObj); + } else { + handlers.push(handleObj); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[type] = true; + } + }, + // Detach an event or set of events from an element + remove: function remove(elem, types, handler, selector, mappedTypes) { + var j, + origCount, + tmp, + events, + t, + handleObj, + special, + handlers, + type, + namespaces, + origType, + elemData = dataPriv.hasData(elem) && dataPriv.get(elem); + if (!elemData || !(events = elemData.events)) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = (types || "").match(rnothtmlwhite) || [""]; + t = types.length; + while (t--) { + tmp = rtypenamespace.exec(types[t]) || []; + type = origType = tmp[1]; + namespaces = (tmp[2] || "").split(".").sort(); + + // Unbind all events (on this namespace, if provided) for the element + if (!type) { + for (type in events) { + jQuery.event.remove(elem, type + types[t], handler, selector, true); + } + continue; + } + special = jQuery.event.special[type] || {}; + type = (selector ? special.delegateType : special.bindType) || type; + handlers = events[type] || []; + tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); + + // Remove matching events + origCount = j = handlers.length; + while (j--) { + handleObj = handlers[j]; + if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { + handlers.splice(j, 1); + if (handleObj.selector) { + handlers.delegateCount--; + } + if (special.remove) { + special.remove.call(elem, handleObj); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if (origCount && !handlers.length) { + if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { + jQuery.removeEvent(elem, type, elemData.handle); + } + delete events[type]; + } + } + + // Remove data and the expando if it's no longer used + if (jQuery.isEmptyObject(events)) { + dataPriv.remove(elem, "handle events"); + } + }, + dispatch: function dispatch(nativeEvent) { + var i, + j, + ret, + matched, + handleObj, + handlerQueue, + args = new Array(arguments.length), + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix(nativeEvent), + handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [], + special = jQuery.event.special[event.type] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + for (i = 1; i < arguments.length; i++) { + args[i] = arguments[i]; + } + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if (special.preDispatch && special.preDispatch.call(this, event) === false) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call(this, event, handlers); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { + event.currentTarget = matched.elem; + j = 0; + while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) { + event.handleObj = handleObj; + event.data = handleObj.data; + ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args); + if (ret !== undefined) { + if ((event.result = ret) === false) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if (special.postDispatch) { + special.postDispatch.call(this, event); + } + return event.result; + }, + handlers: function handlers(event, _handlers) { + var i, + handleObj, + sel, + matchedHandlers, + matchedSelectors, + handlerQueue = [], + delegateCount = _handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if (delegateCount && + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !(event.type === "click" && event.button >= 1)) { + for (; cur !== this; cur = cur.parentNode || this) { + // Don't check non-elements (trac-13208) + // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) + if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) { + matchedHandlers = []; + matchedSelectors = {}; + for (i = 0; i < delegateCount; i++) { + handleObj = _handlers[i]; + + // Don't conflict with Object.prototype properties (trac-13203) + sel = handleObj.selector + " "; + if (matchedSelectors[sel] === undefined) { + matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length; + } + if (matchedSelectors[sel]) { + matchedHandlers.push(handleObj); + } + } + if (matchedHandlers.length) { + handlerQueue.push({ + elem: cur, + handlers: matchedHandlers + }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if (delegateCount < _handlers.length) { + handlerQueue.push({ + elem: cur, + handlers: _handlers.slice(delegateCount) + }); + } + return handlerQueue; + }, + addProp: function addProp(name, hook) { + Object.defineProperty(jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + get: isFunction(hook) ? function () { + if (this.originalEvent) { + return hook(this.originalEvent); + } + } : function () { + if (this.originalEvent) { + return this.originalEvent[name]; + } + }, + set: function set(value) { + Object.defineProperty(this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + }); + } + }); + }, + fix: function fix(originalEvent) { + return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent); + }, + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // Utilize native event to ensure correct state for checkable inputs + setup: function setup(data) { + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { + // dataPriv.set( el, "click", ... ) + leverageNative(el, "click", true); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function trigger(data) { + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { + leverageNative(el, "click"); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function _default(event) { + var target = event.target; + return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a"); + } + }, + beforeunload: { + postDispatch: function postDispatch(event) { + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if (event.result !== undefined && event.originalEvent) { + event.originalEvent.returnValue = event.result; + } + } + } + } + }; + + // Ensure the presence of an event listener that handles manually-triggered + // synthetic events by interrupting progress until reinvoked in response to + // *native* events that it fires directly, ensuring that state changes have + // already occurred before other listeners are invoked. + function leverageNative(el, type, isSetup) { + // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add + if (!isSetup) { + if (dataPriv.get(el, type) === undefined) { + jQuery.event.add(el, type, returnTrue); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set(el, type, false); + jQuery.event.add(el, type, { + namespace: false, + handler: function handler(event) { + var result, + saved = dataPriv.get(this, type); + if (event.isTrigger & 1 && this[type]) { + // Interrupt processing of the outer synthetic .trigger()ed event + if (!saved) { + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = _slice.call(arguments); + dataPriv.set(this, type, saved); + + // Trigger the native event and capture its result + this[type](); + result = dataPriv.get(this, type); + dataPriv.set(this, type, false); + if (saved !== result) { + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering + // the native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ((jQuery.event.special[type] || {}).delegateType) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if (saved) { + // ...and capture the result + dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this)); + + // Abort handling of the native event by all jQuery handlers while allowing + // native handlers on the same element to run. On target, this is achieved + // by stopping immediate propagation just on the jQuery event. However, + // the native event is re-wrapped by a jQuery one on each level of the + // propagation so the only way to stop it for jQuery is to stop it for + // everyone via native `stopPropagation()`. This is not a problem for + // focus/blur which don't bubble, but it does also stop click on checkboxes + // and radios. We accept this limitation. + event.stopPropagation(); + event.isImmediatePropagationStopped = returnTrue; + } + } + }); + } + jQuery.removeEvent = function (elem, type, handle) { + // This "if" is needed for plain objects + if (elem.removeEventListener) { + elem.removeEventListener(type, handle); + } + }; + jQuery.Event = function (src, props) { + // Allow instantiation without the 'new' keyword + if (!(this instanceof jQuery.Event)) { + return new jQuery.Event(src, props); + } + + // Event object + if (src && src.type) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && + // Support: Android <=2.3 only + src.returnValue === false ? returnTrue : returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (trac-504, trac-13143) + this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target; + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if (props) { + jQuery.extend(this, props); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[jQuery.expando] = true; + }; + + // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding + // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html + jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + preventDefault: function preventDefault() { + var e = this.originalEvent; + this.isDefaultPrevented = returnTrue; + if (e && !this.isSimulated) { + e.preventDefault(); + } + }, + stopPropagation: function stopPropagation() { + var e = this.originalEvent; + this.isPropagationStopped = returnTrue; + if (e && !this.isSimulated) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function stopImmediatePropagation() { + var e = this.originalEvent; + this.isImmediatePropagationStopped = returnTrue; + if (e && !this.isSimulated) { + e.stopImmediatePropagation(); + } + this.stopPropagation(); + } + }; + + // Includes all common event props including KeyEvent and MouseEvent specific props + jQuery.each({ + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true + }, jQuery.event.addProp); + jQuery.each({ + focus: "focusin", + blur: "focusout" + }, function (type, delegateType) { + function focusMappedHandler(nativeEvent) { + if (document.documentMode) { + // Support: IE 11+ + // Attach a single focusin/focusout handler on the document while someone wants + // focus/blur. This is because the former are synchronous in IE while the latter + // are async. In other browsers, all those handlers are invoked synchronously. + + // `handle` from private data would already wrap the event, but we need + // to change the `type` here. + var handle = dataPriv.get(this, "handle"), + event = jQuery.event.fix(nativeEvent); + event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; + event.isSimulated = true; + + // First, handle focusin/focusout + handle(nativeEvent); + + // ...then, handle focus/blur + // + // focus/blur don't bubble while focusin/focusout do; simulate the former by only + // invoking the handler at the lower level. + if (event.target === event.currentTarget) { + // The setup part calls `leverageNative`, which, in turn, calls + // `jQuery.event.add`, so event handle will already have been set + // by this point. + handle(event); + } + } else { + // For non-IE browsers, attach a single capturing handler on the document + // while someone wants focusin/focusout. + jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent)); + } + } + jQuery.event.special[type] = { + // Utilize native event if possible so blur/focus sequence is correct + setup: function setup() { + var attaches; + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative(this, type, true); + if (document.documentMode) { + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + attaches = dataPriv.get(this, delegateType); + if (!attaches) { + this.addEventListener(delegateType, focusMappedHandler); + } + dataPriv.set(this, delegateType, (attaches || 0) + 1); + } else { + // Return false to allow normal processing in the caller + return false; + } + }, + trigger: function trigger() { + // Force setup before trigger + leverageNative(this, type); + + // Return non-false to allow normal event-path propagation + return true; + }, + teardown: function teardown() { + var attaches; + if (document.documentMode) { + attaches = dataPriv.get(this, delegateType) - 1; + if (!attaches) { + this.removeEventListener(delegateType, focusMappedHandler); + dataPriv.remove(this, delegateType); + } else { + dataPriv.set(this, delegateType, attaches); + } + } else { + // Return false to indicate standard teardown should be applied + return false; + } + }, + // Suppress native focus or blur if we're currently inside + // a leveraged native-event stack + _default: function _default(event) { + return dataPriv.get(event.target, type); + }, + delegateType: delegateType + }; + + // Support: Firefox <=44 + // Firefox doesn't have focus(in | out) events + // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 + // + // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 + // focus(in | out) events fire after focus & blur events, + // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order + // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + // + // Support: IE 9 - 11+ + // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, + // attach a single handler for both events in IE. + jQuery.event.special[delegateType] = { + setup: function setup() { + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get(dataHolder, delegateType); + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + if (!attaches) { + if (document.documentMode) { + this.addEventListener(delegateType, focusMappedHandler); + } else { + doc.addEventListener(type, focusMappedHandler, true); + } + } + dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1); + }, + teardown: function teardown() { + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get(dataHolder, delegateType) - 1; + if (!attaches) { + if (document.documentMode) { + this.removeEventListener(delegateType, focusMappedHandler); + } else { + doc.removeEventListener(type, focusMappedHandler, true); + } + dataPriv.remove(dataHolder, delegateType); + } else { + dataPriv.set(dataHolder, delegateType, attaches); + } + } + }; + }); + + // Create mouseenter/leave events using mouseover/out and event-time checks + // so that event delegation works in jQuery. + // Do the same for pointerenter/pointerleave and pointerover/pointerout + // + // Support: Safari 7 only + // Safari sends mouseenter too often; see: + // https://bugs.chromium.org/p/chromium/issues/detail?id=470258 + // for the description of the bug (it existed in older Chrome versions as well). + jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" + }, function (orig, fix) { + jQuery.event.special[orig] = { + delegateType: fix, + bindType: fix, + handle: function handle(event) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if (!related || related !== target && !jQuery.contains(target, related)) { + event.type = handleObj.origType; + ret = handleObj.handler.apply(this, arguments); + event.type = fix; + } + return ret; + } + }; + }); + jQuery.fn.extend({ + on: function on(types, selector, data, fn) { + return _on(this, types, selector, data, fn); + }, + one: function one(types, selector, data, fn) { + return _on(this, types, selector, data, fn, 1); + }, + off: function off(types, selector, fn) { + var handleObj, type; + if (types && types.preventDefault && types.handleObj) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler); + return this; + } + if (_typeof(types) === "object") { + // ( types-object [, selector] ) + for (type in types) { + this.off(type, selector, types[type]); + } + return this; + } + if (selector === false || typeof selector === "function") { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if (fn === false) { + fn = returnFalse; + } + return this.each(function () { + jQuery.event.remove(this, types, fn, selector); + }); + } + }); + var + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + + // Prefer a tbody over its parent table for containing new rows + function manipulationTarget(elem, content) { + if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) { + return jQuery(elem).children("tbody")[0] || elem; + } + return elem; + } + + // Replace/restore the type attribute of script elements for safe DOM manipulation + function disableScript(elem) { + elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; + return elem; + } + function restoreScript(elem) { + if ((elem.type || "").slice(0, 5) === "true/") { + elem.type = elem.type.slice(5); + } else { + elem.removeAttribute("type"); + } + return elem; + } + function cloneCopyEvent(src, dest) { + var i, l, type, pdataOld, udataOld, udataCur, events; + if (dest.nodeType !== 1) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if (dataPriv.hasData(src)) { + pdataOld = dataPriv.get(src); + events = pdataOld.events; + if (events) { + dataPriv.remove(dest, "handle events"); + for (type in events) { + for (i = 0, l = events[type].length; i < l; i++) { + jQuery.event.add(dest, type, events[type][i]); + } + } + } + } + + // 2. Copy user data + if (dataUser.hasData(src)) { + udataOld = dataUser.access(src); + udataCur = jQuery.extend({}, udataOld); + dataUser.set(dest, udataCur); + } + } + + // Fix IE bugs, see support tests + function fixInput(src, dest) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if (nodeName === "input" && rcheckableType.test(src.type)) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if (nodeName === "input" || nodeName === "textarea") { + dest.defaultValue = src.defaultValue; + } + } + function domManip(collection, args, callback, ignored) { + // Flatten any nested arrays + args = flat(args); + var fragment, + first, + scripts, + hasScripts, + node, + doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[0], + valueIsFunction = isFunction(value); + + // We can't cloneNode fragments that contain checked, in WebKit + if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) { + return collection.each(function (index) { + var self = collection.eq(index); + if (valueIsFunction) { + args[0] = value.call(this, index, self.html()); + } + domManip(self, args, callback, ignored); + }); + } + if (l) { + fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); + first = fragment.firstChild; + if (fragment.childNodes.length === 1) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if (first || ignored) { + scripts = jQuery.map(getAll(fragment, "script"), disableScript); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (trac-8070). + for (; i < l; i++) { + node = fragment; + if (i !== iNoClone) { + node = jQuery.clone(node, true, true); + + // Keep references to cloned scripts for later restoration + if (hasScripts) { + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge(scripts, getAll(node, "script")); + } + } + callback.call(collection[i], node, i); + } + if (hasScripts) { + doc = scripts[scripts.length - 1].ownerDocument; + + // Reenable scripts + jQuery.map(scripts, restoreScript); + + // Evaluate executable scripts on first document insertion + for (i = 0; i < hasScripts; i++) { + node = scripts[i]; + if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) { + if (node.src && (node.type || "").toLowerCase() !== "module") { + // Optional AJAX dependency, but won't run scripts if not present + if (jQuery._evalUrl && !node.noModule) { + jQuery._evalUrl(node.src, { + nonce: node.nonce || node.getAttribute("nonce") + }, doc); + } + } else { + // Unwrap a CDATA section containing script contents. This shouldn't be + // needed as in XML documents they're already not visible when + // inspecting element contents and in HTML documents they have no + // meaning but we're preserving that logic for backwards compatibility. + // This will be removed completely in 4.0. See gh-4904. + DOMEval(node.textContent.replace(rcleanScript, ""), node, doc); + } + } + } + } + } + } + return collection; + } + function _remove(elem, selector, keepData) { + var node, + nodes = selector ? jQuery.filter(selector, elem) : elem, + i = 0; + for (; (node = nodes[i]) != null; i++) { + if (!keepData && node.nodeType === 1) { + jQuery.cleanData(getAll(node)); + } + if (node.parentNode) { + if (keepData && isAttached(node)) { + setGlobalEval(getAll(node, "script")); + } + node.parentNode.removeChild(node); + } + } + return elem; + } + jQuery.extend({ + htmlPrefilter: function htmlPrefilter(html) { + return html; + }, + clone: function clone(elem, dataAndEvents, deepDataAndEvents) { + var i, + l, + srcElements, + destElements, + clone = elem.cloneNode(true), + inPage = isAttached(elem); + + // Fix IE cloning issues + if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { + // We eschew jQuery#find here for performance reasons: + // https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll(clone); + srcElements = getAll(elem); + for (i = 0, l = srcElements.length; i < l; i++) { + fixInput(srcElements[i], destElements[i]); + } + } + + // Copy the events from the original to the clone + if (dataAndEvents) { + if (deepDataAndEvents) { + srcElements = srcElements || getAll(elem); + destElements = destElements || getAll(clone); + for (i = 0, l = srcElements.length; i < l; i++) { + cloneCopyEvent(srcElements[i], destElements[i]); + } + } else { + cloneCopyEvent(elem, clone); + } + } + + // Preserve script evaluation history + destElements = getAll(clone, "script"); + if (destElements.length > 0) { + setGlobalEval(destElements, !inPage && getAll(elem, "script")); + } + + // Return the cloned set + return clone; + }, + cleanData: function cleanData(elems) { + var data, + elem, + type, + special = jQuery.event.special, + i = 0; + for (; (elem = elems[i]) !== undefined; i++) { + if (acceptData(elem)) { + if (data = elem[dataPriv.expando]) { + if (data.events) { + for (type in data.events) { + if (special[type]) { + jQuery.event.remove(elem, type); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent(elem, type, data.handle); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[dataPriv.expando] = undefined; + } + if (elem[dataUser.expando]) { + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[dataUser.expando] = undefined; + } + } + } + } + }); + jQuery.fn.extend({ + detach: function detach(selector) { + return _remove(this, selector, true); + }, + remove: function remove(selector) { + return _remove(this, selector); + }, + text: function text(value) { + return access(this, function (value) { + return value === undefined ? jQuery.text(this) : this.empty().each(function () { + if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { + this.textContent = value; + } + }); + }, null, value, arguments.length); + }, + append: function append() { + return domManip(this, arguments, function (elem) { + if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { + var target = manipulationTarget(this, elem); + target.appendChild(elem); + } + }); + }, + prepend: function prepend() { + return domManip(this, arguments, function (elem) { + if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { + var target = manipulationTarget(this, elem); + target.insertBefore(elem, target.firstChild); + } + }); + }, + before: function before() { + return domManip(this, arguments, function (elem) { + if (this.parentNode) { + this.parentNode.insertBefore(elem, this); + } + }); + }, + after: function after() { + return domManip(this, arguments, function (elem) { + if (this.parentNode) { + this.parentNode.insertBefore(elem, this.nextSibling); + } + }); + }, + empty: function empty() { + var elem, + i = 0; + for (; (elem = this[i]) != null; i++) { + if (elem.nodeType === 1) { + // Prevent memory leaks + jQuery.cleanData(getAll(elem, false)); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + return this; + }, + clone: function clone(dataAndEvents, deepDataAndEvents) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + return this.map(function () { + return jQuery.clone(this, dataAndEvents, deepDataAndEvents); + }); + }, + html: function html(value) { + return access(this, function (value) { + var elem = this[0] || {}, + i = 0, + l = this.length; + if (value === undefined && elem.nodeType === 1) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) { + value = jQuery.htmlPrefilter(value); + try { + for (; i < l; i++) { + elem = this[i] || {}; + + // Remove element nodes and prevent memory leaks + if (elem.nodeType === 1) { + jQuery.cleanData(getAll(elem, false)); + elem.innerHTML = value; + } + } + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch (e) {} + } + if (elem) { + this.empty().append(value); + } + }, null, value, arguments.length); + }, + replaceWith: function replaceWith() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip(this, arguments, function (elem) { + var parent = this.parentNode; + if (jQuery.inArray(this, ignored) < 0) { + jQuery.cleanData(getAll(this)); + if (parent) { + parent.replaceChild(elem, this); + } + } + + // Force callback invocation + }, ignored); + } + }); + jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function (name, original) { + jQuery.fn[name] = function (selector) { + var elems, + ret = [], + insert = jQuery(selector), + last = insert.length - 1, + i = 0; + for (; i <= last; i++) { + elems = i === last ? this : this.clone(true); + jQuery(insert[i])[original](elems); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply(ret, elems.get()); + } + return this.pushStack(ret); + }; + }); + var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"); + var rcustomProp = /^--/; + var getStyles = function getStyles(elem) { + // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + if (!view || !view.opener) { + view = window; + } + return view.getComputedStyle(elem); + }; + var swap = function swap(elem, options, callback) { + var ret, + name, + old = {}; + + // Remember the old values, and insert the new ones + for (name in options) { + old[name] = elem.style[name]; + elem.style[name] = options[name]; + } + ret = callback.call(elem); + + // Revert the old values + for (name in options) { + elem.style[name] = old[name]; + } + return ret; + }; + var rboxStyle = new RegExp(cssExpand.join("|"), "i"); + (function () { + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + // This is a singleton, we need to execute it only once + if (!div) { + return; + } + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0"; + div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%"; + documentElement.appendChild(container).appendChild(div); + var divStyle = window.getComputedStyle(div); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12; + documentElement.removeChild(container); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + function roundPixelMeasures(measure) { + return Math.round(parseFloat(measure)); + } + var pixelPositionVal, + boxSizingReliableVal, + scrollboxSizeVal, + pixelBoxStylesVal, + reliableTrDimensionsVal, + reliableMarginLeftVal, + container = document.createElement("div"), + div = document.createElement("div"); + + // Finish early in limited (non-browser) environments + if (!div.style) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (trac-8908) + div.style.backgroundClip = "content-box"; + div.cloneNode(true).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + jQuery.extend(support, { + boxSizingReliable: function boxSizingReliable() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function pixelBoxStyles() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function pixelPosition() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function reliableMarginLeft() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function scrollboxSize() { + computeStyleTests(); + return scrollboxSizeVal; + }, + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function reliableTrDimensions() { + var table, tr, trChild, trStyle; + if (reliableTrDimensionsVal == null) { + table = document.createElement("table"); + tr = document.createElement("tr"); + trChild = document.createElement("div"); + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + documentElement.appendChild(table).appendChild(tr).appendChild(trChild); + trStyle = window.getComputedStyle(tr); + reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight; + documentElement.removeChild(table); + } + return reliableTrDimensionsVal; + } + }); + })(); + function curCSS(elem, name, computed) { + var width, + minWidth, + maxWidth, + ret, + isCustomProp = rcustomProp.test(name), + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + computed = computed || getStyles(elem); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, trac-12537) + // .css('--customProperty) (gh-3144) + if (computed) { + // Support: IE <=9 - 11+ + // IE only supports `"float"` in `getPropertyValue`; in computed styles + // it's only available as `"cssFloat"`. We no longer modify properties + // sent to `.css()` apart from camelCasing, so we need to check both. + // Normally, this would create difference in behavior: if + // `getPropertyValue` returns an empty string, the value returned + // by `.css()` would be `undefined`. This is usually the case for + // disconnected elements. However, in IE even disconnected elements + // with no styles return `"none"` for `getPropertyValue( "float" )` + ret = computed.getPropertyValue(name) || computed[name]; + if (isCustomProp && ret) { + // Support: Firefox 105+, Chrome <=105+ + // Spec requires trimming whitespace for custom properties (gh-4926). + // Firefox only trims leading whitespace. Chrome just collapses + // both leading & trailing whitespace to a single space. + // + // Fall back to `undefined` if empty string returned. + // This collapses a missing definition with property defined + // and set to an empty string but there's no standard API + // allowing us to differentiate them without a performance penalty + // and returning `undefined` aligns with older jQuery. + // + // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED + // as whitespace while CSS does not, but this is not a problem + // because CSS preprocessing replaces them with U+000A LINE FEED + // (which *is* CSS whitespace) + // https://www.w3.org/TR/css-syntax-3/#input-preprocessing + ret = ret.replace(rtrimCSS, "$1") || undefined; + } + if (ret === "" && !isAttached(elem)) { + ret = jQuery.style(elem, name); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) { + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + return ret !== undefined ? + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : ret; + } + function addGetHookIf(conditionFn, hookFn) { + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function get() { + if (conditionFn()) { + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return (this.get = hookFn).apply(this, arguments); + } + }; + } + var cssPrefixes = ["Webkit", "Moz", "ms"], + emptyStyle = document.createElement("div").style, + vendorProps = {}; + + // Return a vendor-prefixed property or undefined + function vendorPropName(name) { + // Check for vendor prefixed names + var capName = name[0].toUpperCase() + name.slice(1), + i = cssPrefixes.length; + while (i--) { + name = cssPrefixes[i] + capName; + if (name in emptyStyle) { + return name; + } + } + } + + // Return a potentially-mapped jQuery.cssProps or vendor prefixed property + function finalPropName(name) { + var final = jQuery.cssProps[name] || vendorProps[name]; + if (final) { + return final; + } + if (name in emptyStyle) { + return name; + } + return vendorProps[name] = vendorPropName(name) || name; + } + var + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + cssShow = { + position: "absolute", + visibility: "hidden", + display: "block" + }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + function setPositiveNumber(_elem, value, subtract) { + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec(value); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value; + } + function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0, + marginDelta = 0; + + // Adjustment may not be necessary + if (box === (isBorderBox ? "border" : "content")) { + return 0; + } + for (; i < 4; i += 2) { + // Both box models exclude margin + // Count margin delta separately to only add it after scroll gutter adjustment. + // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). + if (box === "margin") { + marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if (!isBorderBox) { + // Add padding + delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles); + + // For "border" or "margin", add border + if (box !== "padding") { + delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); + + // But still keep track of it otherwise + } else { + extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + // For "content", subtract padding + if (box === "content") { + delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles); + } + + // For "content" or "padding", subtract border + if (box !== "margin") { + delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if (!isBorderBox && computedVal >= 0) { + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + )) || 0; + } + return delta + marginDelta; + } + function getWidthOrHeight(elem, dimension, extra) { + // Start with computed style + var styles = getStyles(elem), + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", + valueIsBorderBox = isBorderBox, + val = curCSS(elem, dimension, styles), + offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if (rnumnonpx.test(val)) { + if (!extra) { + return val; + } + val = "auto"; + } + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ((!support.boxSizingReliable() && isBorderBox || + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName(elem, "tr") || + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && + // Make sure the element is visible & connected + elem.getClientRects().length) { + isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if (valueIsBorderBox) { + val = elem[offsetProp]; + } + } + + // Normalize "" and auto + val = parseFloat(val) || 0; + + // Adjust for the element's box model + return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles, + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val) + "px"; + } + jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function get(elem, computed) { + if (computed) { + // We should always get a number back from opacity + var ret = curCSS(elem, "opacity"); + return ret === "" ? "1" : ret; + } + } + } + }, + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + animationIterationCount: true, + aspectRatio: true, + borderImageSlice: true, + columnCount: true, + flexGrow: true, + flexShrink: true, + fontWeight: true, + gridArea: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnStart: true, + gridRow: true, + gridRowEnd: true, + gridRowStart: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + scale: true, + widows: true, + zIndex: true, + zoom: true, + // SVG-related + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeMiterlimit: true, + strokeOpacity: true + }, + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + // Get and set the style property on a DOM Node + style: function style(elem, name, value, extra) { + // Don't set styles on text and comment nodes + if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { + return; + } + + // Make sure that we're working with the right name + var ret, + type, + hooks, + origName = camelCase(name), + isCustomProp = rcustomProp.test(name), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if (!isCustomProp) { + name = finalPropName(origName); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; + + // Check if we're setting a value + if (value !== undefined) { + type = _typeof(value); + + // Convert "+=" or "-=" to relative numbers (trac-7345) + if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) { + value = adjustCSS(elem, name, ret); + + // Fixes bug trac-9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (trac-7116) + if (value == null || value !== value) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if (type === "number" && !isCustomProp) { + value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px"); + } + + // background-* props affect original clone's values + if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) { + style[name] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) { + if (isCustomProp) { + style.setProperty(name, value); + } else { + style[name] = value; + } + } + } else { + // If a hook was provided get the non-computed value from there + if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) { + return ret; + } + + // Otherwise just get the value from the style object + return style[name]; + } + }, + css: function css(elem, name, extra, styles) { + var val, + num, + hooks, + origName = camelCase(name), + isCustomProp = rcustomProp.test(name); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if (!isCustomProp) { + name = finalPropName(origName); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; + + // If a hook was provided get the computed value from there + if (hooks && "get" in hooks) { + val = hooks.get(elem, true, extra); + } + + // Otherwise, if a way to get the computed value exists, use that + if (val === undefined) { + val = curCSS(elem, name, styles); + } + + // Convert "normal" to computed value + if (val === "normal" && name in cssNormalTransform) { + val = cssNormalTransform[name]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if (extra === "" || extra) { + num = parseFloat(val); + return extra === true || isFinite(num) ? num || 0 : val; + } + return val; + } + }); + jQuery.each(["height", "width"], function (_i, dimension) { + jQuery.cssHooks[dimension] = { + get: function get(elem, computed, extra) { + if (computed) { + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test(jQuery.css(elem, "display")) && ( + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () { + return getWidthOrHeight(elem, dimension, extra); + }) : getWidthOrHeight(elem, dimension, extra); + } + }, + set: function set(elem, value, extra) { + var matches, + styles = getStyles(elem), + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", + subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if (isBorderBox && scrollboxSizeBuggy) { + subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5); + } + + // Convert to pixels if value adjustment is needed + if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") { + elem.style[dimension] = value; + value = jQuery.css(elem, dimension); + } + return setPositiveNumber(elem, value, subtract); + } + }; + }); + jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) { + if (computed) { + return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { + marginLeft: 0 + }, function () { + return elem.getBoundingClientRect().left; + })) + "px"; + } + }); + + // These hooks are used by animate to expand properties + jQuery.each({ + margin: "", + padding: "", + border: "Width" + }, function (prefix, suffix) { + jQuery.cssHooks[prefix + suffix] = { + expand: function expand(value) { + var i = 0, + expanded = {}, + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [value]; + for (; i < 4; i++) { + expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; + } + return expanded; + } + }; + if (prefix !== "margin") { + jQuery.cssHooks[prefix + suffix].set = setPositiveNumber; + } + }); + jQuery.fn.extend({ + css: function css(name, value) { + return access(this, function (elem, name, value) { + var styles, + len, + map = {}, + i = 0; + if (Array.isArray(name)) { + styles = getStyles(elem); + len = name.length; + for (; i < len; i++) { + map[name[i]] = jQuery.css(elem, name[i], false, styles); + } + return map; + } + return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name); + }, name, value, arguments.length > 1); + } + }); + + // Based off of the plugin by Clint Helfers, with permission. + jQuery.fn.delay = function (time, type) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + return this.queue(type, function (next, hooks) { + var timeout = window.setTimeout(next, time); + hooks.stop = function () { + window.clearTimeout(timeout); + }; + }); + }; + (function () { + var input = document.createElement("input"), + select = document.createElement("select"), + opt = select.appendChild(document.createElement("option")); + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement("input"); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + })(); + var boolHook, + attrHandle = jQuery.expr.attrHandle; + jQuery.fn.extend({ + attr: function attr(name, value) { + return access(this, jQuery.attr, name, value, arguments.length > 1); + }, + removeAttr: function removeAttr(name) { + return this.each(function () { + jQuery.removeAttr(this, name); + }); + } + }); + jQuery.extend({ + attr: function attr(elem, name, value) { + var ret, + hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if (nType === 3 || nType === 8 || nType === 2) { + return; + } + + // Fallback to prop when attributes are not supported + if (typeof elem.getAttribute === "undefined") { + return jQuery.prop(elem, name, value); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if (nType !== 1 || !jQuery.isXMLDoc(elem)) { + hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined); + } + if (value !== undefined) { + if (value === null) { + jQuery.removeAttr(elem, name); + return; + } + if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) { + return ret; + } + elem.setAttribute(name, value + ""); + return value; + } + if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { + return ret; + } + ret = jQuery.find.attr(elem, name); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + attrHooks: { + type: { + set: function set(elem, value) { + if (!support.radioValue && value === "radio" && nodeName(elem, "input")) { + var val = elem.value; + elem.setAttribute("type", value); + if (val) { + elem.value = val; + } + return value; + } + } + } + }, + removeAttr: function removeAttr(elem, value) { + var name, + i = 0, + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match(rnothtmlwhite); + if (attrNames && elem.nodeType === 1) { + while (name = attrNames[i++]) { + elem.removeAttribute(name); + } + } + } + }); + + // Hooks for boolean attributes + boolHook = { + set: function set(elem, value, name) { + if (value === false) { + // Remove boolean attributes when set to false + jQuery.removeAttr(elem, name); + } else { + elem.setAttribute(name, name); + } + return name; + } + }; + jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (_i, name) { + var getter = attrHandle[name] || jQuery.find.attr; + attrHandle[name] = function (elem, name, isXML) { + var ret, + handle, + lowercaseName = name.toLowerCase(); + if (!isXML) { + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[lowercaseName]; + attrHandle[lowercaseName] = ret; + ret = getter(elem, name, isXML) != null ? lowercaseName : null; + attrHandle[lowercaseName] = handle; + } + return ret; + }; + }); + var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + jQuery.fn.extend({ + prop: function prop(name, value) { + return access(this, jQuery.prop, name, value, arguments.length > 1); + }, + removeProp: function removeProp(name) { + return this.each(function () { + delete this[jQuery.propFix[name] || name]; + }); + } + }); + jQuery.extend({ + prop: function prop(elem, name, value) { + var ret, + hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if (nType === 3 || nType === 8 || nType === 2) { + return; + } + if (nType !== 1 || !jQuery.isXMLDoc(elem)) { + // Fix name and attach hooks + name = jQuery.propFix[name] || name; + hooks = jQuery.propHooks[name]; + } + if (value !== undefined) { + if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) { + return ret; + } + return elem[name] = value; + } + if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { + return ret; + } + return elem[name]; + }, + propHooks: { + tabIndex: { + get: function get(elem) { + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // Use proper attribute retrieval (trac-12072) + var tabindex = jQuery.find.attr(elem, "tabindex"); + if (tabindex) { + return parseInt(tabindex, 10); + } + if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) { + return 0; + } + return -1; + } + } + }, + propFix: { + "for": "htmlFor", + "class": "className" + } + }); + + // Support: IE <=11 only + // Accessing the selectedIndex property + // forces the browser to respect setting selected + // on the option + // The getter ensures a default option is selected + // when in an optgroup + // eslint rule "no-unused-expressions" is disabled for this code + // since it considers such accessions noop + if (!support.optSelected) { + jQuery.propHooks.selected = { + get: function get(elem) { + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if (parent && parent.parentNode) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function set(elem) { + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if (parent) { + parent.selectedIndex; + if (parent.parentNode) { + parent.parentNode.selectedIndex; + } + } + } + }; + } + jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () { + jQuery.propFix[this.toLowerCase()] = this; + }); + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse(value) { + var tokens = value.match(rnothtmlwhite) || []; + return tokens.join(" "); + } + function getClass(elem) { + return elem.getAttribute && elem.getAttribute("class") || ""; + } + function classesToArray(value) { + if (Array.isArray(value)) { + return value; + } + if (typeof value === "string") { + return value.match(rnothtmlwhite) || []; + } + return []; + } + jQuery.fn.extend({ + addClass: function addClass(value) { + var classNames, cur, curValue, className, i, finalValue; + if (isFunction(value)) { + return this.each(function (j) { + jQuery(this).addClass(value.call(this, j, getClass(this))); + }); + } + classNames = classesToArray(value); + if (classNames.length) { + return this.each(function () { + curValue = getClass(this); + cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; + if (cur) { + for (i = 0; i < classNames.length; i++) { + className = classNames[i]; + if (cur.indexOf(" " + className + " ") < 0) { + cur += className + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse(cur); + if (curValue !== finalValue) { + this.setAttribute("class", finalValue); + } + } + }); + } + return this; + }, + removeClass: function removeClass(value) { + var classNames, cur, curValue, className, i, finalValue; + if (isFunction(value)) { + return this.each(function (j) { + jQuery(this).removeClass(value.call(this, j, getClass(this))); + }); + } + if (!arguments.length) { + return this.attr("class", ""); + } + classNames = classesToArray(value); + if (classNames.length) { + return this.each(function () { + curValue = getClass(this); + + // This expression is here for better compressibility (see addClass) + cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; + if (cur) { + for (i = 0; i < classNames.length; i++) { + className = classNames[i]; + + // Remove *all* instances + while (cur.indexOf(" " + className + " ") > -1) { + cur = cur.replace(" " + className + " ", " "); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse(cur); + if (curValue !== finalValue) { + this.setAttribute("class", finalValue); + } + } + }); + } + return this; + }, + toggleClass: function toggleClass(value, stateVal) { + var classNames, + className, + i, + self, + type = _typeof(value), + isValidValue = type === "string" || Array.isArray(value); + if (isFunction(value)) { + return this.each(function (i) { + jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal); + }); + } + if (typeof stateVal === "boolean" && isValidValue) { + return stateVal ? this.addClass(value) : this.removeClass(value); + } + classNames = classesToArray(value); + return this.each(function () { + if (isValidValue) { + // Toggle individual class names + self = jQuery(this); + for (i = 0; i < classNames.length; i++) { + className = classNames[i]; + + // Check each className given, space separated list + if (self.hasClass(className)) { + self.removeClass(className); + } else { + self.addClass(className); + } + } + + // Toggle whole class name + } else if (value === undefined || type === "boolean") { + className = getClass(this); + if (className) { + // Store className if set + dataPriv.set(this, "__className__", className); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if (this.setAttribute) { + this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || ""); + } + } + }); + }, + hasClass: function hasClass(selector) { + var className, + elem, + i = 0; + className = " " + selector + " "; + while (elem = this[i++]) { + if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) { + return true; + } + } + return false; + } + }); + var rreturn = /\r/g; + jQuery.fn.extend({ + val: function val(value) { + var hooks, + ret, + valueIsFunction, + elem = this[0]; + if (!arguments.length) { + if (elem) { + hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()]; + if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) { + return ret; + } + ret = elem.value; + + // Handle most common string cases + if (typeof ret === "string") { + return ret.replace(rreturn, ""); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + return; + } + valueIsFunction = isFunction(value); + return this.each(function (i) { + var val; + if (this.nodeType !== 1) { + return; + } + if (valueIsFunction) { + val = value.call(this, i, jQuery(this).val()); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if (val == null) { + val = ""; + } else if (typeof val === "number") { + val += ""; + } else if (Array.isArray(val)) { + val = jQuery.map(val, function (value) { + return value == null ? "" : value + ""; + }); + } + hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; + + // If set returns undefined, fall back to normal setting + if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) { + this.value = val; + } + }); + } + }); + jQuery.extend({ + valHooks: { + option: { + get: function get(elem) { + var val = jQuery.find.attr(elem, "value"); + return val != null ? val : + // Support: IE <=10 - 11 only + // option.text throws exceptions (trac-14686, trac-14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse(jQuery.text(elem)); + } + }, + select: { + get: function get(elem) { + var value, + option, + i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + if (index < 0) { + i = max; + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for (; i < max; i++) { + option = options[i]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (trac-2551) + if ((option.selected || i === index) && + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) { + // Get the specific value for the option + value = jQuery(option).val(); + + // We don't need an array for one selects + if (one) { + return value; + } + + // Multi-Selects return an array + values.push(value); + } + } + return values; + }, + set: function set(elem, value) { + var optionSet, + option, + options = elem.options, + values = jQuery.makeArray(value), + i = options.length; + while (i--) { + option = options[i]; + + /* eslint-disable no-cond-assign */ + + if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if (!optionSet) { + elem.selectedIndex = -1; + } + return values; + } + } + } + }); + + // Radios and checkboxes getter/setter + jQuery.each(["radio", "checkbox"], function () { + jQuery.valHooks[this] = { + set: function set(elem, value) { + if (Array.isArray(value)) { + return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1; + } + } + }; + if (!support.checkOn) { + jQuery.valHooks[this].get = function (elem) { + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } + }); + + // Return jQuery for attributes-only inclusion + + // Cross-browser xml parsing + jQuery.parseXML = function (data) { + var xml, parserErrorElem; + if (!data || typeof data !== "string") { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = new window.DOMParser().parseFromString(data, "text/xml"); + } catch (e) {} + parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0]; + if (!xml || parserErrorElem) { + jQuery.error("Invalid XML: " + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) { + return el.textContent; + }).join("\n") : data)); + } + return xml; + }; + var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function stopPropagationCallback(e) { + e.stopPropagation(); + }; + jQuery.extend(jQuery.event, { + trigger: function trigger(event, data, elem, onlyHandlers) { + var i, + cur, + tmp, + bubbleType, + ontype, + handle, + special, + lastElement, + eventPath = [elem || document], + type = hasOwn.call(event, "type") ? event.type : event, + namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if (elem.nodeType === 3 || elem.nodeType === 8) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if (rfocusMorph.test(type + jQuery.event.triggered)) { + return; + } + if (type.indexOf(".") > -1) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === "object" && event); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Clean up the event in case it is being reused + event.result = undefined; + if (!event.target) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? [event] : jQuery.makeArray(data, [event]); + + // Allow special events to draw outside the lines + special = jQuery.event.special[type] || {}; + if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (trac-9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) + if (!onlyHandlers && !special.noBubble && !isWindow(elem)) { + bubbleType = special.delegateType || type; + if (!rfocusMorph.test(bubbleType + type)) { + cur = cur.parentNode; + } + for (; cur; cur = cur.parentNode) { + eventPath.push(cur); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if (tmp === (elem.ownerDocument || document)) { + eventPath.push(tmp.defaultView || tmp.parentWindow || window); + } + } + + // Fire handlers on the event path + i = 0; + while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { + lastElement = cur; + event.type = i > 1 ? bubbleType : special.bindType || type; + + // jQuery handler + handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle"); + if (handle) { + handle.apply(cur, data); + } + + // Native handler + handle = ontype && cur[ontype]; + if (handle && handle.apply && acceptData(cur)) { + event.result = handle.apply(cur, data); + if (event.result === false) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if (!onlyHandlers && !event.isDefaultPrevented()) { + if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (trac-6170) + if (ontype && isFunction(elem[type]) && !isWindow(elem)) { + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ontype]; + if (tmp) { + elem[ontype] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + if (event.isPropagationStopped()) { + lastElement.addEventListener(type, stopPropagationCallback); + } + elem[type](); + if (event.isPropagationStopped()) { + lastElement.removeEventListener(type, stopPropagationCallback); + } + jQuery.event.triggered = undefined; + if (tmp) { + elem[ontype] = tmp; + } + } + } + } + return event.result; + }, + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function simulate(type, elem, event) { + var e = jQuery.extend(new jQuery.Event(), event, { + type: type, + isSimulated: true + }); + jQuery.event.trigger(e, null, elem); + } + }); + jQuery.fn.extend({ + trigger: function trigger(type, data) { + return this.each(function () { + jQuery.event.trigger(type, data, this); + }); + }, + triggerHandler: function triggerHandler(type, data) { + var elem = this[0]; + if (elem) { + return jQuery.event.trigger(type, data, elem, true); + } + } + }); + var rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + function buildParams(prefix, obj, traditional, add) { + var name; + if (Array.isArray(obj)) { + // Serialize array item. + jQuery.each(obj, function (i, v) { + if (traditional || rbracket.test(prefix)) { + // Treat each array item as a scalar. + add(prefix, v); + } else { + // Item is non-scalar (array or object), encode its numeric index. + buildParams(prefix + "[" + (_typeof(v) === "object" && v != null ? i : "") + "]", v, traditional, add); + } + }); + } else if (!traditional && toType(obj) === "object") { + // Serialize object item. + for (name in obj) { + buildParams(prefix + "[" + name + "]", obj[name], traditional, add); + } + } else { + // Serialize scalar item. + add(prefix, obj); + } + } + + // Serialize an array of form elements or a set of + // key/values into a query string + jQuery.param = function (a, traditional) { + var prefix, + s = [], + add = function add(key, valueOrFunction) { + // If value is a function, invoke it and use its return value + var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction; + s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value); + }; + if (a == null) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) { + // Serialize the form elements + jQuery.each(a, function () { + add(this.name, this.value); + }); + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for (prefix in a) { + buildParams(prefix, a[prefix], traditional, add); + } + } + + // Return the resulting serialization + return s.join("&"); + }; + jQuery.fn.extend({ + serialize: function serialize() { + return jQuery.param(this.serializeArray()); + }, + serializeArray: function serializeArray() { + return this.map(function () { + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop(this, "elements"); + return elements ? jQuery.makeArray(elements) : this; + }).filter(function () { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); + }).map(function (_i, elem) { + var val = jQuery(this).val(); + if (val == null) { + return null; + } + if (Array.isArray(val)) { + return jQuery.map(val, function (val) { + return { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }); + } + return { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }).get(); + } + }); + jQuery.fn.extend({ + wrapAll: function wrapAll(html) { + var wrap; + if (this[0]) { + if (isFunction(html)) { + html = html.call(this[0]); + } + + // The elements to wrap the target around + wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true); + if (this[0].parentNode) { + wrap.insertBefore(this[0]); + } + wrap.map(function () { + var elem = this; + while (elem.firstElementChild) { + elem = elem.firstElementChild; + } + return elem; + }).append(this); + } + return this; + }, + wrapInner: function wrapInner(html) { + if (isFunction(html)) { + return this.each(function (i) { + jQuery(this).wrapInner(html.call(this, i)); + }); + } + return this.each(function () { + var self = jQuery(this), + contents = self.contents(); + if (contents.length) { + contents.wrapAll(html); + } else { + self.append(html); + } + }); + }, + wrap: function wrap(html) { + var htmlIsFunction = isFunction(html); + return this.each(function (i) { + jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html); + }); + }, + unwrap: function unwrap(selector) { + this.parent(selector).not("body").each(function () { + jQuery(this).replaceWith(this.childNodes); + }); + return this; + } + }); + jQuery.expr.pseudos.hidden = function (elem) { + return !jQuery.expr.pseudos.visible(elem); + }; + jQuery.expr.pseudos.visible = function (elem) { + return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); + }; + + // Support: Safari 8 only + // In Safari 8 documents created via document.implementation.createHTMLDocument + // collapse sibling forms: the second one becomes a child of the first one. + // Because of that, this security measure has to be disabled in Safari 8. + // https://bugs.webkit.org/show_bug.cgi?id=137337 + support.createHTMLDocument = function () { + var body = document.implementation.createHTMLDocument("").body; + body.innerHTML = "
"; + return body.childNodes.length === 2; + }(); + + // Argument "data" should be string of html + // context (optional): If specified, the fragment will be created in this context, + // defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + jQuery.parseHTML = function (data, context, keepScripts) { + if (typeof data !== "string") { + return []; + } + if (typeof context === "boolean") { + keepScripts = context; + context = false; + } + var base, parsed, scripts; + if (!context) { + // Stop scripts or inline event handlers from being executed immediately + // by using document.implementation + if (support.createHTMLDocument) { + context = document.implementation.createHTMLDocument(""); + + // Set the base href for the created document + // so any parsed elements with URLs + // are based on the document's URL (gh-2965) + base = context.createElement("base"); + base.href = document.location.href; + context.head.appendChild(base); + } else { + context = document; + } + } + parsed = rsingleTag.exec(data); + scripts = !keepScripts && []; + + // Single tag + if (parsed) { + return [context.createElement(parsed[1])]; + } + parsed = buildFragment([data], context, scripts); + if (scripts && scripts.length) { + jQuery(scripts).remove(); + } + return jQuery.merge([], parsed.childNodes); + }; + jQuery.offset = { + setOffset: function setOffset(elem, options, i) { + var curPosition, + curLeft, + curCSSTop, + curTop, + curOffset, + curCSSLeft, + calculatePosition, + position = jQuery.css(elem, "position"), + curElem = jQuery(elem), + props = {}; + + // Set position first, in-case top/left are set even on static elem + if (position === "static") { + elem.style.position = "relative"; + } + curOffset = curElem.offset(); + curCSSTop = jQuery.css(elem, "top"); + curCSSLeft = jQuery.css(elem, "left"); + calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; + + // Need to be able to calculate position if either + // top or left is auto and position is either absolute or fixed + if (calculatePosition) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat(curCSSTop) || 0; + curLeft = parseFloat(curCSSLeft) || 0; + } + if (isFunction(options)) { + // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) + options = options.call(elem, i, jQuery.extend({}, curOffset)); + } + if (options.top != null) { + props.top = options.top - curOffset.top + curTop; + } + if (options.left != null) { + props.left = options.left - curOffset.left + curLeft; + } + if ("using" in options) { + options.using.call(elem, props); + } else { + curElem.css(props); + } + } + }; + jQuery.fn.extend({ + // offset() relates an element's border box to the document origin + offset: function offset(options) { + // Preserve chaining for setter + if (arguments.length) { + return options === undefined ? this : this.each(function (i) { + jQuery.offset.setOffset(this, options, i); + }); + } + var rect, + win, + elem = this[0]; + if (!elem) { + return; + } + + // Return zeros for disconnected and hidden (display: none) elements (gh-2310) + // Support: IE <=11 only + // Running getBoundingClientRect on a + // disconnected node in IE throws an error + if (!elem.getClientRects().length) { + return { + top: 0, + left: 0 + }; + } + + // Get document-relative position by adding viewport scroll to viewport-relative gBCR + rect = elem.getBoundingClientRect(); + win = elem.ownerDocument.defaultView; + return { + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset + }; + }, + // position() relates an element's margin box to its offset parent's padding box + // This corresponds to the behavior of CSS absolute positioning + position: function position() { + if (!this[0]) { + return; + } + var offsetParent, + offset, + doc, + elem = this[0], + parentOffset = { + top: 0, + left: 0 + }; + + // position:fixed elements are offset from the viewport, which itself always has zero offset + if (jQuery.css(elem, "position") === "fixed") { + // Assume position:fixed implies availability of getBoundingClientRect + offset = elem.getBoundingClientRect(); + } else { + offset = this.offset(); + + // Account for the *real* offset parent, which can be the document or its root element + // when a statically positioned element is identified + doc = elem.ownerDocument; + offsetParent = elem.offsetParent || doc.documentElement; + while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.parentNode; + } + if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { + // Incorporate borders into its offset, since they are outside its content origin + parentOffset = jQuery(offsetParent).offset(); + parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true); + parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true); + } + } + + // Subtract parent offsets and element margins + return { + top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true), + left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true) + }; + }, + // This method will return documentElement in the following cases: + // 1) For the element inside the iframe without offsetParent, this method will return + // documentElement of the parent window + // 2) For the hidden or detached element + // 3) For body or html element, i.e. in case of the html node - it will return itself + // + // but those exceptions were never presented as a real life use-cases + // and might be considered as more preferable results. + // + // This logic, however, is not guaranteed and can change at any point in the future + offsetParent: function offsetParent() { + return this.map(function () { + var offsetParent = this.offsetParent; + while (offsetParent && jQuery.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || documentElement; + }); + } + }); + + // Create scrollLeft and scrollTop methods + jQuery.each({ + scrollLeft: "pageXOffset", + scrollTop: "pageYOffset" + }, function (method, prop) { + var top = "pageYOffset" === prop; + jQuery.fn[method] = function (val) { + return access(this, function (elem, method, val) { + // Coalesce documents and windows + var win; + if (isWindow(elem)) { + win = elem; + } else if (elem.nodeType === 9) { + win = elem.defaultView; + } + if (val === undefined) { + return win ? win[prop] : elem[method]; + } + if (win) { + win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset); + } else { + elem[method] = val; + } + }, method, val, arguments.length); + }; + }); + + // Support: Safari <=7 - 9.1, Chrome <=37 - 49 + // Add the top/left cssHooks using jQuery.fn.position + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 + // getComputedStyle returns percent when specified for top/left/bottom/right; + // rather than make the css module depend on the offset module, just check for it here + jQuery.each(["top", "left"], function (_i, prop) { + jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) { + if (computed) { + computed = curCSS(elem, prop); + + // If curCSS returns percentage, fallback to offset + return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed; + } + }); + }); + + // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods + jQuery.each({ + Height: "height", + Width: "width" + }, function (name, type) { + jQuery.each({ + padding: "inner" + name, + content: type, + "": "outer" + name + }, function (defaultExtra, funcName) { + // Margin is only for outerHeight, outerWidth + jQuery.fn[funcName] = function (margin, value) { + var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), + extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); + return access(this, function (elem, type, value) { + var doc; + if (isWindow(elem)) { + // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) + return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name]; + } + + // Get document width or height + if (elem.nodeType === 9) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], + // whichever is greatest + return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]); + } + return value === undefined ? + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css(elem, type, extra) : + // Set width or height on the element + jQuery.style(elem, type, value, extra); + }, type, chainable ? margin : undefined, chainable); + }; + }); + }); + jQuery.fn.extend({ + bind: function bind(types, data, fn) { + return this.on(types, null, data, fn); + }, + unbind: function unbind(types, fn) { + return this.off(types, null, fn); + }, + delegate: function delegate(selector, types, data, fn) { + return this.on(types, selector, data, fn); + }, + undelegate: function undelegate(selector, types, fn) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn); + }, + hover: function hover(fnOver, fnOut) { + return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); + } + }); + jQuery.each(("blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu").split(" "), function (_i, name) { + // Handle event binding + jQuery.fn[name] = function (data, fn) { + return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name); + }; + }); + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + // Require that the "whitespace run" starts from a non-whitespace + // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. + var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; + + // Bind a function to a context, optionally partially applying any + // arguments. + // jQuery.proxy is deprecated to promote standards (specifically Function#bind) + // However, it is not slated for removal any time soon + jQuery.proxy = function (fn, context) { + var tmp, args, proxy; + if (typeof context === "string") { + tmp = fn[context]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if (!isFunction(fn)) { + return undefined; + } + + // Simulated bind + args = _slice.call(arguments, 2); + proxy = function proxy() { + return fn.apply(context || this, args.concat(_slice.call(arguments))); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + return proxy; + }; + jQuery.holdReady = function (hold) { + if (hold) { + jQuery.readyWait++; + } else { + jQuery.ready(true); + } + }; + jQuery.isArray = Array.isArray; + jQuery.parseJSON = JSON.parse; + jQuery.nodeName = nodeName; + jQuery.isFunction = isFunction; + jQuery.isWindow = isWindow; + jQuery.camelCase = camelCase; + jQuery.type = toType; + jQuery.now = Date.now; + jQuery.isNumeric = function (obj) { + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type(obj); + return (type === "number" || type === "string") && + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN(obj - parseFloat(obj)); + }; + jQuery.trim = function (text) { + return text == null ? "" : (text + "").replace(rtrim, "$1"); + }; + + // Register as a named AMD module, since jQuery can be concatenated with other + // files that may use define, but not via a proper concatenation script that + // understands anonymous AMD modules. A named AMD is safest and most robust + // way to register. Lowercase jquery is used because AMD module names are + // derived from file names, and jQuery is normally delivered in a lowercase + // file name. Do this after creating the global so that if an AMD module wants + // to call noConflict to hide this version of jQuery, it will work. + + // Note that for maximum portability, libraries that are not jQuery should + // declare themselves as anonymous modules, and avoid setting a global if an + // AMD loader is present. jQuery is a special case. For more information, see + // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon + + if (typeof define === "function" && define.amd) { + define("jquery", [], function () { + return jQuery; + }); + } + var + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + // Map over the $ in case of overwrite + _$ = window.$; + jQuery.noConflict = function (deep) { + if (window.$ === jQuery) { + window.$ = _$; + } + if (deep && window.jQuery === jQuery) { + window.jQuery = _jQuery; + } + return jQuery; + }; + + // Expose jQuery and $ identifiers, even in AMD + // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557) + // and CommonJS for browser emulators (trac-13566) + if (typeof noGlobal === "undefined") { + window.jQuery = window.$ = jQuery; + } + return jQuery; + }); + + /** + * Converter module for jQuery. See https://stackoverflow.com/questions/34338411/how-to-import-jquery-using-es6-syntax + */ + + var $$e = window.$; + + var apply$1 = functionApply; + var call$1 = functionCall; + var uncurryThis$3 = functionUncurryThis; + var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic; + var anObject$2 = anObject$o; + var isNullOrUndefined = isNullOrUndefined$b; + var isRegExp$1 = isRegexp; + var requireObjectCoercible$1 = requireObjectCoercible$b; + var speciesConstructor = speciesConstructor$4; + var advanceStringIndex = advanceStringIndex$3; + var toLength$1 = toLength$a; + var toString$2 = toString$m; + var getMethod = getMethod$8; + var arraySlice$1 = arraySliceSimple; + var callRegExpExec = regexpExecAbstract; + var regexpExec = regexpExec$3; + var stickyHelpers = regexpStickyHelpers; + var fails$5 = fails$T; + + var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; + var MAX_UINT32 = 0xFFFFFFFF; + var min$1 = Math.min; + var $push = [].push; + var exec$1 = uncurryThis$3(/./.exec); + var push = uncurryThis$3($push); + var stringSlice$2 = uncurryThis$3(''.slice); + + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + // Weex JS has frozen built-in prototypes, so use try / catch wrapper + var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$5(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; + }); + + // @@split logic + fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] == 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length != 4 || + 'ab'.split(/(?:ab)*/).length != 2 || + '.'.split(/(.?)(.?)/).length != 4 || + // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = toString$2(requireObjectCoercible$1(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; + // If `separator` is not a regex, use native split + if (!isRegExp$1(separator)) { + return call$1(nativeSplit, string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = call$1(regexpExec, separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + push(output, stringSlice$2(string, lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) apply$1($push, output, arraySlice$1(match, 1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !exec$1(separatorCopy, '')) push(output, ''); + } else push(output, stringSlice$2(string, lastLastIndex)); + return output.length > lim ? arraySlice$1(output, 0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : call$1(nativeSplit, this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible$1(this); + var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT); + return splitter + ? call$1(splitter, separator, O, limit) + : call$1(internalSplit, toString$2(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (string, limit) { + var rx = anObject$2(this); + var S = toString$2(string); + var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); + + if (res.done) return res.value; + + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (UNSUPPORTED_Y ? 'g' : 'y'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; + var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice$2(S, q) : S); + var e; + if ( + z === null || + (e = min$1(toLength$1(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + push(A, stringSlice$2(S, p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + push(A, z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + push(A, stringSlice$2(S, p)); + return A; + } + ]; + }, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); + + var isRegExp = isRegexp; + + var $TypeError = TypeError; + + var notARegexp = function (it) { + if (isRegExp(it)) { + throw $TypeError("The method doesn't accept regular expressions"); + } return it; + }; + + var wellKnownSymbol = wellKnownSymbol$v; + + var MATCH = wellKnownSymbol('match'); + + var correctIsRegexpLogic = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; + }; + + var $$d = _export; + var uncurryThis$2 = functionUncurryThisClause; + var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; + var toLength = toLength$a; + var toString$1 = toString$m; + var notARegExp = notARegexp; + var requireObjectCoercible = requireObjectCoercible$b; + var correctIsRegExpLogic = correctIsRegexpLogic; + + // eslint-disable-next-line es/no-string-prototype-startswith -- safe + var nativeStartsWith = uncurryThis$2(''.startsWith); + var stringSlice$1 = uncurryThis$2(''.slice); + var min = Math.min; + + var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); + // https://github.com/zloirock/core-js/pull/702 + var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; + }(); + + // `String.prototype.startsWith` method + // https://tc39.es/ecma262/#sec-string.prototype.startswith + $$d({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = toString$1(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = toString$1(searchString); + return nativeStartsWith + ? nativeStartsWith(that, search, index) + : stringSlice$1(that, index, index + search.length) === search; + } + }); + + var createTypedArrayConstructor$6 = typedArrayConstructorExports; + + // `Int8Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$6('Int8', function (init) { + return function Int8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var $$c = _export; + var global$8 = global$M; + var arrayBufferModule = arrayBuffer; + var setSpecies = setSpecies$5; + + var ARRAY_BUFFER = 'ArrayBuffer'; + var ArrayBuffer$1 = arrayBufferModule[ARRAY_BUFFER]; + var NativeArrayBuffer = global$8[ARRAY_BUFFER]; + + // `ArrayBuffer` constructor + // https://tc39.es/ecma262/#sec-arraybuffer-constructor + $$c({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer$1 }, { + ArrayBuffer: ArrayBuffer$1 + }); + + setSpecies(ARRAY_BUFFER); + + var global$7 = global$M; + + var globalIsFinite = global$7.isFinite; + + // `Number.isFinite` method + // https://tc39.es/ecma262/#sec-number.isfinite + // eslint-disable-next-line es/no-number-isfinite -- safe + var numberIsFinite$1 = Number.isFinite || function isFinite(it) { + return typeof it == 'number' && globalIsFinite(it); + }; + + var $$b = _export; + var numberIsFinite = numberIsFinite$1; + + // `Number.isFinite` method + // https://tc39.es/ecma262/#sec-number.isfinite + $$b({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); + + var $$a = _export; + var IS_PURE = isPure; + var DESCRIPTORS$3 = descriptors; + var global$6 = global$M; + var path = path$2; + var uncurryThis$1 = functionUncurryThis; + var isForced = isForced_1; + var hasOwn$3 = hasOwnProperty_1; + var inheritIfRequired$1 = inheritIfRequired$6; + var isPrototypeOf = objectIsPrototypeOf; + var isSymbol = isSymbol$6; + var toPrimitive = toPrimitive$3; + var fails$4 = fails$T; + var getOwnPropertyNames = objectGetOwnPropertyNames.f; + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + var defineProperty$2 = objectDefineProperty.f; + var thisNumberValue = thisNumberValue$2; + var trim = stringTrim.trim; + + var NUMBER = 'Number'; + var NativeNumber = global$6[NUMBER]; + path[NUMBER]; + var NumberPrototype = NativeNumber.prototype; + var TypeError$1 = global$6.TypeError; + var stringSlice = uncurryThis$1(''.slice); + var charCodeAt = uncurryThis$1(''.charCodeAt); + + // `ToNumeric` abstract operation + // https://tc39.es/ecma262/#sec-tonumeric + var toNumeric = function (value) { + var primValue = toPrimitive(value, 'number'); + return typeof primValue == 'bigint' ? primValue : toNumber(primValue); + }; + + // `ToNumber` abstract operation + // https://tc39.es/ecma262/#sec-tonumber + var toNumber = function (argument) { + var it = toPrimitive(argument, 'number'); + var first, third, radix, maxCode, digits, length, index, code; + if (isSymbol(it)) throw TypeError$1('Cannot convert a Symbol value to a number'); + if (typeof it == 'string' && it.length > 2) { + it = trim(it); + first = charCodeAt(it, 0); + if (first === 43 || first === 45) { + third = charCodeAt(it, 2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (charCodeAt(it, 1)) { + case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i + case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i + default: return +it; + } + digits = stringSlice(it, 2); + length = digits.length; + for (index = 0; index < length; index++) { + code = charCodeAt(digits, index); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; + }; + + var FORCED$1 = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1')); + + var calledWithNew = function (dummy) { + // includes check on 1..constructor(foo) case + return isPrototypeOf(NumberPrototype, dummy) && fails$4(function () { thisNumberValue(dummy); }); + }; + + // `Number` constructor + // https://tc39.es/ecma262/#sec-number-constructor + var NumberWrapper = function Number(value) { + var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value)); + return calledWithNew(this) ? inheritIfRequired$1(Object(n), this, NumberWrapper) : n; + }; + + NumberWrapper.prototype = NumberPrototype; + if (FORCED$1 && !IS_PURE) NumberPrototype.constructor = NumberWrapper; + + $$a({ global: true, constructor: true, wrap: true, forced: FORCED$1 }, { + Number: NumberWrapper + }); + + // Use `internal/copy-constructor-properties` helper in `core-js@4` + var copyConstructorProperties = function (target, source) { + for (var keys = DESCRIPTORS$3 ? getOwnPropertyNames(source) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES2015 (in case, if modules with ES2015 Number statics required before): + 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + + // ESNext + 'fromString,range' + ).split(','), j = 0, key; keys.length > j; j++) { + if (hasOwn$3(source, key = keys[j]) && !hasOwn$3(target, key)) { + defineProperty$2(target, key, getOwnPropertyDescriptor(source, key)); + } + } + }; + if (FORCED$1 || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber); + + /** + * util.js : Utility functions + * + * Copyright 2013-2023 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 + */ + + var regExpFindStringParts = /(?:^|.+?)(?:[\s$£€\uFFE5^+=`~<>{}[\]|\u3000-\u303F!-#%-\x2A,-/:;\x3F@\x5B-\x5D_\x7B}\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E3B\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+|$)/g; + + /** + * Generates an array of strings with all possible combinations of first-letter or all-letter case transformations + * If caseMatchType is not 'full', then only combinations of first-letter cases for each word are calculated + * If caseMatchType is 'full', then all-uppercase combinations of each word are added to the variations array + * NB may produce duplicate strings if string begins with punctuation or if it is in a language with no case + * @param {String} string The string to be converted + * @param {String} caseMatchType ('basic'|'full') The type (complexity) of case variations to calculate + * @return {Array} An array containing strings with all possible combinations of case types + */ + function allCaseFirstLetters(string, caseMatchType) { + if (string) { + var comboArray = []; + // Split string into parts beginning with first word letters + var strParts = string.match(regExpFindStringParts); + // Prevent a full search if we have more than 6 string parts + if (strParts.length > 6) caseMatchType = 'basic'; + // Set the base (binary or ternary) according to the complexity of the search + var base = caseMatchType === 'full' ? 3 : 2; + // If n = strParts.length, then the number of possible case combinations (numCombos) is base ^ n + // For *basic* case calculation: think of numCombos as a binary number of n bits, with each bit representing lcase (0) or ucase (1) + // For *full* case calculation: think of numCombos as a tertiary base number, e.g. 000, 111, 222, + // with each bit representing all-lowercase (0), First-Letter-Uppercase (1) or ALL-UPPERCASE (2) + var numCombos = Math.pow(base, strParts.length); + // Prevent more than 1024 combinations (2^10) being calculated + if (numCombos > 1024) numCombos = 1024; + var typeCase, mixedTypeCaseStr, bitmask, caseBit; + // Iterate through every possible combination, starting with (base ^ n) - 1 and decreasing; we go from high to low, + // because title case (e.g. binary 1111) is more common than all lowercase (0000) so will be found first + for (var i = numCombos; i--;) { + mixedTypeCaseStr = ''; + bitmask = 1; + for (var j = 0; j < strParts.length; j++) { + // Get modulus of division (this is equivalent to bitwise AND for different bases) + // caseBit will be 0, 1 or 2 (latter only for 'full' case calcualation) + caseBit = ~~(i / bitmask % base); + if (caseBit === 2) { + // All uppercase + typeCase = strParts[j].toLocaleUpperCase(); + } else { + // Modify only first letter + typeCase = strParts[j].replace(/^./, function (m) { + // 1 = uppercase, 0 = lowercase + return caseBit ? m.toLocaleUpperCase() : m.toLocaleLowerCase(); + }); + } + mixedTypeCaseStr += typeCase; + // Shift bitmask to the next higher bit + bitmask *= base; + } + comboArray.push(mixedTypeCaseStr); + } + return comboArray; + } else { + return [string]; + } + } + + /** + * Generates an array of Strings, where all duplicates have been removed + * (without changing the order) + * It is optimized for small arrays. + * Source : http://codereview.stackexchange.com/questions/60128/removing-duplicates-from-an-array-quickly + * @param {Array} array of String + * @returns {Array} same array of Strings, without duplicates + */ + function removeDuplicateStringsInSmallArray(array) { + var unique = []; + for (var i = 0; i < array.length; i++) { + var current = array[i]; + if (unique.indexOf(current) < 0) { + unique.push(current); + } + } + return unique; + } + + /** + * Utility function : return true if the given string ends with the suffix + * @param {String} str + * @param {String} suffix + * @returns {Boolean} + */ + function endsWith(str, suffix) { + return str.indexOf(suffix, str.length - suffix.length) !== -1; + } + + /** + * Read a float encoded in 2 bytes + * @param {Array} byteArray + * @param {Integer} firstIndex + * @param {Boolean} littleEndian (optional) + * @returns {Float} + */ + function readFloatFrom4Bytes(byteArray, firstIndex, littleEndian) { + var dataView = new DataView(byteArray.buffer, firstIndex, 4); + var float = dataView.getFloat32(0, littleEndian); + return float; + } + + /** + * Reads a Uint8Array from the given file starting at byte offset begin until end + * @param {File} file The file object to be read + * @param {Integer} begin The offset in at which to begin reading + * @param {Integer} end The byte at whcih to stop reading (reads up to and including end - 1) + * @returns {Promise} A Promise for an array buffer with the read data + */ + function readFileSlice(file, begin, end) { + if (file.slice && 'arrayBuffer' in Blob.prototype) { + // DEV: This method uses the native arrayBuffer method of Blob, if available, as it eliminates + // the need to use FileReader and set up event listeners; it also uses the method's native Promise + // rather than setting up potentially hundreds of new Q promises for small byte range reads + // Also uses Native FS handle + return file.slice(begin, end).arrayBuffer().then(function (buffer) { + return new Uint8Array(buffer); + }); + } else { + return new Promise(function (resolve, reject) { + if (file.readMode === 'electron') { + // We are reading a packaged file and have to use Electron fs.read (so we don't have to pick the file) + fs.open(file.path, 'r', function (err, fd) { + if (err) { + reject(err); + } else { + var size = end - begin; + var arr = typeof Buffer !== 'undefined' && Buffer.alloc(size) || new Uint8Array(size); + fs.read(fd, arr, 0, size, begin, function (err, bytesRead, data) { + if (err) reject(err); + fs.close(fd, function (err) { + if (err) reject(err);else return resolve(data); + }); + }); + } + }); + } else { + var reader = new FileReader(); + reader.readAsArrayBuffer(file.slice(begin, end)); + reader.addEventListener('load', function (e) { + resolve(new Uint8Array(e.target.result)); + }); + reader.addEventListener('error', reject); + reader.addEventListener('abort', reject); + } + }); + } + } + + /** + * Performs a binary search on indices begin <= i < end, utilizing query(i) to return where to + * continue the search. + * If lowerBound is not set, returns only indices where query returns 0 and null otherwise. + * If lowerBound is set, returns the smallest index where query does not return > 0. + * @param {Integer} begin The beginning of the search window + * @param {Integer} end The end of the search window + * @param {Function} query The query to run to test the current point in the window + * @param {Boolean} lowerBound Determines the type of search + * @returns {Promise} Promise for the lowest dirEntry that fulfils (or fails to fulfil) the query + */ + function binarySearch(begin, end, query, lowerBound) { + if (end <= begin) { + return lowerBound ? begin : null; + } + var mid = Math.floor((begin + end) / 2); + return query(mid).then(function (decision) { + if (decision < 0) { + return binarySearch(begin, mid, query, lowerBound); + } else if (decision > 0) { + return binarySearch(mid + 1, end, query, lowerBound); + } else { + return mid; + } + }); + } + + /** + * Does a "left shift" on an integer. + * It is equivalent to int << bits (which works only on 32-bit integers), + * but compatible with 64-bit integers. + * + * @param {Integer} int + * @param {Integer} bits + * @returns {Integer} + */ + function leftShift(int, bits) { + return int * Math.pow(2, bits); + } + + /** + * Converts base 64 code to Uint6 + * From https://developer.mozilla.org/en-US/docs/Glossary/Base64 + * @param {Integer} nChr Numerical character code + * @returns {Integer} Converted character code + */ + function b64ToUint6(nChr) { + return nChr > 64 && nChr < 91 ? nChr - 65 : nChr > 96 && nChr < 123 ? nChr - 71 : nChr > 47 && nChr < 58 ? nChr + 4 : nChr === 43 ? 62 : nChr === 47 ? 63 : 0; + } + + /** + * Recommended rewrite of the faulty .btoa() function in JavaScript because of the problem with UTF-8-encoded data + * From https://developer.mozilla.org/en-US/docs/Glossary/Base64 + * @param {String} sBase64 Base 64 encoded string + * @param {Integer} nBlocksSize Optional block size + * @returns {Uint8Array} A Uint8Array containing the converted data + */ + function base64DecToArr(sBase64, nBlocksSize) { + var sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, ''), + nInLen = sB64Enc.length, + nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2, + taBytes = new Uint8Array(nOutLen); + for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) { + nMod4 = nInIdx & 3; + nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 6 * (3 - nMod4); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { + taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255; + } + nUint24 = 0; + } + } + return taBytes; + } + + /** + Converts a dataURI to Uint8Array + * @param {String} dataURI The data URI to convert + * @returns {Uint8Array} A Uint8Array with the converted buffer + */ + function dataURItoUint8Array(dataURI) { + var parsedString = dataURI.match(/^data:([^,]*),(.*)/i); + if (parsedString && /base64/i.test(parsedString[1])) { + return base64DecToArr(parsedString[2]); + } else { + var byteString = decodeURI(parsedString[2]); + var ab = []; + for (var i = 0; i < byteString.length; i++) { + ab[i] = byteString.charCodeAt(i); + } + return new Uint8Array(ab); + } + } + + /** + * Detect whether the browser supports the webkitdirectory attribute on input elements + * @returns {Boolean} True if the webkitdirectory attribute is supported, false otherwise + */ + function webkitdirectorySupported() { + return 'webkitdirectory' in document.createElement('input') && !/iOS|Android/.test(params.appType); + } + + /** + * Matches the outermost balanced constructs and their contents + * even if they have nested balanced constructs within them + * e.g., outer HTML of a pair of opening and closing tags. + * Left and right constructs must not be equal. Backreferences in right are not supported. + * Double backslash (\\) any backslash characters, e.g. '\\b'. + * If you do not set the global flag ('g'), then only contents of first construct will be returned. + * Adapted from http://blog.stevenlevithan.com/archives/javascript-match-recursive-regexp + * (c) 2007 Steven Levithan - MIT Licence https://opensource.org/licenses/MIT + * + * @param {string} str - String to be searched. + * @param {string} left - Regex string of opening pattern to match, e.g. ']*>' matches or
. + * @param {string} right - Regex string of closing pattern to match, e.g. '
'. Must not be equal to left. + * @param {string} flags - Regex flags, if any, such as 'gi' (= match globally and case insensitive). + * @param {string} prefix - An optional Regex string that must be present before for the regex to match + * @returns {Array} An array of matches. + */ + function matchOuter(str, left, right, flags, prefix) { + flags = flags || ''; + var f = flags.replace(/g/g, ''), + g = flags.indexOf('g') > -1, + l = new RegExp(left, f), + // Creates a neutral middle value if left is a well-formed regex for an html tag with attributes + mid = /^(<[^\\]+)\\/.test(left) ? left.replace(/^(<[^\\]+)[\S\s]+$/, '$1') + '\\b[^>]*>' : '', + x = new RegExp((prefix ? prefix : '') + (mid ? mid : left) + '|' + right, 'g' + f), + a = [], + t, + s, + m; + mid = mid ? new RegExp(mid, f) : l; + do { + t = 0; + while (m = x.exec(str)) { + if ((t ? mid : l).test(m[0])) { + if (!t++) s = m.index; + } else if (t) { + if (! --t) { + a.push(str.slice(s, x.lastIndex)); + if (!g) return a; + } + } + } + } while (t && (x.lastIndex = s)); + return a; + } + + /** + * Matches the contents of innermost HTML elements even if they are nested inside other elements. + * Left and right strings must be opening and closing HTML or XML elements. Backreferences are not supported. + * If you do not set the global flag ('g'), then only contents of first match will be returned. + * Double backslash (\\) any backslash characters, e.g. '\\b'. + * Adapted from http://blog.stevenlevithan.com/archives/match-innermost-html-element + * + * @param {string} str - String to be searched. + * @param {string} left - Regex string of opening element to match, e.g. ']*>', must include '<' and '>'. + * @param {string} right - Regex string of closing element to match, e.g. ''. + * @param {string} flags - Regex flags, if any, such as 'gi' (= match globally and case insensitive). + * @returns {Array} A RegExp array of matches. + */ + function matchInner(str, left, right, flags) { + flags = flags || ''; + var x = new RegExp(left + '(?:(?=([^<]+))\\1|<(?!' + left.replace(/^]*>[\s\S]*<\/title>/i, ''); + strippedText = node.innerHTML.replace(/<[^>]*>\s*/g, ' '); + if (!strippedText) return 0; + strippedText = strippedText.replace(/(?: |\r?\n|[.,;:?!¿¡-])+/g, ' '); + strippedText = strippedText.replace(/\s+/g, ' '); + if (!strippedText.length) return 0; + input = input.replace(/[\s.,;:?!¿¡-]+/g, ' '); + var inputMatcher = new RegExp(input, 'ig'); + var matches = strippedText.match(inputMatcher); + if (matches) return matches.length;else return 0; + }; + this.countPartialMatches = function () { + if (node === undefined || !node) return; + var matches = matchInner(node.innerHTML, '<' + hiliteTag + '\\b[^>]*class="hilitor"[^>]*>', '', 'gi'); + if (matches) return matches.length;else return 0; + }; + this.scrollFrom = 0; + this.lastScrollValue = ''; + this.scrollToFullMatch = function (input, scrollFrom) { + if (node === undefined || !node) return; + if (!input) return; + // Normalize spaces + input = input.replace(/\s+/g, ' '); + var inputWords = input.split(' '); + var testInput = addAccents(input); + testInput = new RegExp(testInput, 'i'); + var hilitedNodes = node.getElementsByClassName(className); + var subNodes = []; + var start = scrollFrom || 0; + start = start >= hilitedNodes.length ? 0 : start; + var end = start + inputWords.length; + for (start; start < hilitedNodes.length; start++) { + for (var f = start; f < end; f++) { + if (f == hilitedNodes.length) break; + subNodes.push(hilitedNodes[f].innerHTML); + } + var nodeText = subNodes.join(' '); + if (testInput.test(nodeText)) { + var iframeWindow = document.getElementById('articleContent').contentWindow; + var scrollOffset = hilitedNodes[start].offsetTop - window.innerHeight / 4; + if ('scrollBehavior' in document.documentElement.style) { + iframeWindow.scrollTo({ + top: scrollOffset, + behavior: 'smooth' + }); + } else { + iframeWindow.scrollTo(0, scrollOffset); + } + break; + } else { + if (f == hilitedNodes.length && scrollFrom > 0) { + // Restart search from top of page + scrollFrom = 0; + start = 0; + } + } + subNodes = []; + end++; + } + return start + inputWords.length; + }; + + // recursively apply word highlighting + this.hiliteWords = function (node) { + if (node === undefined || !node) return; + if (!matchRegex) return; + if (skipTags.test(node.nodeName)) return; + if (node.hasChildNodes()) { + for (var i = 0; i < node.childNodes.length; i++) this.hiliteWords(node.childNodes[i]); + } + if (node.nodeType == 3) { + // NODE_TEXT + var nv, regs; + if ((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) { + if (!wordColor[regs[1].toLowerCase()]) { + wordColor[regs[1].toLowerCase()] = colors[colorIdx++ % colors.length]; + } + var match = document.createElement(hiliteTag); + match.appendChild(document.createTextNode(regs[1])); + match.style.setProperty('background-color', wordColor[regs[1].toLowerCase()], 'important'); + match.style.fontStyle = 'inherit'; + match.style.color = '#000'; + match.className = className; + var after; + // In case of leading whitespace or other symbols + var leadR = new RegExp('^[\\s' + leadingSymbols + ']'); + if (leadR.test(regs[0])) { + after = node.splitText(regs.index + 1); + } else { + after = node.splitText(regs.index); + } + after.nodeValue = after.nodeValue.substring(regs[1].length); + node.parentNode.insertBefore(match, after); + } + } + }; + + // remove highlighting + this.remove = function () { + if (typeof node.innerHTML == 'undefined') return; + var arr = node.getElementsByClassName(className), + el; + while (arr.length && (el = arr[0])) { + var parent = el.parentNode; + parent.replaceChild(el.firstChild, el); + parent.normalize(); + } + }; + + // start highlighting at target node + this.apply = function (input) { + this.remove(); + if (input === undefined || !(input = input.replace(/(^\s+|\s+$)/g, ''))) return; + input = addAccents(input); + input = convertCharStr2jEsc(input); + if (this.setRegex(input)) { + this.hiliteWords(targetNode); + } + }; + + // added by Yanosh Kunsh to include utf-8 string comparison + function dec2hex4(textString) { + var hexequiv = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); + return hexequiv[textString >> 12 & 0xF] + hexequiv[textString >> 8 & 0xF] + hexequiv[textString >> 4 & 0xF] + hexequiv[textString & 0xF]; + } + function convertCharStr2jEsc(str, cstyle) { + // Converts a string of characters to JavaScript escapes + // str: sequence of Unicode characters + var highsurrogate = 0; + var suppCP; + var pad; + var outputString = ''; + for (var i = 0; i < str.length; i++) { + var cc = str.charCodeAt(i); + if (cc < 0 || cc > 0xFFFF) { + outputString += '!Error in convertCharStr2UTF16: unexpected charCodeAt result, cc=' + cc + '!'; + } + if (highsurrogate != 0) { + // this is a supp char, and cc contains the low surrogate + if (0xDC00 <= cc && cc <= 0xDFFF) { + suppCP = 0x10000 + (highsurrogate - 0xD800 << 10) + (cc - 0xDC00); + if (cstyle) { + pad = suppCP.toString(16); + while (pad.length < 8) { + pad = '0' + pad; + } + outputString += "\\U" + pad; + } else { + suppCP -= 0x10000; + outputString += "\\u" + dec2hex4(0xD800 | suppCP >> 10) + "\\u" + dec2hex4(0xDC00 | suppCP & 0x3FF); + } + highsurrogate = 0; + continue; + } else { + outputString += 'Error in convertCharStr2UTF16: low surrogate expected, cc=' + cc + '!'; + highsurrogate = 0; + } + } + if (0xD800 <= cc && cc <= 0xDBFF) { + // start of supplementary character + highsurrogate = cc; + } else { + // this is a BMP character + switch (cc) { + case 0: + outputString += '\\0'; + break; + case 8: + outputString += '\\b'; + break; + case 9: + outputString += '\\t'; + break; + case 10: + outputString += '\\n'; + break; + case 13: + outputString += '\\r'; + break; + case 11: + outputString += '\\v'; + break; + case 12: + outputString += '\\f'; + break; + case 34: + outputString += '\\\"'; + break; + case 39: + outputString += '\\\''; + break; + case 92: + outputString += '\\\\'; + break; + default: + if (cc > 0x1f && cc < 0x7F) { + outputString += String.fromCharCode(cc); + } else { + pad = cc.toString(16).toUpperCase(); + while (pad.length < 4) { + pad = '0' + pad; + } + outputString += "\\u" + pad; + } + } + } + } + return outputString; + } + } + + // Does a forward search for el forward through next siblings, or up the DOM tree then forward + // Returns if fn(el) is true, or else keeps searching to end of DOM + function getClosestForward(el, fn) { + return el && (fn(el) ? el : getClosestForward(el.nextElementSibling, fn)) || el && (fn(el) ? el : getClosestForward(el.parentNode, fn)); + } + + // Does a reverse search for el back through previous siblings, or up the DOM tree then back + // Returns if fn(el) is true, or else keeps searching to top of DOM + function getClosestBack(el, fn) { + return el && (fn(el) ? el : getClosestBack(el.previousElementSibling, fn)) || el && (fn(el) ? el : getClosestBack(el.parentNode, fn)); + } + + // Create a closest function alternative because IE11 and others do not support closest + function closest(ele, s) { + var cele = ele; + var cmatches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; + do { + if (cmatches.call(cele, s)) return cele; + cele = cele.parentElement || cele.parentNode; + } while (cele !== null && cele.nodeType === 1); + return null; + } + + /** + * Queues Promise Factories* to be resolved or rejected sequentially. This helps to avoid overlapping Promise functions. + * Primarily used by uiUtil.systemAlert, to prevent alerts showing while others are being displayed. + * + * *A Promise Factory is merely a Promise wrapped in a function to prevent it from executing immediately. E.g. to use + * this function with a Promise, call it like this (or, more likely, use your own pre-wrapped Promise): + * + * return util.PromiseQueue.enqueue(function () { + * return new Promise(function (resolve, reject) { ... }); + * }); + * + * Adapted from https://medium.com/@karenmarkosyan/how-to-manage-promises-into-dynamic-queue-with-vanilla-javascript-9d0d1f8d4df5 + * + * @type {Object} PromiseQueue + * @property {Function} enqueue Queues a Promise Factory. Call this function repeatedly to queue Promises sequentially + * @param {Function} promiseFactory A Promise wrapped in an ordinary function + * @returns {Promise} A Promise that resolves or rejects with the resolved/rejected value of the Promise Factory + */ + var PromiseQueue = { + _queue: [], + _working: false, + enqueue: function enqueue(promiseFactory) { + var that = this; + return new Promise(function (resolve, reject) { + // Don't allow more than four dialogues to queue up + if (that._queue.length >= 4) reject(new Error('PromiseQueue: queue length exceeded'));else that._queue.push({ + promise: promiseFactory, + resolve: resolve, + reject: reject + }); + if (!that._working) that._dequeue(); + }); + }, + _dequeue: function _dequeue() { + this._working = true; + var deferred = this._queue.shift(); + if (!deferred) { + this._working = false; + return false; + } + var that = this; + return deferred.promise().then(function (val) { + deferred.resolve(val); + return that._dequeue(); + }).catch(function (err) { + deferred.reject(err); + return that._dequeue(); + }); + } + }; + var util = { + allCaseFirstLetters: allCaseFirstLetters, + removeDuplicateStringsInSmallArray: removeDuplicateStringsInSmallArray, + endsWith: endsWith, + readFloatFrom4Bytes: readFloatFrom4Bytes, + readFileSlice: readFileSlice, + binarySearch: binarySearch, + dataURItoUint8Array: dataURItoUint8Array, + leftShift: leftShift, + matchOuter: matchOuter, + matchInner: matchInner, + webkitdirectorySupported: webkitdirectorySupported, + Hilitor: Hilitor, + getClosestForward: getClosestForward, + getClosestBack: getClosestBack, + closest: closest, + PromiseQueue: PromiseQueue + }; + + /** + * uiUtil.js : Utility functions for the User Interface + * + * Copyright 2013-2023 Mossroy, Jaifroid and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + + + /** + * Global variables + */ + var itemsCount = false; + + /** + * Creates either a blob: or data: URI from the given content + * The given attribute of the DOM node (nodeAttribute) is then set to this URI + * + * This is used to inject images (and other dependencies) into the article DOM + * + * @param {Object} node The node to which the URI should be added + * @param {String} nodeAttribute The attribute to set to the URI + * @param {Uint8Array} content The binary content to convert to a URI + * @param {String} mimeType The MIME type of the content + * @param {Boolean} makeDataURI If true, make a data: URI instead of a blob URL + * @param {Function} callback An optional function to call with the URI + */ + function feedNodeWithBlob(node, nodeAttribute, content, mimeType, makeDataURI, callback) { + // Decode WebP data if the browser does not support WebP and the mimeType is webp + if (webpMachine && /image\/webp/i.test(mimeType)) { + // If we're dealing with a dataURI, first convert to Uint8Array (polyfill cannot read data URIs) + if (/^data:/i.test(content)) { + content = util.dataURItoUint8Array(content); + } + // DEV: Note that webpMachine is single threaded and will reject an image if it is busy + // However, the prepareImagesJQuery() function in images.js is sequential (it waits for a callback + // before processing another image) so we do not need to queue WebP images here + webpMachine.decode(content).then(function (uri) { + // DEV: WebpMachine.decode() returns a data: URI + // We callback before the node is set so that we don't incur slow DOM rewrites before processing more images + if (callback) callback(uri); + node.setAttribute(nodeAttribute, uri); + }).catch(function (err) { + console.error('There was an error decoding image in WebpMachine', err); + if (callback) callback(); + }); + } else { + var blob = new Blob([content], { + type: mimeType + }); + var url; + if (makeDataURI) { + // Because btoa fails on utf8 strings (in SVGs, for example) we need to use FileReader method + // See https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem + // url = 'data:' + mimeType + ';base64,' + btoa(util.uintToString(content)); + var myReader = new FileReader(); + myReader.onloadend = function () { + url = myReader.result; + node.setAttribute(nodeAttribute, url); + if (callback) callback(url); + }; + myReader.readAsDataURL(blob); + } else { + blob = new Blob([content], { + type: mimeType + }); + // Establish the current window (avoids having to pass it to this function) + var docWindow = node.ownerDocument.defaultView || node.ownerDocument.parentWindow || window; + url = docWindow.URL.createObjectURL(blob); + if (callback) callback(url); + node.addEventListener('load', function () { + URL.revokeObjectURL(url); + }); + node.setAttribute(nodeAttribute, url); + } + } + } + + /** + * Removes parameters and anchors from a URL + * @param {type} url The URL to be processed + * @returns {String} The same URL without its parameters and anchors + */ + function removeUrlParameters(url) { + // Remove any querystring + var strippedUrl = url.replace(/\?[^?]*$/, ''); + // Remove any anchor parameters - note that we are deliberately excluding entity references, e.g. '''. + strippedUrl = strippedUrl.replace(/#[^#;]*$/, ''); + return strippedUrl; + } + function TableOfContents(articleDoc) { + this.doc = articleDoc; + this.headings = this.doc.querySelectorAll('h1, h2, h3, h4, h5, h6'); + this.getHeadingObjects = function () { + var headings = []; + for (var i = 0; i < this.headings.length; i++) { + var element = this.headings[i]; + var obj = {}; + obj.id = element.id; + var objectId = element.innerHTML.match(/\bid\s*=\s*["']\s*([^"']+?)\s*["']/i); + obj.id = obj.id ? obj.id : objectId && objectId.length > 1 ? objectId[1] : ''; + obj.index = i; + obj.textContent = element.textContent; + obj.tagName = element.tagName; + headings.push(obj); + } + return headings; + }; + } + function makeReturnLink(title) { + // Abbreviate title if necessary + var shortTitle = title.substring(0, 25); + shortTitle = shortTitle === title ? shortTitle : shortTitle + '...'; + var link = '

<< Return to ' + shortTitle + '

'; + var returnDivs = document.getElementsByClassName('returntoArticle'); + for (var i = 0; i < returnDivs.length; i++) { + returnDivs[i].innerHTML = link; + } + } + + /** + * Displays the operations panel in the footer to show a message with an optional timeout interval. If no timeout is specified, the panel + * will display for 10s before being cleared. If the timeout is set to true, the panel will display indefinitely or until pollOpsPanel + * is called again. If set to false, the panel will be cleared. + * @param {String} msg The message (may be HTML-formatted) to display in the panel, or if empty, the panel will be cleared + * @param {Integer|Boolean} opControl A timeout value, or if true, the panel will display indefinitely + */ + function pollOpsPanel(msg, opControl) { + msg = msg || null; + var footer = document.getElementById('footer'); + var opsPanel = document.getElementById('alertBoxFooter'); + var navigationButtons = document.getElementById('navigationButtons'); + var configuration = document.getElementById('configuration'); + var timeout = Number.isFinite(opControl) ? opControl : 10000; + if (msg === null) { + opsPanel.style.display = 'none'; + if (configuration.style.display === 'none') { + navigationButtons.style.display = 'block'; + footer.style.display = 'block'; + } else { + navigationButtons.style.display = 'none'; + } + } else { + opsPanel.style.display = 'block'; + opsPanel.innerHTML = '
' + msg + '
'; + if (configuration.style.display !== 'none') { + footer.style.display = 'block'; + navigationButtons.style.display = 'none'; + } else { + navigationButtons.style.display = 'block'; + } + } + // Close panel after 10s if no timeout specified + clearTimeout(pollOpsPanel); + if (opControl !== true) { + setTimeout(pollOpsPanel, timeout); + } + } + + /** + * Starts the spinner, with an optional message and optional timeout interval. If no timeout is specified, the spinner + * will run for 3s before being cleared. If the timeout is set to true, the spinner will run indefinitely or until pollSpinner + * is called again. + * @param {String} msg A message (may be HTML-formatted) to display below the spinner + * @param {Integer|Boolean} noTimeoutOrInterval A timeout value, or if true, the spinner will run indefinitely until pollSpinner is called again + */ + function pollSpinner(msg, noTimeoutOrInterval) { + msg = msg || ''; + document.getElementById('searchingArticles').style.display = 'block'; + var cachingAssets = document.getElementById('cachingAssets'); + cachingAssets.innerHTML = msg; + if (msg) cachingAssets.style.display = 'block';else cachingAssets.style.display = 'none'; + // Never allow spinner to run for more than 3s + clearTimeout(clearSpinner); + if (!noTimeoutOrInterval || noTimeoutOrInterval !== true) { + var interval = noTimeoutOrInterval || 3000; + setTimeout(clearSpinner, interval); + } + } + function clearSpinner() { + document.getElementById('searchingArticles').style.display = 'none'; + var cachingAssets = document.getElementById('cachingAssets'); + cachingAssets.innerHTML = ''; + cachingAssets.style.display = 'none'; + } + function printCustomElements() { + // var innerDocument = window.frames[0].frameElement.contentDocument; + var innerDocument = document.getElementById('articleContent').contentDocument; + // For now, adding a printing stylesheet to a zimit ZIM appears to diasble printing of any images! + if (appstate.wikimediaZimLoaded) { + // Add any missing classes + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(class\s*=\s*["'][^"']*vcard\b[^>]+>\s*/ig, '$1 class="map-pin">'); + // Remove encapsulated External Links + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(]"externalLinks"))((?:[^<]|<(?!\/details>))+?['"]external_links['"])/i, '$1 class="externalLinks" $2'); + // This is the best we can do for removing External Links if its not encapsulated + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(<(?:h2|span)\b[^<]+external_links(?:[^<]|<(?!\/div>|\/details>))+?]"furtherReading"))((?:[^<]|<(?!\/details>))+?['"]further_reading['"])/i, '$1 class="furtherReading" $2'); + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(<(?:h2|span)\b[^<]+further_reading(?:[^<]|<(?!\/div>|\/details>))+?]"seeAlso"))((?:[^<]|<(?!\/details>))+?['"]see_also['"])/i, '$1 class="seeAlso" $2'); + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(<(?:h2|span)\b[^<]+see_also(?:[^<]|<(?!\/div>|\/details>))+?]"zimReferences"))((?:[^<]|<(?!\/details>))+?['"]references['"])/i, '$1 class="zimReferences" $2'); + // Sources (this is for details-summary ZIMs only: it gets rid of the title) + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(]"zimSources"))((?:[^<]|<(?!\/details>))+?['"]sources['"])/i, '$1 class="zimSources" $2'); + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/(]+>\s+This article is issued from)/i, '$1class="copyLeft" $2'); + // Remove openInTab div (we can't do this using DOM methods because it aborts code spawned from onclick event) + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/))+<\/div>\s*/, ''); + // Add an @media print conditional stylesheet + var printOptions = innerDocument.getElementById('printOptions'); + // If there is no printOptions style block in the iframe, create it + if (!printOptions) { + var printStyle = innerDocument.createElement('style'); + printStyle.id = 'printOptions'; + innerDocument.head.appendChild(printStyle); + printOptions = innerDocument.getElementById('printOptions'); + } + var printStyleInnerHTML = '@media print { '; + printStyleInnerHTML += document.getElementById('printNavBoxCheck').checked ? '' : '.navbox, .vertical-navbox { display: none; } '; + printStyleInnerHTML += document.getElementById('printEndNoteCheck').checked ? '' : '.reflist, div[class*=references], .zimReferences, .zimSources { display: none; } '; + printStyleInnerHTML += document.getElementById('externalLinkCheck').checked ? '' : '.externalLinks, .furtherReading { display: none; } '; + printStyleInnerHTML += document.getElementById('seeAlsoLinkCheck').checked ? '' : '.seeAlso { display: none; } '; + printStyleInnerHTML += document.getElementById('printInfoboxCheck').checked ? '' : '.mw-stack, .infobox, .infobox_v2, .infobox_v3, .qbRight, .qbRightDiv, .wv-quickbar, .wikitable { display: none; } '; + // printStyleInnerHTML += document.getElementById("printImageCheck").checked ? "" : "img, .gallery { display: none; } "; + printStyleInnerHTML += '.copyLeft { display: none } '; + printStyleInnerHTML += '.map-pin { display: none } '; + printStyleInnerHTML += '.external { padding-right: 0 !important } '; + } + // Using @media print on images doesn't get rid of them all, so use brute force + if (!document.getElementById('printImageCheck').checked) { + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/]*>\s*/ig, ''); + } else { + // Remove any breakout link + innerDocument.body.innerHTML = innerDocument.body.innerHTML.replace(/]+id="breakoutLink"[^>]*>\s*/, ''); + } + var sliderVal = document.getElementById('documentZoomSlider').value; + sliderVal = ~~sliderVal; + sliderVal = Math.floor(sliderVal * (Math.max(window.screen.width, window.screen.height) / 1440)); + if (appstate.wikimediaZimLoaded) { + printStyleInnerHTML += 'body { font-size: ' + sliderVal + '% !important; } '; + printStyleInnerHTML += '}'; + printOptions.innerHTML = printStyleInnerHTML; + } else { + innerDocument.body.style.setProperty('font-size', sliderVal + '%', 'important'); + } + } + function downloadBlobUWP(blob, filename, message) { + // Copy BLOB to downloads folder and launch from there in Edge + // First create an empty file in the folder + Windows.Storage.DownloadsFolder.createFileAsync(filename, Windows.Storage.CreationCollisionOption.generateUniqueName).then(function (file) { + // Open the returned dummy file in order to copy the data into it + file.openAsync(Windows.Storage.FileAccessMode.readWrite).then(function (output) { + // Get the InputStream stream from the blob object + var input = blob.msDetachStream(); + // Copy the stream from the blob to the File stream + Windows.Storage.Streams.RandomAccessStream.copyAsync(input, output).then(function () { + output.flushAsync().done(function () { + input.close(); + output.close(); + // Finally, tell the system to open the file if it's not a subtitle file + if (!/\.(?:ttml|ssa|ass|srt|idx|sub|vtt)$/i.test(filename)) Windows.System.Launcher.launchFileAsync(file); + if (file.isAvailable) { + var fileLink = file.path.replace(/\\/g, '/'); + fileLink = fileLink.replace(/^([^:]+:\/(?:[^/]+\/)*)(.*)/, function (p0, p1, p2) { + return 'file:///' + p1 + encodeURIComponent(p2); + }); + if (message) { + message.innerHTML = 'Download: Your file was saved as ' + file.path + ''; + } + // window.open(fileLink, null, "msHideView=no"); + } + }); + }); + }); + }); + } + + /** + * Derives the URL.pathname from a relative or semi-relative URL using the given base ZIM URL + * + * @param {String} url The (URI-encoded) URL to convert (e.g. "Einstein", "../Einstein", + * "../../I/im%C3%A1gen.png", "-/s/style.css", "/A/Einstein.html", "../static/bootstrap/css/bootstrap.min.css") + * @param {String} base The base ZIM URL of the currently loaded article (e.g. "A/", "A/subdir1/subdir2/", "C/Singapore/") + * @returns {String} The derived ZIM URL in decoded form (e.g. "A/Einstein", "I/imágen.png", "C/") + */ + function deriveZimUrlFromRelativeUrl(url, base) { + // We use a dummy domain because URL API requires a valid URI + var dummy = 'http://d/'; + var deriveZimUrl = function deriveZimUrl(url, base) { + if (typeof URL === 'function') return new URL(url, base); + // IE11 lacks URL API: workaround adapted from https://stackoverflow.com/a/28183162/9727685 + var d = document.implementation.createHTMLDocument('t'); + // innerHTML required as string contains HTML tags + d.head.innerHTML = ''; + var a = d.createElement('a'); + a.href = url; + return { + pathname: a.href.replace(dummy, '') + }; + }; + var zimUrl = deriveZimUrl(url, dummy + base); + return decodeURIComponent(zimUrl.pathname.replace(/^\//, '')); + } + + /** + * Walk up the DOM tree to find the closest element where the tagname matches the supplied regular expression + * + * @param {Element} el The starting DOM element + * @param {RegExp} rgx A regular expression to match the element's tagname + * @returns {Element|null} The matching element or null if no match was found + */ + function getClosestMatchForTagname(el, rgx) { + do { + if (rgx.test(el.tagName)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + } + + /** + * Displays a Bootstrap warning alert with information about how to access content in a ZIM with unsupported active UI + * @param {String} type The ZIM archive type ('open', 'zimit', or 'legacy') + */ + function displayActiveContentWarning(type) { + // We have to add the alert box in code, because Bootstrap removes it completely from the DOM when the user dismisses it + var alertHTML = ''; + if (params.contentInjectionMode === 'jquery' && type === 'open') { + alertHTML = '
' + '×' + 'Unable to display active content: To use Archive Index type a space, or for URL Index type ' + 'space / , or else switch to Service Worker mode ' + 'if your platform supports it.  [Permanently hide]' + '
'; + } else if (params.contentInjectionMode === 'serviceworker' && type === 'legacy') { + alertHTML = '
' + '×' + 'Legacy ZIM type! To display content correctly from this historical ZIM, ' + 'please switch to the legacy JQuery mode. ' + 'You may need to increase font size with zoom buttons at bottom of screen. [Permanently hide]' + '
'; + } else if (type === 'zimit') { + alertHTML = '
' + '×' + ( + // '' + (params.contentInjectionMode === 'jquery' ? 'Limited Zimit' : 'Experimental') + ' support: ' + + params.contentInjectionMode === 'jquery' ? 'Limited Zimit support! Please switch to Service Worker mode if your platform supports it. ' : 'Support for Zimit archives is experimental. Some content (e.g. audio/video) may fail. ') + 'You can search for content above' + (appstate.selectedArchive.file.fullTextIndex ? ' using full-text search if your app supports it, ' + 'or s' : '. S') + 'tart your search with .* to match part of a title. Type a space for the ZIM Archive Index, or ' + 'space / for the URL Index. [Permanently hide]' + '
'; + } else if (params.contentInjectionMode === 'serviceworker' && (params.manipulateImages || params.displayHiddenBlockElements === true || params.allowHTMLExtraction)) { + alertHTML = '
' + '×' + 'Active content may not work correctly: Please ' + (params.displayHiddenBlockElements ? 'disable Display hidden block elements ' : params.manipulateImages ? 'disable Image manipulation ' : '') + (params.allowHTMLExtraction ? (params.displayHiddenBlockElements || params.manipulateImages ? 'and ' : '') + 'disable Breakout icon ' : '') + 'for this content to work properly. To use Archive Index type a space ' + 'in the box above, or space / for URL Index. [Permanently hide]' + '
'; + } else { + // There is nothing to display + return; + } + var alertBoxHeader = document.getElementById('alertBoxHeader'); + alertBoxHeader.innerHTML = alertHTML; + alertBoxHeader.style.display = 'block'; + document.getElementById('activeContentClose').addEventListener('click', function () { + // Hide the alert box + alertBoxHeader.style.display = 'none'; + }); + ['swModeLink', 'jqModeLink', 'imModeLink', 'hbeModeLink', 'stop'].forEach(function (id) { + // Define event listeners for both hyperlinks in alert box: these take the user to the Config tab and highlight + // the options that the user needs to select + var modeLink = document.getElementById(id); + if (modeLink) { + modeLink.addEventListener('click', function () { + var elementID = id === 'stop' ? 'hideActiveContentWarningCheck' : id === 'swModeLink' ? 'serviceworkerModeRadio' : id === 'jqModeLink' ? 'jQueryModeRadio' : id === 'imModeLink' ? 'manipulateImagesCheck' : 'displayHiddenBlockElementsCheck'; + var thisLabel = document.getElementById(elementID).parentNode; + thisLabel.style.borderColor = 'red'; + thisLabel.style.borderStyle = 'solid'; + // Make sure the container is visible + var container = thisLabel.parentNode; + if (!/panel-body/.test(container.className)) { + container = container.parentNode; + } + container.style.display = 'block'; + container.previousElementSibling.innerHTML = container.previousElementSibling.innerHTML.replace(/▶/, '▼'); + var btnHome = document.getElementById('btnHome'); + [thisLabel, btnHome].forEach(function (ele) { + // Define event listeners to cancel the highlighting both on the highlighted element and on the Home tab + ele.addEventListener('mousedown', function () { + thisLabel.style.borderColor = ''; + thisLabel.style.borderStyle = ''; + }); + }); + alertBoxHeader.style.display = 'none'; + document.getElementById('btnConfigure').click(); + }); + } + }); + } + + /** + * Displays a Bootstrap alert box at the foot of the page to enable saving the content of the given title to the device's filesystem + * and initiates download/save process if this is supported by the OS or Browser + * + * @param {String} title The path and filename to the file to be extracted + * @param {Boolean|String} download A Bolean value that will trigger download of title, or the filename that should + * be used to save the file in local FS + * @param {String} contentType The mimetype of the downloadable file, if known + * @param {Uint8Array} content The binary-format content of the downloadable file + * @param {Boolean} autoDismiss If true, dismiss the alert programmatically + */ + function displayFileDownloadAlert(title, download, contentType, content, autoDismiss) { + // We have to create the alert box in code, because Bootstrap removes it completely from the DOM when the user dismisses it + document.getElementById('alertBoxFooter').innerHTML = '
' + ' ×' + ' ' + '
'; + // Download code adapted from https://stackoverflow.com/a/19230668/9727685 + if (!contentType || /application.download/i.test(contentType)) { + // DEV: Add more contentTypes here for downloadable files + contentType = /\.epub([?#]|$)/i.test(title) ? 'application/epub+zip' : /\.pdf([?#]|$)/i.test(title) ? 'application/pdf' : /\.zip([?#]|$)/i.test(title) ? 'application/zip' : /\.png([?#]|$)/i.test(title) ? 'image/png' : /\.jpe?g([?#]|$)/i.test(title) ? 'image/jpeg' : /\.webp([?#]|$)/i.test(title) ? 'image/webp' : /\.svg([?#]|$)/i.test(title) ? 'image/svg+xml' : /\.gif([?#]|$)/i.test(title) ? 'image/gif' : /\.tiff([?#]|$)/i.test(title) ? 'image/tiff' : /\.mp4([?#]|$)/i.test(title) ? 'video/mp4' : /\.(webm)([?#]|$)/i.test(title) ? 'video/webm' : /\.mpeg([?#]|$)/i.test(title) ? 'video/mpeg' : /\.mp3([?#]|$)/i.test(title) ? 'audio/mpeg' + // Default contentType if no match: + : 'application/octet-stream'; + } + var a = document.createElement('a'); + var blob = new Blob([content], { + type: contentType + }); + // If the filename to use for saving has not been specified, construct it from title + var filename = download === true ? title.replace(/^.*\/([^\\/?#&]*).*$/, '$1') : download; + // If not match was possible from the title, give it a generic name + if (filename === title || !filename) filename = 'downloadfile'; + // Make filename safe + filename = filename.replace(/[/\\:*?"<>|#&]/g, '_'); + // If the file doesn't have an extension, add one for compatibility with older browsers + if (!/\.(epub|pdf|odt|zip|png|jpe?g|webp|svg|gif|tiff|mp4|webm|mpe?g|mp3)([?#]|$)/i.test(filename)) { + var extension = /epub/i.test(contentType) ? '.epub' : /pdf/i.test(contentType) ? '.pdf' : /opendument/i.test(contentType) ? '.odt' : /\/zip$/i.test(contentType) ? '.zip' : /png/i.test(contentType) ? '.png' : /jpeg/i.test(contentType) ? '.jpeg' : /webp/i.test(contentType) ? '.webp' : /svg/i.test(contentType) ? '.svg' : /gif/i.test(contentType) ? '.gif' : /tiff/i.test(contentType) ? '.tiff' : /mp4/i.test(contentType) ? '.mp4' : /webm/i.test(contentType) ? '.webm' : /mpeg/i.test(contentType) ? '.mpeg' : /mp3/i.test(contentType) ? '.mp3' : ''; + filename = filename.replace(/^(.*?)([#?]|$)/, '$1' + extension); + } + a.href = window.URL.createObjectURL(blob); + a.target = '_blank'; + a.type = contentType; + a.download = filename; + a.classList.add('alert-link'); + a.innerHTML = filename; + var alertMessage = document.getElementById('alertMessage'); + alertMessage.innerHTML = 'Download If the download does not start, please tap the following link: '; + // We have to add the anchor to a UI element for Firefox to be able to click it programmatically: see https://stackoverflow.com/a/27280611/9727685 + alertMessage.appendChild(a); + var downloadAlert = document.getElementById('downloadAlert'); + // For IE11 we need to force use of the saveBlob method with the onclick event + if (window.navigator && window.navigator.msSaveBlob) { + a.addEventListener('click', function (e) { + window.navigator.msSaveBlob(blob, filename); + e.preventDefault(); + }); + } + document.getElementById('downloaAlertClose').addEventListener('click', function () { + downloadAlert.style.display = 'none'; + }); + try { + a.click(); + // Following line should run only if there was no error, leaving the alert showing in case of error + if (autoDismiss && downloadAlert) downloadAlert.style.display = 'none'; + return; + } catch (err) { + // Edge will error out unless there is a download added but Chrome works better without the attribute + a.download = filename; + } + try { + a.click(); + // Following line should run only if there was no error, leaving the alert showing in case of error + if (autoDismiss && downloadAlert) downloadAlert.style.display = 'none'; + } catch (err) { + // And try to launch through UWP download + if (typeof Windows !== 'undefined' && Windows.Storage) { + downloadBlobUWP(blob, filename, alertMessage); + if (autoDismiss && downloadAlert) downloadAlert.style.display = 'none'; + } else { + // Last gasp attempt to open automatically + window.open(a.href); + } + } + } + + /** + * Initiates XMLHttpRequest + * Can be used for loading local files; CSP may restrict access to remote files due to CORS + * + * @param {URL} url The Uniform Resource Locator to be read + * @param {String} responseType The response type to return (arraybuffer|blob|document|json|text); + * (passing an empty or null string defaults to text) + * @param {Function} callback The function to call with the result: data, mimetype, and status or error code + */ + function XHR(url, responseType, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function (e) { + if (this.readyState == 4) { + callback(this.response, this.response.type, this.status); + } + }; + var err = false; + try { + xhr.open('GET', url, true); + if (responseType) xhr.responseType = responseType; + } catch (e) { + console.log('Exception during GET request: ' + e); + err = true; + } + if (!err) { + xhr.send(); + } else { + callback('Error', null, 500); + } + } + + /** + * Inserts a link to break the article out to a new browser tab + * + * @param {String} mode The app mode to use for the breakoutLink icon (light|dark) + */ + function insertBreakoutLink(mode) { + var desc = 'Open article in new tab or window'; + var iframe = document.getElementById('articleContent').contentDocument; + // This code provides an absolute link, removing the file and any query string from href (we need this because of SW mode) + var prefix = (window.location.protocol + '//' + window.location.host + window.location.pathname).replace(/\/[^/]*$/, ''); + var div = document.createElement('div'); + div.style.cssText = 'top: 10px; right: 25px; position: relative; z-index: 2; float: right;'; + div.id = 'openInTab'; + div.innerHTML = '' + desc + ''; + iframe.body.insertBefore(div, iframe.body.firstChild); + var openInTab = iframe.getElementById('openInTab'); + openInTab.addEventListener('click', function (e) { + e.preventDefault(); + itemsCount = false; + params.preloadingAllImages = false; + extractHTML(); + }); + } + + /** + * Extracts self-contained HTML from the iframe DOM, transforming BLOB references to dataURIs + */ + function extractHTML() { + if (params.preloadingAllImages !== true) { + params.preloadAllImages(); + return; + } + var iframe = document.getElementById('articleContent').contentDocument; + // Store the html for the head section, to restore later (in SW mode, stylesheets will be transformed to dataURI links, + // which only work from file:/// URL, due to CORS, so they have to be restored) + var headHtml = iframe.head.innerHTML; + var title = iframe.title; + if (itemsCount === false) { + // Establish the source items that need to be extracted to self-contained URIs + // DEV: Add any further sources to the querySelector below + var items = iframe.querySelectorAll('img[src],link[href][rel="stylesheet"]'); + itemsCount = items.length; + Array.prototype.slice.call(items).forEach(function (item) { + // Extract the BLOB itself from the URL (even if it's a blob: URL) + var itemUrl = item.href || item.src; + XHR(itemUrl, 'blob', function (response, mimetype, status) { + if (status == 500) { + itemsCount--; + return; + } + // Pure SVG images may be missing the mimetype + if (!mimetype) mimetype = /\.svg$/i.test(itemUrl) ? 'image/svg+xml' : ''; + // Now read the data from the extracted blob + var myReader = new FileReader(); + myReader.addEventListener('loadend', function () { + if (myReader.result) { + var dataURL = myReader.result.replace(/data:;/, 'data:' + mimetype + ';'); + if (item.href) { + try { + item.href = dataURL; + } catch (err) { + } + } + if (item.src) { + try { + item.src = dataURL; + } catch (err) { + } + } + } + itemsCount--; + if (itemsCount === 0) extractHTML(); + }); + // Start the reading process. + myReader.readAsDataURL(response); + }); + }); + } + if (itemsCount > 0) return; // Ensures function stops if we are still extracting images or css + // Construct filename (forbidden characters will be removed in the download function) + var filename = title.replace(/(\.html?)*$/i, '.html'); + var html = iframe.documentElement.outerHTML; + // Remove openInTab div (we can't do this using DOM methods because it aborts code spawned from onclick event) + html = html.replace(/))+<\/div>\s*/, ''); + var blob = new Blob([html], { + type: 'text/html' + }); + // We can't use window.open() because pop-up blockers block it, so use explicit BLOB download + displayFileDownloadAlert(title, filename, 'text/html', blob, true); + // Restore original head section (to restore any transformed stylesheets) + iframe.head.innerHTML = headHtml; + itemsCount = false; + params.preloadingAllImages = false; + clearSpinner(); + } + + /** + * Displays a Bootstrap alert or confirm dialog box depending on the options provided + * + * @param {String} message The alert message(can be formatted using HTML) to display in the body of the modal. + * @param {String} label The modal's label or title which appears in the header (optional, Default = "Confirmation" or "Message") + * @param {Boolean} isConfirm If true, the modal will be a confirm dialog box, otherwise it will be a simple alert message + * @param {String} declineConfirmLabel The text to display on the decline confirmation button (optional, Default = "Cancel") + * @param {String} approveConfirmLabel The text to display on the approve confirmation button (optional, Default = "Confirm") + * @param {String} closeMessageLabel The text to display on the close alert message button (optional, Default = "Okay") + * @param {String} alertModal The modal to display (optional) + * @returns {Promise} A promise which resolves to true if the user clicked Confirm, false if the user clicked Cancel/Okay, backdrop or the cross(x) button + */ + function systemAlert(message, label, isConfirm, declineConfirmLabel, approveConfirmLabel, closeMessageLabel, alertModal) { + alertModal = alertModal || 'alertModal'; + var prfx = alertModal === 'myModal' ? 'my' : alertModal === 'printModal' ? 'print' : ''; + declineConfirmLabel = declineConfirmLabel || 'Cancel'; + approveConfirmLabel = approveConfirmLabel || 'Confirm'; + closeMessageLabel = closeMessageLabel || 'Okay'; + label = label || (isConfirm ? 'Confirmation' : 'Message'); + return util.PromiseQueue.enqueue(function () { + return new Promise(function (resolve, reject) { + if (!message) reject(new Error('Missing body message')); + // Set the text to the modal and its buttons + document.getElementById('approveConfirm').textContent = approveConfirmLabel; + document.getElementById('declineConfirm').textContent = declineConfirmLabel; + document.getElementById('closeMessage').textContent = closeMessageLabel; + document.getElementById('modalLabel').textContent = label; + // Using innerHTML to set the message to allow HTML formatting + document.getElementById('modalText').innerHTML = message; + // Display buttons acc to the type of alert + document.getElementById('approveConfirm').style.display = isConfirm ? 'inline' : 'none'; + document.getElementById('declineConfirm').style.display = isConfirm ? 'inline' : 'none'; + document.getElementById('closeMessage').style.display = isConfirm ? 'none' : 'inline'; + // Display the modal + var modal = document.getElementById(alertModal); + var backdrop = document.createElement('div'); + backdrop.classList.add('modal-backdrop'); + backdrop.style.opacity = '0.3'; + document.body.appendChild(backdrop); + + // Show the modal + document.body.classList.add('modal-open'); + modal.classList.add('show'); + modal.style.display = 'block'; + backdrop.classList.add('show'); + + // Set the ARIA attributes for the modal + modal.setAttribute('aria-hidden', 'false'); + modal.setAttribute('aria-modal', 'true'); + modal.setAttribute('role', 'dialog'); + + // Get elements to which we will attach event listeners + var modalCloseBtn = document.getElementById(prfx + 'modalCloseBtn'); + var declineConfirm = document.getElementById(prfx + 'declineConfirm'); + var closeMessage = document.getElementById(prfx + 'closeMessage'); + var approveConfirm = document.getElementById(prfx + 'approveConfirm'); + + // Hide modal handlers + var closeModalHandler = function closeModalHandler() { + document.body.classList.remove('modal-open'); + modal.classList.remove('show'); + modal.style.display = 'none'; + backdrop.classList.remove('show'); + if (Array.from(document.body.children).indexOf(backdrop) >= 0) { + document.body.removeChild(backdrop); + } + // remove event listeners + if (modalCloseBtn) modalCloseBtn.removeEventListener('click', close); + if (declineConfirm) declineConfirm.removeEventListener('click', close); + if (closeMessage) closeMessage.removeEventListener('click', close); + if (approveConfirm) approveConfirm.removeEventListener('click', closeConfirm); + modal.removeEventListener('click', close); + document.getElementsByClassName('modal-dialog')[0].removeEventListener('click', stopOutsideModalClick); + modal.removeEventListener('keyup', keyHandler); + }; + + // function to call when modal is closed + var close = function close(e) { + // If user clicked on the backdrop, close the modal + if (e.target.id === alertModal || /close|decline/i.test(e.target.id)) { + closeModalHandler(); + resolve(false); + } + }; + var closeConfirm = function closeConfirm() { + closeModalHandler(); + resolve(true); + }; + var stopOutsideModalClick = function stopOutsideModalClick(e) { + e.stopPropagation(); + }; + var keyHandler = function keyHandler(e) { + if (/Enter/.test(e.key)) { + // We need to focus before clicking the button, because the handler above is based on document.activeElement + if (isConfirm) { + approveConfirm.focus(); + approveConfirm.click(); + } else { + closeMessage.focus(); + closeMessage.click(); + } + } else if (/Esc/.test(e.key)) { + modalCloseBtn.focus(); + modalCloseBtn.click(); + } + }; + + // When hide modal is called, resolve promise with true if hidden using approve button, false otherwise + if (modalCloseBtn) modalCloseBtn.addEventListener('click', close); + if (declineConfirm) declineConfirm.addEventListener('click', close); + if (closeMessage) closeMessage.addEventListener('click', close); + if (approveConfirm) approveConfirm.addEventListener('click', closeConfirm); + modal.addEventListener('click', close); + document.getElementsByClassName('modal-dialog')[0].addEventListener('click', stopOutsideModalClick); + modal.addEventListener('keyup', keyHandler); + // Set focus to the first focusable element inside the modal + modal.focus(); + }); + }).catch(function (err) { + console.warn(err); + }); + } + + /** + * Shows that an upgrade is ready to install + * @param {String} ver The version of the upgrade + * @param {String} type Either 'load', 'install' or 'download' according to the type of upgrade + * @param {String} url An optional download URL + */ + function showUpgradeReady(ver, type, url) { + var alertBoxPersistent = document.getElementById('alertBoxPersistent'); + alertBoxPersistent.innerHTML = '
\n' + ' ×\n' + ' \n' + '
\n'; + document.getElementById('persistentMessage').innerHTML = 'Version ' + ver + (url ? ' is available to ' + type + '! Go to ' + url + '' : ' is ready to ' + type + '! (Re-launch app to ' + type + '.)'); + document.getElementById('closeUpgradeAlert').addEventListener('click', function () { + alertBoxPersistent.style.display = 'none'; + }); + } + + /** + * Checks if a server is accessible by attempting to load a test image from the server + * + * @param {String} imageSrc The full URI of the image + * @param {any} onSuccess A function to call if the image can be loaded + * @param {any} onError A function to call if the image cannot be loaded + */ + function checkServerIsAccessible(imageSrc, onSuccess, onError) { + var image = new Image(); + image.onload = onSuccess; + image.onerror = onError; + image.src = imageSrc; + } + + /** + * Checks whether an element is partially or fully inside the current viewport, and adds the rect.top value to element.top + * + * @param {Window} area The Window to check + * @param {Element} el The DOM element for which to check visibility + * @param {Boolean} fully If true, checks that the entire element is inside the viewport + * @param {Integer} offset An additional bottom (+) or top (-) margin to include in the search window + * @returns {Boolean} True if the element is fully or partially inside the current viewport + */ + function isElementInView(area, el, fully, offset) { + offset = offset || 0; + var rect = el.getBoundingClientRect(); + el.top = rect.top; + // console.log(el.dataset.kiwixurl + ': ' + rect.top); + if (fully) { + return rect.top > 0 + (offset < 0 ? offset : 0) && rect.bottom < area.innerHeight + (offset > 0 ? offset : 0) && rect.left > 0 && rect.right < area.innerWidth; + } else { + return rect.top < area.innerHeight + (offset > 0 ? offset : 0) && rect.bottom > 0 + (offset < 0 ? offset : 0) && rect.left < area.innerWidth && rect.right > 0; + } + } + + /** + * Initiates pointer touch events on the given element in order to set the zoom level + * + * @param {Element} element The element to which the pointer events should be attached + * @param {Node} container The node to which the pointer events should be applied, if different + */ + function initTouchZoom(element, container) { + container = container || element; + // Global vars to cache event state + appstate.evCache = new Array(); + appstate.prevDiff = -1; + // Set initial element transforms + var contentWin = element.ownerDocument.defaultView || element.ownerDocument.parentWindow; + container.style.transformOrigin = 'left top'; // DEV: To support RTL languages, this should be 'right top' + appstate.windowScale = 1; + appstate.sessionScale = 1; + appstate.startVector = null; + // Install event handlers for the pointer target + element.onpointerdown = pointerdown_handler; + element.onpointermove = function (event) { + pointermove_handler(event, container, contentWin); + }; + // Use same handler for pointer{up,cancel,out,leave} events since + // the semantics for these events - in this app - are the same. + element.onpointerup = pointerup_handler; + element.onpointercancel = pointerup_handler; + element.onpointerout = pointerup_handler; + element.onpointerleave = pointerup_handler; + } + function pointerdown_handler(ev) { + // The pointerdown event signals the start of a touch interaction. + // This event is cached to support 2-finger gestures + appstate.evCache.push(ev); + // console.debug('pointerDown', ev); + } + + function pointermove_handler(ev, cont, win) { + // This function implements a 2-pointer horizontal pinch/zoom gesture. + // console.debug('pointerMove', ev); + // Find this event in the cache and update its record with this event + for (var i = 0; i < appstate.evCache.length; i++) { + if (ev.pointerId == appstate.evCache[i].pointerId) { + appstate.evCache[i] = ev; + break; + } + } + + // If two pointers are down, check for pinch gestures + if (appstate.evCache.length == 2) { + ev.preventDefault(); + // Calculate the distance between the two pointers + var x0 = appstate.evCache[0].clientX; + var y0 = appstate.evCache[0].clientY; + var x1 = appstate.evCache[1].clientX; + var y1 = appstate.evCache[1].clientY; + var curDiff = Math.abs(Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2))); + // console.debug('Current difference: ' + curDiff); + if (appstate.prevDiff > 0) { + if (appstate.startVector === null) { + appstate.startVector = curDiff; + appstate.scrollXStart = win.scrollX / appstate.windowScale; + appstate.scrollYStart = win.scrollY / appstate.windowScale; + // console.debug('scrollXStart: ' + appstate.scrollXStart); + } + + appstate.windowScale = appstate.sessionScale * curDiff / appstate.startVector; + // console.debug('winScrollY: ' + win.scrollY); + // console.debug('winScrollX: ' + win.scrollX); + // console.debug('x0x1 mean: ' + (x0 + x1)/2); + // console.debug('y0y1 mean: ' + (y0 + y1)/2); + cont.style.transform = 'scale(' + appstate.windowScale + ')'; + win.scrollTo(appstate.scrollXStart * appstate.windowScale, appstate.scrollYStart * appstate.windowScale); + } + + // Cache the distance for the next move event + appstate.prevDiff = curDiff; + } + } + function pointerup_handler(ev) { + // console.debug(ev.type, ev); + // Remove this pointer from the cache + remove_event(ev); + + // If the number of pointers down is less than two then reset diff tracker + if (appstate.evCache.length < 2) { + appstate.prevDiff = -1; + } + } + function remove_event(ev) { + // Remove this event from the target's cache + for (var i = 0; i < appstate.evCache.length; i++) { + if (appstate.evCache[i].pointerId == ev.pointerId) { + appstate.evCache.splice(i, 1); + break; + } + } + appstate.startVector = null; + appstate.sessionScale = appstate.windowScale; + } + + // Reports an error in loading one of the ASM or WASM machines to the UI API Status Panel + // This can't be done in app.js because the error occurs after the API panel is first displayed + function reportAssemblerErrorToAPIStatusPanel(decoderType, error, assemblerMachineType) { + console.error('Could not instantiate any ' + decoderType + ' decoder!', error); + params.decompressorAPI.assemblerMachineType = assemblerMachineType; + params.decompressorAPI.errorStatus = 'Error loading ' + decoderType + ' decompressor!'; + var decompAPI = document.getElementById('decompressorAPIStatus'); + decompAPI.textContent = 'Decompressor API: ' + params.decompressorAPI.errorStatus; + decompAPI.className = 'apiBroken'; + document.getElementById('apiStatusDiv').className = 'panel panel-danger'; + } + + // Reports the search provider to the API Status Panel + function reportSearchProviderToAPIStatusPanel(provider) { + var providerAPI = document.getElementById('searchProviderStatus'); + if (providerAPI) { + // NB we need this so that tests don't fail + providerAPI.textContent = 'Search Provider: ' + (/^fulltext/.test(provider) ? 'Title + Xapian [' + provider + ']' : /^title/.test(provider) ? 'Title only [' + provider + ']' : 'Not initialized'); + providerAPI.className = /^fulltext/.test(provider) ? 'apiAvailable' : !/ERROR/.test(provider) ? 'apiUnavailable' : 'apiBroken'; + } + } + + /** + * Warn the user that he/she clicked on an external link, and open it in a new tab + * + * @param {Event} event The click event (on an anchor) to handle (optional, but if not provided, clickedAnchor must be provided) + * @param {Element} clickedAnchor The DOM anchor that has been clicked (optional, defaults to event.target) + * @param {String} message The message to display to the user (optional, defaults to a generic message) + */ + function warnAndOpenExternalLinkInNewTab(event, clickedAnchor, message) { + if (event) { + // We have to prevent any blank target from firing on the original event + event.target.removeAttribute('target'); + event.preventDefault(); + event.stopPropagation(); + } + if (!clickedAnchor) clickedAnchor = event.target; + var href = clickedAnchor.protocol ? clickedAnchor.href : 'http://' + clickedAnchor.href; + clickedAnchor.type = clickedAnchor.type || (/https:\/\/www.openstreetmap.*?mlat/.test(href) ? 'map' : 'link'); + message = message || '

Click the link to open this external ' + clickedAnchor.type + ' (in a new ' + params.windowOpener + ')'; + var anchor = '' + clickedAnchor.href + ''; + message += ':

' + anchor; + var opener = function opener(ev) { + try { + window.open(href, params.windowOpener === 'tab' ? '_blank' : ev ? ev.target.title : 'Download', params.windowOpener === 'window' ? 'toolbar=0,location=0,menubar=0,width=800,height=600,resizable=1,scrollbars=1' : null); + if (ev) ev.preventDefault(); + } catch (e) { + if (!ev) systemAlert('We could not open this link programmatically! Please turn on "Warn before opening external links" in Configuration (under "Control of browsing data") and try again.');else ev.target.target = '_blank'; + } + }; + if (params.openExternalLinksInNewTabs) { + systemAlert(message, 'Opening external ' + clickedAnchor.type, false, null, null, 'Close'); + // Close dialog box if user clicks the link + document.getElementById('kiwixExternalLink').addEventListener('click', function (e) { + opener(e); + document.getElementById('closeMessage').click(); + }); + } else { + opener(); + } + } + + /** + * Set up toggles to make Configuration headings collapsible + */ + function setupConfigurationToggles() { + var configHeadings = document.querySelectorAll('.panel-heading'); + Array.prototype.slice.call(configHeadings).forEach(function (panelHeading) { + var headingText = panelHeading.innerHTML; + var panelBody = panelHeading.nextElementSibling; + var panelParent = panelHeading.parentElement; + var panelPrevious = panelParent ? panelParent.previousElementSibling : null; + if (panelPrevious && !/panel\s/.test(panelPrevious.className)) panelPrevious = null; + var panelPreviousHeading = panelPrevious ? panelPrevious.querySelector('.panel-heading') : null; + var panelNext = panelParent ? panelParent.nextElementSibling : null; + if (panelNext && !/panel\s/.test(panelNext.className)) panelPrevious = null; + var panelNextHeading = panelNext ? panelNext.querySelector('.panel-heading') : null; + panelHeading.addEventListener('click', function () { + if (/▶/.test(panelHeading.innerHTML)) { + panelHeading.innerHTML = panelHeading.innerHTML.replace(/([▼▶]\s)?/, '▼ '); + panelBody.style.display = 'block'; + // We're opening, so separate from previous and next + if (panelPrevious) panelPrevious.style.marginBottom = null; + if (panelParent) panelParent.style.marginBottom = panelNext ? null : 0; + // Close all other panels + Array.prototype.slice.call(configHeadings).forEach(function (head) { + var text = head.innerHTML; + if (/▶/.test(text)) return; + // Don't close panel for certain cases + if (panelHeading === head || /API\sStatus/.test(text + headingText) || !params.appCache && /Troubleshooting/.test(text)) return; + head.click(); + }); + } else { + panelHeading.innerHTML = panelHeading.innerHTML.replace(/([▼▶]\s)?/, '▶ '); + panelBody.style.display = 'none'; + if (panelPrevious) panelPrevious.style.marginBottom = panelPreviousHeading && /▼/.test(panelPreviousHeading.innerHTML) ? null : 0; + if (panelNext) panelParent.style.marginBottom = panelNextHeading && /▼/.test(panelNextHeading.innerHTML) ? null : 0; + } + }); + + // Close each heading to begin with, except the first and specials + var exceptionTest = function exceptionTest(testStr) { + return /Display\ssize|API\sStatus/i.test(testStr) || /Troubleshooting/i.test(testStr) && !params.appCache; + }; + if (panelNext) panelNextHeading.innerHTML = (exceptionTest(panelNextHeading.innerHTML) ? '▼ ' : '▶ ') + panelNextHeading.innerHTML; + var icon = exceptionTest(headingText) ? '▼ ' : '▶ '; + panelHeading.innerHTML = panelHeading.innerHTML.replace(/([▼▶]\s)?/, icon); + if (panelBody && !exceptionTest(headingText)) panelBody.style.display = 'none'; + var marginBottom = 0; + marginBottom = /▼/.test(panelHeading.innerHTML) ? null : marginBottom; + if (panelNext) panelParent.style.marginBottom = /▼/.test(panelNextHeading.innerHTML) ? null : marginBottom;else panelParent.style.marginBottom = 0; + }); + // Programme the button to toggle all settings + document.getElementById('btnToggleSettings').addEventListener('mousedown', function (e) { + e.preventDefault(); + var open = /Open/.test(e.target.innerHTML); + Array.prototype.slice.call(configHeadings).forEach(function (panelHeading) { + if (!open && /API\sStatus/.test(panelHeading.innerHTML)) return; + if (!open && /▼\sTroubleshooting/.test(panelHeading.innerHTML)) { + panelHeading.click(); + return; + } + var panelBody = panelHeading.nextElementSibling; + panelHeading.innerHTML = open ? panelHeading.innerHTML.replace(/▶/, '▼') : panelHeading.innerHTML.replace(/▼/, '▶'); + panelBody.style.display = open ? 'block' : 'none'; + var panelParent = panelHeading.parentElement; + if (panelParent) panelParent.style.marginBottom = open ? null : 0; + }); + if (open) e.target.innerHTML = e.target.innerHTML.replace(/▶\sOpen/, '▼ Close');else e.target.innerHTML = e.target.innerHTML.replace(/▼\sClose/, '▶ Open'); + }); + } + + /** + * A function to test whether the app is in full-screen mode + * @returns {Boolean} True if the app is in full-screen mode, false otherwise + */ + function appIsFullScreen() { + return !!(document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement); + } + + /** + * Puts the requested element into full-screen mode, or cancels full-screen mode if no element is provided + * @param {Element} el The element to put into full-screen mode. If not provided, the function will cancel any full-screen mode + * @returns {Promise} A Promise that resolves to true if the element entered full-screen mode, false if full-screen mode cancelled + */ + function requestOrCancelFullScreen(el) { + // Don't do anything if already in full-screen mode, and user has not requested to exit full-screen mode + if (el && appIsFullScreen()) { + console.debug('Display is already full screen'); + return Promise.resolve(true); + } + // Choose the correct method to request or cancel full-screen mode + var rq = function rq(sel) { + var fn = sel + // Request full-screen mode + ? sel.requestFullscreen ? sel.requestFullscreen() : sel.webkitRequestFullscreen ? sel.webkitRequestFullscreen() : sel.mozRequestFullScreen ? sel.mozRequestFullScreen() : sel.msRequestFullscreen ? sel.msRequestFullscreen() : Promise.reject('No full-screen mode API available') + // Cancel full-screen mode + : document.exitFullscreen ? document.exitFullscreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.msExitFullscreen ? document.msExitFullscreen() : Promise.reject('No full-screen mode API available'); + return Promise.resolve(fn); + }; + return rq(el).then(function () { + console.log(el ? 'Full-screen mode enabled' : 'Full-screen mode disabled'); + return el ? true : false; + }).catch(function (err) { + console.log('Error enabling full-screen mode', err); + throw err; + }); + } + + /** + * Attempts to put the app into full-screen mode and (if requested) lock the display orientation using the Screen Orientation Lock API + * @param {string} val A valid value in the API, e.g. '', 'natural', 'portrait', 'landscape' + * @returns {Promise} A Promise that resolves to a string informing the result (which may be '') + */ + function lockDisplayOrientation(val) { + if (val) { + // Request setting the app to full-screen mode + return requestOrCancelFullScreen(document.documentElement).then(function () { + // If the app is now in full-screen mode, lock the display orientation); + if (val !== 'fullscreen') { + if (screen && screen.orientation && screen.orientation.lock) { + if (val) { + return screen.orientation.lock(val).then(function () { + console.log('Display orientation locked to ' + val); + }).catch(function (error) { + console.warn('Error locking display orientation (but in some contexts, it may have worked anyway)', error); + throw error; + }); + } else { + screen.orientation.unlock(); // NB This doesn't return a Promise + // return Promise.resolve(); + } + } else { + console.warn('The screen.orientation.lock API is not supported on this device!'); + var rtn = val ? 'unsupported' : ''; + return rtn; + // return Promise.resolve(rtn); + } + } else { + if (!document.documentElement.requestFullscreen && (document.documentElement.webkitRequestFullscreen || document.documentElement.msRequestFullscreen)) { + // We are in a Safari browser or IE11, and a click is required to enter full-screen mode + return 'click'; + } + } + }).catch(function (error) { + throw error; + }); + } else { + // User wants to cancel full-screen mode and unlock the display orientation + if (screen && screen.orientation && screen.orientation.unlock) { + screen.orientation.unlock(); // NB This doesn't return a Promise + } + + return requestOrCancelFullScreen(); + } + } + + /** + * Finds the closest or enclosing tag of an element. + * Returns undefined if there isn't any. + * + * @param {Element} element The element to test + * @returns {Element} closest enclosing anchor tag (if any) + */ + function closestAnchorEnclosingElement(element) { + if (Element.prototype.closest) { + // Recent browsers support that natively. See https://developer.mozilla.org/en-US/docs/Web/API/Element/closest + return element.closest('a,area'); + } else { + // For other browsers, notably IE, we do that by hand (we did not manage to make polyfills work on IE11) + var currentElement = element; + while (currentElement.tagName !== 'A' && currentElement.tagName !== 'AREA') { + // If there is no parent Element, we did not find any enclosing A tag + if (!currentElement.parentElement) { + return; + } else { + // Else we try the next parent Element + currentElement = currentElement.parentElement; + } + } + // If we reach this line, it means the currentElement is the enclosing Anchor we're looking for + return currentElement; + } + } + + /** + * Functions and classes exposed by this module + */ + var uiUtil = { + systemAlert: systemAlert, + showUpgradeReady: showUpgradeReady, + feedNodeWithBlob: feedNodeWithBlob, + deriveZimUrlFromRelativeUrl: deriveZimUrlFromRelativeUrl, + getClosestMatchForTagname: getClosestMatchForTagname, + removeUrlParameters: removeUrlParameters, + ToC: TableOfContents, + isElementInView: isElementInView, + makeReturnLink: makeReturnLink, + pollOpsPanel: pollOpsPanel, + pollSpinner: pollSpinner, + clearSpinner: clearSpinner, + XHR: XHR, + printCustomElements: printCustomElements, + downloadBlobUWP: downloadBlobUWP, + displayActiveContentWarning: displayActiveContentWarning, + displayFileDownloadAlert: displayFileDownloadAlert, + insertBreakoutLink: insertBreakoutLink, + extractHTML: extractHTML, + checkServerIsAccessible: checkServerIsAccessible, + initTouchZoom: initTouchZoom, + appIsFullScreen: appIsFullScreen, + lockDisplayOrientation: lockDisplayOrientation, + reportAssemblerErrorToAPIStatusPanel: reportAssemblerErrorToAPIStatusPanel, + reportSearchProviderToAPIStatusPanel: reportSearchProviderToAPIStatusPanel, + warnAndOpenExternalLinkInNewTab: warnAndOpenExternalLinkInNewTab, + setupConfigurationToggles: setupConfigurationToggles, + closestAnchorEnclosingElement: closestAnchorEnclosingElement + }; + + var $$9 = _export; + var global$5 = global$M; + var clearImmediate = task$1.clear; + + // `clearImmediate` method + // http://w3c.github.io/setImmediate/#si-clearImmediate + $$9({ global: true, bind: true, enumerable: true, forced: global$5.clearImmediate !== clearImmediate }, { + clearImmediate: clearImmediate + }); + + /* global Bun -- Deno case */ + + var engineIsBun = typeof Bun == 'function' && Bun && typeof Bun.version == 'string'; + + var global$4 = global$M; + var apply = functionApply; + var isCallable = isCallable$w; + var ENGINE_IS_BUN = engineIsBun; + var USER_AGENT = engineUserAgent; + var arraySlice = arraySlice$a; + var validateArgumentsLength$1 = validateArgumentsLength$5; + + var Function$1 = global$4.Function; + // dirty IE9- and Bun 0.3.0- checks + var WRAP = /MSIE .\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () { + var version = global$4.Bun.version.split('.'); + return version.length < 3 || version[0] == 0 && (version[1] < 3 || version[1] == 3 && version[2] == 0); + })(); + + // IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers + // https://github.com/oven-sh/bun/issues/1633 + var schedulersFix$1 = function (scheduler, hasTimeArg) { + var firstParamIndex = hasTimeArg ? 2 : 1; + return WRAP ? function (handler, timeout /* , ...arguments */) { + var boundArgs = validateArgumentsLength$1(arguments.length, 1) > firstParamIndex; + var fn = isCallable(handler) ? handler : Function$1(handler); + var params = boundArgs ? arraySlice(arguments, firstParamIndex) : []; + var callback = boundArgs ? function () { + apply(fn, this, params); + } : fn; + return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback); + } : scheduler; + }; + + var $$8 = _export; + var global$3 = global$M; + var setTask = task$1.set; + var schedulersFix = schedulersFix$1; + + // https://github.com/oven-sh/bun/issues/1633 + var setImmediate$1 = global$3.setImmediate ? schedulersFix(setTask, false) : setTask; + + // `setImmediate` method + // http://w3c.github.io/setImmediate/#si-setImmediate + $$8({ global: true, bind: true, enumerable: true, forced: global$3.setImmediate !== setImmediate$1 }, { + setImmediate: setImmediate$1 + }); + + var createTypedArrayConstructor$5 = typedArrayConstructorExports; + + // `Int16Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$5('Int16', function (init) { + return function Int16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$4 = typedArrayConstructorExports; + + // `Int32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$4('Int32', function (init) { + return function Int32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$3 = typedArrayConstructorExports; + + // `Uint16Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$3('Uint16', function (init) { + return function Uint16Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$2 = typedArrayConstructorExports; + + // `Uint32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$2('Uint32', function (init) { + return function Uint32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor$1 = typedArrayConstructorExports; + + // `Float32Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor$1('Float32', function (init) { + return function Float32Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var createTypedArrayConstructor = typedArrayConstructorExports; + + // `Float64Array` constructor + // https://tc39.es/ecma262/#sec-typedarray-objects + createTypedArrayConstructor('Float64', function (init) { + return function Float64Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; + }); + + var $$7 = _export; + var fails$3 = fails$T; + + // eslint-disable-next-line es/no-math-imul -- required for testing + var $imul = Math.imul; + + var FORCED = fails$3(function () { + return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2; + }); + + // `Math.imul` method + // https://tc39.es/ecma262/#sec-math.imul + // some WebKit versions fails with big numbers, some has wrong arity + $$7({ target: 'Math', stat: true, forced: FORCED }, { + imul: function imul(x, y) { + var UINT16 = 0xFFFF; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } + }); + + // `Math.sign` method implementation + // https://tc39.es/ecma262/#sec-math.sign + // eslint-disable-next-line es/no-math-sign -- safe + var mathSign = Math.sign || function sign(x) { + var n = +x; + // eslint-disable-next-line no-self-compare -- NaN check + return n == 0 || n != n ? n : n < 0 ? -1 : 1; + }; + + var sign = mathSign; + + var abs = Math.abs; + var pow = Math.pow; + var EPSILON = pow(2, -52); + var EPSILON32 = pow(2, -23); + var MAX32 = pow(2, 127) * (2 - EPSILON32); + var MIN32 = pow(2, -126); + + var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; + }; + + // `Math.fround` method implementation + // https://tc39.es/ecma262/#sec-math.fround + // eslint-disable-next-line es/no-math-fround -- safe + var mathFround = Math.fround || function fround(x) { + var n = +x; + var $abs = abs(n); + var $sign = sign(n); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare -- NaN check + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; + }; + + var $$6 = _export; + var fround = mathFround; + + // `Math.fround` method + // https://tc39.es/ecma262/#sec-math.fround + $$6({ target: 'Math', stat: true }, { fround: fround }); + + var $$5 = _export; + + var floor = Math.floor; + var log = Math.log; + var LOG2E = Math.LOG2E; + + // `Math.clz32` method + // https://tc39.es/ecma262/#sec-math.clz32 + $$5({ target: 'Math', stat: true }, { + clz32: function clz32(x) { + var n = x >>> 0; + return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32; + } + }); + + var $$4 = _export; + var trunc = mathTrunc; + + // `Math.trunc` method + // https://tc39.es/ecma262/#sec-math.trunc + $$4({ target: 'Math', stat: true }, { + trunc: trunc + }); + + var itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + var ctoi$1 = {}; + + for (var index = 0; index < 66; index++) ctoi$1[itoc.charAt(index)] = index; + + var base64Map = { + itoc: itoc, + ctoi: ctoi$1 + }; + + var $$3 = _export; + var global$2 = global$M; + var getBuiltIn$3 = getBuiltIn$f; + var uncurryThis = functionUncurryThis; + var call = functionCall; + var fails$2 = fails$T; + var toString = toString$m; + var hasOwn$2 = hasOwnProperty_1; + var validateArgumentsLength = validateArgumentsLength$5; + var ctoi = base64Map.ctoi; + + var disallowed = /[^\d+/a-z]/i; + var whitespaces = /[\t\n\f\r ]+/g; + var finalEq = /[=]{1,2}$/; + + var $atob = getBuiltIn$3('atob'); + var fromCharCode = String.fromCharCode; + var charAt = uncurryThis(''.charAt); + var replace = uncurryThis(''.replace); + var exec = uncurryThis(disallowed.exec); + + var NO_SPACES_IGNORE = fails$2(function () { + return $atob(' ') !== ''; + }); + + var NO_ENCODING_CHECK = !fails$2(function () { + $atob('a'); + }); + + var NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails$2(function () { + $atob(); + }); + + var WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1; + + // `atob` method + // https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob + $$3({ global: true, bind: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, { + atob: function atob(data) { + validateArgumentsLength(arguments.length, 1); + // `webpack` dev server bug on IE global methods - use call(fn, global, ...) + if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return call($atob, global$2, data); + var string = replace(toString(data), whitespaces, ''); + var output = ''; + var position = 0; + var bc = 0; + var chr, bs; + if (string.length % 4 == 0) { + string = replace(string, finalEq, ''); + } + if (string.length % 4 == 1 || exec(disallowed, string)) { + throw new (getBuiltIn$3('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError'); + } + while (chr = charAt(string, position++)) { + if (hasOwn$2(ctoi, chr)) { + bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr]; + if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6)); + } + } return output; + } + }); + + var IS_NODE = engineIsNode; + + var tryNodeRequire$1 = function (name) { + try { + // eslint-disable-next-line no-new-func -- safe + if (IS_NODE) return Function('return require("' + name + '")')(); + } catch (error) { /* empty */ } + }; + + var DESCRIPTORS$2 = descriptors; + var fails$1 = fails$T; + var anObject$1 = anObject$o; + var create$1 = objectCreate; + var normalizeStringArgument$2 = normalizeStringArgument$4; + + var nativeErrorToString = Error.prototype.toString; + + var INCORRECT_TO_STRING$1 = fails$1(function () { + if (DESCRIPTORS$2) { + // Chrome 32- incorrectly call accessor + // eslint-disable-next-line es/no-object-defineproperty -- safe + var object = create$1(Object.defineProperty({}, 'name', { get: function () { + return this === object; + } })); + if (nativeErrorToString.call(object) !== 'true') return true; + } + // FF10- does not properly handle non-strings + return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1' + // IE8 does not properly handle defaults + || nativeErrorToString.call({}) !== 'Error'; + }); + + var errorToString$1 = INCORRECT_TO_STRING$1 ? function toString() { + var O = anObject$1(this); + var name = normalizeStringArgument$2(O.name, 'Error'); + var message = normalizeStringArgument$2(O.message); + return !name ? message : !message ? name : name + ': ' + message; + } : nativeErrorToString; + + var domExceptionConstants = { + IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 }, + DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 }, + HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 }, + WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 }, + InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 }, + NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 }, + NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 }, + NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 }, + NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 }, + InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 }, + InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 }, + SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 }, + InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 }, + NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 }, + InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 }, + ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 }, + TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 }, + SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 }, + NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 }, + AbortError: { s: 'ABORT_ERR', c: 20, m: 1 }, + URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 }, + QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 }, + TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 }, + InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 }, + DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 } + }; + + var $$2 = _export; + var tryNodeRequire = tryNodeRequire$1; + var getBuiltIn$2 = getBuiltIn$f; + var fails = fails$T; + var create = objectCreate; + var createPropertyDescriptor$1 = createPropertyDescriptor$a; + var defineProperty$1 = objectDefineProperty.f; + var defineBuiltIn = defineBuiltIn$h; + var defineBuiltInAccessor = defineBuiltInAccessor$d; + var hasOwn$1 = hasOwnProperty_1; + var anInstance$1 = anInstance$9; + var anObject = anObject$o; + var errorToString = errorToString$1; + var normalizeStringArgument$1 = normalizeStringArgument$4; + var DOMExceptionConstants$1 = domExceptionConstants; + var clearErrorStack$1 = errorStackClear; + var InternalStateModule = internalState; + var DESCRIPTORS$1 = descriptors; + + var DOM_EXCEPTION$2 = 'DOMException'; + var DATA_CLONE_ERR = 'DATA_CLONE_ERR'; + var Error$2 = getBuiltIn$2('Error'); + // NodeJS < 17.0 does not expose `DOMException` to global + var NativeDOMException$1 = getBuiltIn$2(DOM_EXCEPTION$2) || (function () { + try { + // NodeJS < 15.0 does not expose `MessageChannel` to global + var MessageChannel = getBuiltIn$2('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel; + // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe + new MessageChannel().port1.postMessage(new WeakMap()); + } catch (error) { + if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor; + } + })(); + var NativeDOMExceptionPrototype = NativeDOMException$1 && NativeDOMException$1.prototype; + var ErrorPrototype = Error$2.prototype; + var setInternalState = InternalStateModule.set; + var getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION$2); + var HAS_STACK = 'stack' in Error$2(DOM_EXCEPTION$2); + + var codeFor = function (name) { + return hasOwn$1(DOMExceptionConstants$1, name) && DOMExceptionConstants$1[name].m ? DOMExceptionConstants$1[name].c : 0; + }; + + var $DOMException$1 = function DOMException() { + anInstance$1(this, DOMExceptionPrototype$1); + var argumentsLength = arguments.length; + var message = normalizeStringArgument$1(argumentsLength < 1 ? undefined : arguments[0]); + var name = normalizeStringArgument$1(argumentsLength < 2 ? undefined : arguments[1], 'Error'); + var code = codeFor(name); + setInternalState(this, { + type: DOM_EXCEPTION$2, + name: name, + message: message, + code: code + }); + if (!DESCRIPTORS$1) { + this.name = name; + this.message = message; + this.code = code; + } + if (HAS_STACK) { + var error = Error$2(message); + error.name = DOM_EXCEPTION$2; + defineProperty$1(this, 'stack', createPropertyDescriptor$1(1, clearErrorStack$1(error.stack, 1))); + } + }; + + var DOMExceptionPrototype$1 = $DOMException$1.prototype = create(ErrorPrototype); + + var createGetterDescriptor = function (get) { + return { enumerable: true, configurable: true, get: get }; + }; + + var getterFor = function (key) { + return createGetterDescriptor(function () { + return getInternalState(this)[key]; + }); + }; + + if (DESCRIPTORS$1) { + // `DOMException.prototype.code` getter + defineBuiltInAccessor(DOMExceptionPrototype$1, 'code', getterFor('code')); + // `DOMException.prototype.message` getter + defineBuiltInAccessor(DOMExceptionPrototype$1, 'message', getterFor('message')); + // `DOMException.prototype.name` getter + defineBuiltInAccessor(DOMExceptionPrototype$1, 'name', getterFor('name')); + } + + defineProperty$1(DOMExceptionPrototype$1, 'constructor', createPropertyDescriptor$1(1, $DOMException$1)); + + // FF36- DOMException is a function, but can't be constructed + var INCORRECT_CONSTRUCTOR = fails(function () { + return !(new NativeDOMException$1() instanceof Error$2); + }); + + // Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs + var INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () { + return ErrorPrototype.toString !== errorToString || String(new NativeDOMException$1(1, 2)) !== '2: 1'; + }); + + // Deno 1.6.3- DOMException.prototype.code just missed + var INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () { + return new NativeDOMException$1(1, 'DataCloneError').code !== 25; + }); + + // Deno 1.6.3- DOMException constants just missed + INCORRECT_CONSTRUCTOR + || NativeDOMException$1[DATA_CLONE_ERR] !== 25 + || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25; + + var FORCED_CONSTRUCTOR$1 = INCORRECT_CONSTRUCTOR; + + // `DOMException` constructor + // https://webidl.spec.whatwg.org/#idl-DOMException + $$2({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR$1 }, { + DOMException: FORCED_CONSTRUCTOR$1 ? $DOMException$1 : NativeDOMException$1 + }); + + var PolyfilledDOMException$1 = getBuiltIn$2(DOM_EXCEPTION$2); + var PolyfilledDOMExceptionPrototype$1 = PolyfilledDOMException$1.prototype; + + if (INCORRECT_TO_STRING && (NativeDOMException$1 === PolyfilledDOMException$1)) { + defineBuiltIn(PolyfilledDOMExceptionPrototype$1, 'toString', errorToString); + } + + if (INCORRECT_CODE && DESCRIPTORS$1 && NativeDOMException$1 === PolyfilledDOMException$1) { + defineBuiltInAccessor(PolyfilledDOMExceptionPrototype$1, 'code', createGetterDescriptor(function () { + return codeFor(anObject(this).name); + })); + } + + // `DOMException` constants + for (var key$1 in DOMExceptionConstants$1) if (hasOwn$1(DOMExceptionConstants$1, key$1)) { + var constant$1 = DOMExceptionConstants$1[key$1]; + var constantName$1 = constant$1.s; + var descriptor$1 = createPropertyDescriptor$1(6, constant$1.c); + if (!hasOwn$1(PolyfilledDOMException$1, constantName$1)) { + defineProperty$1(PolyfilledDOMException$1, constantName$1, descriptor$1); + } + if (!hasOwn$1(PolyfilledDOMExceptionPrototype$1, constantName$1)) { + defineProperty$1(PolyfilledDOMExceptionPrototype$1, constantName$1, descriptor$1); + } + } + + var $$1 = _export; + var global$1 = global$M; + var getBuiltIn$1 = getBuiltIn$f; + var createPropertyDescriptor = createPropertyDescriptor$a; + var defineProperty = objectDefineProperty.f; + var hasOwn = hasOwnProperty_1; + var anInstance = anInstance$9; + var inheritIfRequired = inheritIfRequired$6; + var normalizeStringArgument = normalizeStringArgument$4; + var DOMExceptionConstants = domExceptionConstants; + var clearErrorStack = errorStackClear; + var DESCRIPTORS = descriptors; + + var DOM_EXCEPTION$1 = 'DOMException'; + var Error$1 = getBuiltIn$1('Error'); + var NativeDOMException = getBuiltIn$1(DOM_EXCEPTION$1); + + var $DOMException = function DOMException() { + anInstance(this, DOMExceptionPrototype); + var argumentsLength = arguments.length; + var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]); + var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error'); + var that = new NativeDOMException(message, name); + var error = Error$1(message); + error.name = DOM_EXCEPTION$1; + defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1))); + inheritIfRequired(that, this, $DOMException); + return that; + }; + + var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype; + + var ERROR_HAS_STACK = 'stack' in Error$1(DOM_EXCEPTION$1); + var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2); + + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global$1, DOM_EXCEPTION$1); + + // Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it + // https://github.com/Jarred-Sumner/bun/issues/399 + var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable); + + var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK; + + // `DOMException` constructor patch for `.stack` where it's required + // https://webidl.spec.whatwg.org/#es-DOMException-specialness + $$1({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, { // TODO: fix export logic + DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException + }); + + var PolyfilledDOMException = getBuiltIn$1(DOM_EXCEPTION$1); + var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype; + + if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) { + { + defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException)); + } + + for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) { + var constant = DOMExceptionConstants[key]; + var constantName = constant.s; + if (!hasOwn(PolyfilledDOMException, constantName)) { + defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c)); + } + } + } + + var getBuiltIn = getBuiltIn$f; + var setToStringTag = setToStringTag$9; + + var DOM_EXCEPTION = 'DOMException'; + + // `DOMException.prototype[@@toStringTag]` property + setToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION); + + var $ = _export; + var copyWithin = arrayCopyWithin; + var addToUnscopables = addToUnscopables$4; + + // `Array.prototype.copyWithin` method + // https://tc39.es/ecma262/#sec-array.prototype.copywithin + $({ target: 'Array', proto: true }, { + copyWithin: copyWithin + }); + + // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables + addToUnscopables('copyWithin'); + + var XZ$1 = function () { + var _scriptDir = (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href); + return function (XZ) { + XZ = XZ || {}; + var a; + a || (a = typeof XZ !== 'undefined' ? XZ : {}); + var Promise = function () { + function b() {} + function e(c, f) { + return function () { + c.apply(f, arguments); + }; + } + function d(c) { + if (!(this instanceof d)) throw new TypeError("Promises must be constructed via new"); + if ("function" !== typeof c) throw new TypeError("not a function"); + this.s = 0; + this.B = !1; + this.u = void 0; + this.v = []; + P(c, this); + } + function m(c, f) { + for (; 3 === c.s;) c = c.u; + 0 === c.s ? c.v.push(f) : (c.B = !0, d.C(function () { + var g = 1 === c.s ? f.F : f.G; + if (null === g) (1 === c.s ? h : k)(f.promise, c.u);else { + try { + var l = g(c.u); + } catch (p) { + k(f.promise, p); + return; + } + h(f.promise, l); + } + })); + } + function h(c, f) { + try { + if (f === c) throw new TypeError("A promise cannot be resolved with itself."); + if (f && ("object" === _typeof(f) || "function" === typeof f)) { + var g = f.then; + if (f instanceof d) { + c.s = 3; + c.u = f; + v(c); + return; + } + if ("function" === typeof g) { + P(e(g, f), c); + return; + } + } + c.s = 1; + c.u = f; + v(c); + } catch (l) { + k(c, l); + } + } + function k(c, f) { + c.s = 2; + c.u = f; + v(c); + } + function v(c) { + 2 === c.s && 0 === c.v.length && d.C(function () { + c.B || d.D(c.u); + }); + for (var f = 0, g = c.v.length; f < g; f++) m(c, c.v[f]); + c.v = null; + } + function I(c, f, g) { + this.F = "function" === typeof c ? c : null; + this.G = "function" === typeof f ? f : null; + this.promise = g; + } + function P(c, f) { + var g = !1; + try { + c(function (l) { + g || (g = !0, h(f, l)); + }, function (l) { + g || (g = !0, k(f, l)); + }); + } catch (l) { + g || (g = !0, k(f, l)); + } + } + d.prototype["catch"] = function (c) { + return this.then(null, c); + }; + d.prototype.then = function (c, f) { + var g = new this.constructor(b); + m(this, new I(c, f, g)); + return g; + }; + d.all = function (c) { + return new d(function (f, g) { + function l(Q, w) { + try { + if (w && ("object" === _typeof(w) || "function" === typeof w)) { + var R = w.then; + if ("function" === typeof R) { + R.call(w, function (J) { + l(Q, J); + }, g); + return; + } + } + p[Q] = w; + 0 === --ea && f(p); + } catch (J) { + g(J); + } + } + if (!Array.isArray(c)) return g(new TypeError("Promise.all accepts an array")); + var p = Array.prototype.slice.call(c); + if (0 === p.length) return f([]); + for (var ea = p.length, C = 0; C < p.length; C++) l(C, p[C]); + }); + }; + d.resolve = function (c) { + return c && "object" === _typeof(c) && c.constructor === d ? c : new d(function (f) { + f(c); + }); + }; + d.reject = function (c) { + return new d(function (f, g) { + g(c); + }); + }; + d.race = function (c) { + return new d(function (f, g) { + if (!Array.isArray(c)) return g(new TypeError("Promise.race accepts an array")); + for (var l = 0, p = c.length; l < p; l++) d.resolve(c[l]).then(f, g); + }); + }; + d.C = "function" === typeof setImmediate && function (c) { + setImmediate(c); + } || function (c) { + setTimeout(c, 0); + }; + d.D = function (c) { + "undefined" !== typeof console && console && console.warn("Possible Unhandled Promise Rejection:", c); + }; + return d; + }(), + n, + q; + a.ready = new Promise(function (b, e) { + n = b; + q = e; + }); + var r = {}, + t; + for (t in a) a.hasOwnProperty(t) && (r[t] = a[t]); + var u = ""; + "undefined" !== typeof document && document.currentScript && (u = document.currentScript.src); + _scriptDir && (u = _scriptDir); + 0 !== u.indexOf("blob:") ? u = u.substr(0, u.replace(/[?#].*/, "").lastIndexOf("/") + 1) : u = ""; + var x = a.printErr || console.warn.bind(console); + for (t in r) r.hasOwnProperty(t) && (a[t] = r[t]); + r = null; + var y; + a.wasmBinary && (y = a.wasmBinary); + a.noExitRuntime || !0; + function aa() { + this.buffer = new ArrayBuffer(z / 65536 * 65536); + } + function ba() { + this.exports = + // EMSCRIPTEN_START_ASM + function instantiate(V) { + function c(d) { + d.set = function (a, b) { + this[a] = b; + }; + d.get = function (a) { + return this[a]; + }; + return d; + } + var e; + var f = new Uint8Array(123); + for (var a = 25; a >= 0; --a) { + f[48 + a] = 52 + a; + f[65 + a] = a; + f[97 + a] = 26 + a; + } + f[43] = 62; + f[47] = 63; + function l(m, n, o) { + var g, + h, + a = 0, + i = n, + j = o.length, + k = n + (j * 3 >> 2) - (o[j - 2] == "=") - (o[j - 1] == "="); + for (; a < j; a += 4) { + g = f[o.charCodeAt(a + 1)]; + h = f[o.charCodeAt(a + 2)]; + m[i++] = f[o.charCodeAt(a)] << 2 | g >> 4; + if (i < k) m[i++] = g << 4 | h >> 2; + if (i < k) m[i++] = h << 6 | f[o.charCodeAt(a + 3)]; + } + } + function p(q) { + l(e, 1024, "/Td6WFo="); + l(e, 1032, "QBRQ"); + } + function T(U) { + var r = U.a; + var s = r.buffer; + var t = new Int8Array(s); + var u = new Int16Array(s); + var v = new Int32Array(s); + var w = new Uint8Array(s); + var x = new Uint16Array(s); + var y = new Uint32Array(s); + var B = Math.imul; + var E = Math.clz32; + U.abort; + var O = U.b; + var P = U.c; + var Q = 0; + // EMSCRIPTEN_START_FUNCS + function pa(a) { + a = a | 0; + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + x = 0, + z = 0; + d = v[a >> 2]; + a: { + if (v[d + 36 >> 2]) { + h = v[d >> 2]; + break a; + } + t[d + 40 | 0] = 0; + v[d >> 2] = 0; + v[d + 4 >> 2] = 0; + v[d + 24 >> 2] = 0; + v[d + 28 >> 2] = 0; + _(d + 72 | 0, 100); + v[d + 172 >> 2] = 12; + h = 0; + } + z = v[a + 20 >> 2]; + s = v[a + 8 >> 2]; + v[d + 16 >> 2] = s; + x = d + 96 | 0; + p = d + 176 | 0; + n = d + 168 | 0; + while (1) { + b: { + c: { + d: { + e: { + f: { + g: { + h: { + i: { + j: { + k: { + l: { + m: { + switch (h | 0) { + case 2: + b = v[a + 8 >> 2]; + e = v[a + 4 >> 2]; + h = v[d + 172 >> 2]; + c = v[a + 12 >> 2]; + g = v[d + 168 >> 2]; + break l; + case 0: + h = v[a + 8 >> 2]; + e = v[a + 12 >> 2] - h | 0; + c = v[d + 168 >> 2]; + b = v[d + 172 >> 2] - c | 0; + b = b >>> 0 > e >>> 0 ? e : b; + W((c + n | 0) + 8 | 0, h + v[a + 4 >> 2] | 0, b); + v[a + 8 >> 2] = b + v[a + 8 >> 2]; + c = 0; + e = b + v[d + 168 >> 2] | 0; + b = v[d + 172 >> 2]; + v[d + 168 >> 2] = (b | 0) == (e | 0) ? 0 : e; + if ((b | 0) != (e | 0)) { + break b; + } + v[d >> 2] = 1; + if (fa(p, 1024, 6)) { + c = 5; + break b; + } + c = 6; + if (w[d + 182 | 0]) { + break b; + } + b = w[d + 183 | 0]; + v[d + 32 >> 2] = b; + if (!(1 << b & 19) | b >>> 0 > 4) { + break b; + } + break; + case 9: + break h; + case 8: + break i; + case 7: + break j; + case 6: + break k; + case 1: + break m; + case 5: + break c; + case 4: + break d; + case 3: + break e; + default: + continue; + } + } + b = v[a + 8 >> 2]; + c = v[a + 12 >> 2]; + if ((b | 0) == (c | 0)) { + c = 0; + break b; + } + e = v[a + 4 >> 2]; + h = w[e + b | 0]; + if (!h) { + v[a + 8 >> 2] = b + 1; + v[d + 16 >> 2] = b; + h = 6; + v[d >> 2] = 6; + continue; + } + v[d + 168 >> 2] = 0; + v[d >> 2] = 2; + h = (h << 2) + 4 | 0; + v[d + 172 >> 2] = h; + v[d + 64 >> 2] = h; + g = 0; + } + e = b + e | 0; + c = c - b | 0; + b = h - g | 0; + b = b >>> 0 > c >>> 0 ? c : b; + W((g + n | 0) + 8 | 0, e, b); + v[a + 8 >> 2] = b + v[a + 8 >> 2]; + c = 0; + e = b + v[d + 168 >> 2] | 0; + b = v[d + 172 >> 2]; + v[d + 168 >> 2] = (b | 0) == (e | 0) ? 0 : e; + if ((b | 0) != (e | 0)) { + break b; + } + b = e - 4 | 0; + v[d + 172 >> 2] = b; + c = Y(p, b, 0); + q = v[d + 172 >> 2]; + b = q + d | 0; + if ((c | 0) != (w[b + 176 | 0] | w[b + 177 | 0] << 8 | (w[b + 178 | 0] << 16 | w[b + 179 | 0] << 24))) { + c = 7; + break b; + } + v[d + 168 >> 2] = 2; + m = t[d + 177 | 0]; + if (m & 63) { + c = 6; + break b; + } + b = 2; + o = -1; + l = -1; + g = -1; + f = -1; + if (!(m & 64)) { + break f; + } + h = v[d + 4 >> 2]; + if (!h) { + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + } + j = q >>> 0 > 2 ? q : 2; + while (1) { + if ((b | 0) == (j | 0)) { + c = 7; + break b; + } + r = w[(b + n | 0) + 8 | 0]; + b = b + 1 | 0; + v[d + 168 >> 2] = b; + e = d; + k = v[d + 12 >> 2]; + g = r & 127; + c = h; + i = c & 31; + if ((c & 63) >>> 0 >= 32) { + f = g << i; + c = 0; + } else { + f = (1 << i) - 1 & g >>> 32 - i; + c = g << i; + } + g = c | v[d + 8 >> 2]; + c = f | k; + f = c; + v[e + 8 >> 2] = g; + v[e + 12 >> 2] = c; + if (!(r & 128)) { + if (!(!h | r)) { + c = 7; + break b; + } + v[d + 4 >> 2] = 0; + break f; + } + c = 7; + h = h + 7 | 0; + v[d + 4 >> 2] = h; + if ((h | 0) != 63) { + continue; + } + break; + } + break b; + } + n = d + 144 | 0; + n: { + while (1) { + c = v[a + 12 >> 2]; + l = v[a + 4 >> 2]; + h = v[d + 4 >> 2]; + if (!h) { + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + } + b = v[a + 8 >> 2]; + j = b >>> 0 > c >>> 0 ? b : c; + o: { + while (1) { + p: { + if ((b | 0) == (j | 0)) { + c = 0; + b = j; + break p; + } + m = w[b + l | 0]; + b = b + 1 | 0; + v[a + 8 >> 2] = b; + k = d; + f = v[d + 12 >> 2]; + g = m & 127; + c = h; + p = c & 31; + if ((c & 63) >>> 0 >= 32) { + e = g << p; + c = 0; + } else { + e = (1 << p) - 1 & g >>> 32 - p; + c = g << p; + } + g = c | v[d + 8 >> 2]; + c = e | f; + f = c; + v[k + 8 >> 2] = g; + v[k + 12 >> 2] = c; + if (!(m & 128)) { + if (!h | m) { + break o; + } + c = 7; + break p; + } + c = 7; + h = h + 7 | 0; + v[d + 4 >> 2] = h; + if ((h | 0) != 63) { + continue; + } + } + break; + } + e = v[d + 132 >> 2]; + g = v[d + 16 >> 2]; + f = b - g | 0; + b = f; + k = b + v[d + 128 >> 2] | 0; + v[d + 128 >> 2] = k; + v[d + 132 >> 2] = b >>> 0 > k >>> 0 ? e + 1 | 0 : e; + v[d + 24 >> 2] = Y(g + l | 0, b, v[d + 24 >> 2]); + v[d + 28 >> 2] = 0; + break n; + } + v[d + 4 >> 2] = 0; + q: { + r: { + switch (v[d + 120 >> 2]) { + case 0: + v[d + 136 >> 2] = g; + v[d + 140 >> 2] = f; + c = 7; + if ((g | 0) != v[d + 88 >> 2] | (f | 0) != v[d + 92 >> 2]) { + break n; + } + v[d + 120 >> 2] = 1; + break q; + case 2: + f = f + v[d + 156 >> 2] | 0; + c = g + v[d + 152 >> 2] | 0; + f = c >>> 0 < g >>> 0 ? f + 1 | 0 : f; + b = d; + v[b + 152 >> 2] = c; + v[b + 156 >> 2] = f; + v[b + 160 >> 2] = Y(n, 24, v[b + 160 >> 2]); + v[b + 120 >> 2] = 1; + b = v[b + 136 >> 2]; + f = v[d + 140 >> 2] - !b | 0; + g = b - 1 | 0; + v[d + 136 >> 2] = g; + v[d + 140 >> 2] = f; + break q; + case 1: + v[d + 120 >> 2] = 2; + f = f + v[d + 148 >> 2] | 0; + c = g + v[d + 144 >> 2] | 0; + f = c >>> 0 < g >>> 0 ? f + 1 | 0 : f; + b = d; + v[b + 144 >> 2] = c; + v[b + 148 >> 2] = f; + break; + default: + break r; + } + } + g = v[d + 136 >> 2]; + f = v[d + 140 >> 2]; + } + if (g | f) { + continue; + } + break; + } + c = 1; + } + if ((c | 0) != 1) { + break b; + } + v[d >> 2] = 7; + } + n = v[d + 128 >> 2]; + b = v[a + 8 >> 2]; + j = v[d + 16 >> 2]; + c = b - j | 0; + e = n + c | 0; + s: { + if (!(e & 3)) { + break s; + } + i = v[a + 4 >> 2]; + if (v[a + 12 >> 2] == (b | 0)) { + e = b; + break g; + } + e = b + 1 | 0; + v[a + 8 >> 2] = e; + c = 7; + if (w[b + i | 0]) { + break b; + } + g = e - j | 0; + k = g + n | 0; + t: { + if (!(k & 3)) { + break t; + } + i = v[a + 4 >> 2]; + if (v[a + 12 >> 2] == (e | 0)) { + break g; + } + f = b + 2 | 0; + v[a + 8 >> 2] = f; + if (w[e + i | 0]) { + break b; + } + g = f - j | 0; + k = g + n | 0; + if (!(k & 3)) { + b = f; + break s; + } + i = v[a + 4 >> 2]; + if ((f | 0) == v[a + 12 >> 2]) { + e = f; + break g; + } + e = b + 3 | 0; + v[a + 8 >> 2] = e; + if (w[f + i | 0]) { + break b; + } + g = e - j | 0; + k = g + n | 0; + if (!(k & 3)) { + break t; + } + if (v[a + 12 >> 2] == (e | 0)) { + i = v[a + 4 >> 2]; + break g; + } + v[a + 8 >> 2] = b + 4; + break b; + } + b = e; + } + ba(d, v[a + 4 >> 2], b); + c = 7; + if (fa(x, d + 144 | 0, 24)) { + break b; + } + v[d >> 2] = 8; + } + b = v[a + 8 >> 2]; + k = v[a + 12 >> 2]; + u: { + while (1) { + f = 0; + if ((b | 0) == (k | 0)) { + break u; + } + g = v[d + 24 >> 2]; + e = v[d + 28 >> 2]; + h = v[d + 4 >> 2]; + c = b + 1 | 0; + v[a + 8 >> 2] = c; + l = w[v[a + 4 >> 2] + b | 0]; + b = h; + j = b & 31; + f = 7; + if ((l | 0) != (((b & 63) >>> 0 >= 32 ? e >>> j | 0 : ((1 << j) - 1 & e) << 32 - j | g >>> j) & 255)) { + break u; + } + e = h + 8 | 0; + v[d + 4 >> 2] = e; + b = c; + if (e >>> 0 < 32) { + continue; + } + break; + } + v[d + 4 >> 2] = 0; + v[d + 24 >> 2] = 0; + v[d + 28 >> 2] = 0; + f = 1; + } + c = f; + if ((c | 0) != 1) { + break b; + } + v[d >> 2] = 9; + v[d + 172 >> 2] = 12; + } + c = 0; + f = v[a + 8 >> 2]; + h = v[a + 12 >> 2] - f | 0; + e = v[d + 168 >> 2]; + b = v[d + 172 >> 2] - e | 0; + b = b >>> 0 > h >>> 0 ? h : b; + W((d + e | 0) + 176 | 0, f + v[a + 4 >> 2] | 0, b); + v[a + 8 >> 2] = b + v[a + 8 >> 2]; + b = b + v[d + 168 >> 2] | 0; + e = (b | 0) == v[d + 172 >> 2]; + v[d + 168 >> 2] = e ? 0 : b; + if (!e) { + break b; + } + b = 7; + v: { + if ((w[d + 186 | 0] | w[d + 187 | 0] << 8) != 23129) { + break v; + } + if ((Y(d + 180 | 0, 6, 0) | 0) != (w[d + 176 | 0] | w[d + 177 | 0] << 8 | (w[d + 178 | 0] << 16 | w[d + 179 | 0] << 24))) { + break v; + } + e = v[d + 132 >> 2]; + f = e >>> 2 | 0; + if (w[d + 184 | 0] | ((w[d + 180 | 0] | w[d + 181 | 0] << 8 | (w[d + 182 | 0] << 16 | w[d + 183 | 0] << 24)) != ((e & 3) << 30 | v[d + 128 >> 2] >>> 2) | f)) { + break v; + } + b = v[d + 32 >> 2] == w[d + 185 | 0] ? 1 : 7; + } + c = b; + break b; + } + ba(d, i, e); + c = 0; + break b; + } + v[d + 48 >> 2] = g; + v[d + 52 >> 2] = f; + if ((m | 0) < 0) { + h = v[d + 4 >> 2]; + if (!h) { + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + } + k = b >>> 0 > q >>> 0 ? b : q; + while (1) { + if ((b | 0) == (k | 0)) { + c = 7; + break b; + } + m = w[(b + n | 0) + 8 | 0]; + b = b + 1 | 0; + v[d + 168 >> 2] = b; + f = d; + g = v[d + 12 >> 2]; + j = m & 127; + c = h; + l = c & 31; + if ((c & 63) >>> 0 >= 32) { + e = j << l; + c = 0; + } else { + e = (1 << l) - 1 & j >>> 32 - l; + c = j << l; + } + o = c | v[d + 8 >> 2]; + c = e | g; + l = c; + v[f + 8 >> 2] = o; + v[f + 12 >> 2] = c; + w: { + if (!(m & 128)) { + if (!h | m) { + break w; + } + c = 7; + break b; + } + c = 7; + h = h + 7 | 0; + v[d + 4 >> 2] = h; + if ((h | 0) != 63) { + continue; + } + break b; + } + break; + } + v[d + 4 >> 2] = 0; + } + v[d + 56 >> 2] = o; + v[d + 60 >> 2] = l; + if (q - b >>> 0 < 2) { + c = 7; + break b; + } + c = b + 1 | 0; + v[d + 168 >> 2] = c; + if (w[(b + n | 0) + 8 | 0] != 33) { + c = 6; + break b; + } + h = b + 2 | 0; + v[d + 168 >> 2] = h; + if (w[(c + n | 0) + 8 | 0] != 1) { + c = 6; + break b; + } + c = 7; + if ((h | 0) == (q | 0)) { + break b; + } + v[d + 168 >> 2] = b + 3; + f = v[d + 1200 >> 2]; + e = 6; + b = w[(h + n | 0) + 8 | 0]; + x: { + if (b >>> 0 > 39) { + break x; + } + h = (b & 1 | 2) << (b >>> 1 | 0) + 11; + v[f + 48 >> 2] = h; + y: { + z: { + b = v[f + 60 >> 2]; + if (!b) { + break z; + } + e = 4; + if (h >>> 0 > y[f + 52 >> 2]) { + break x; + } + v[f + 44 >> 2] = h; + if ((b | 0) != 2) { + break z; + } + c = f + 56 | 0; + if (h >>> 0 <= y[c >> 2]) { + break z; + } + X(v[f + 24 >> 2]); + b = Z(v[f + 48 >> 2]); + v[f + 24 >> 2] = b; + if (b) { + break z; + } + e = 3; + break y; + } + v[f + 64 >> 2] = 0; + t[f + 80 | 0] = 1; + v[f + 104 >> 2] = 0; + c = f + 28388 | 0; + e = 0; + } + v[c >> 2] = 0; + } + c = e; + if (c) { + break b; + } + b = v[d + 168 >> 2]; + c = v[d + 172 >> 2]; + h = b >>> 0 > c >>> 0 ? b : c; + A: { + while (1) { + if ((b | 0) == (h | 0)) { + break A; + } + c = b + 1 | 0; + v[d + 168 >> 2] = c; + e = b + n | 0; + b = c; + if (!w[e + 8 | 0]) { + continue; + } + break; + } + c = 6; + break b; + } + v[d + 168 >> 2] = 0; + v[d + 80 >> 2] = 0; + v[d + 84 >> 2] = 0; + v[d + 72 >> 2] = 0; + v[d + 76 >> 2] = 0; + v[d >> 2] = 3; + } + v[d + 16 >> 2] = v[a + 8 >> 2]; + v[d + 20 >> 2] = v[a + 20 >> 2]; + c = v[d + 1200 >> 2]; + h = c + 28392 | 0; + o = c + 120 | 0; + r = c + 28388 | 0; + B: { + while (1) { + f = v[c + 64 >> 2]; + C: { + D: { + E: { + F: { + G: { + H: { + I: { + J: { + K: { + L: { + M: { + N: { + O: { + P: { + Q: { + b = v[a + 8 >> 2]; + e = v[a + 12 >> 2]; + if (b >>> 0 >= e >>> 0) { + if ((f | 0) == 7) { + break Q; + } + f = 0; + break B; + } + switch (f | 0) { + case 8: + break H; + case 6: + break J; + case 5: + break K; + case 4: + break L; + case 3: + break M; + case 2: + break N; + case 1: + break O; + case 0: + break P; + case 7: + break Q; + default: + continue; + } + } + i = v[c + 76 >> 2]; + break I; + } + f = 1; + v[a + 8 >> 2] = b + 1; + g = w[v[a + 4 >> 2] + b | 0]; + if (!g) { + break G; + } + if (!((g | 0) != 1 & g >>> 0 <= 223)) { + u[c + 80 >> 1] = 256; + if (!v[c + 60 >> 2]) { + b = v[a + 20 >> 2]; + v[c + 24 >> 2] = b + v[a + 16 >> 2]; + v[c + 44 >> 2] = v[a + 24 >> 2] - b; + } + v[c + 28 >> 2] = 0; + v[c + 32 >> 2] = 0; + v[c + 36 >> 2] = 0; + v[c + 40 >> 2] = 0; + break E; + } + if (!w[c + 80 | 0]) { + break E; + } + f = 7; + break B; + } + v[a + 8 >> 2] = b + 1; + b = w[v[a + 4 >> 2] + b | 0]; + v[c + 64 >> 2] = 2; + v[c + 72 >> 2] = v[c + 72 >> 2] + (b << 8); + continue; + } + v[a + 8 >> 2] = b + 1; + b = w[v[a + 4 >> 2] + b | 0]; + v[c + 64 >> 2] = 3; + v[c + 72 >> 2] = (b + v[c + 72 >> 2] | 0) + 1; + continue; + } + v[a + 8 >> 2] = b + 1; + b = w[v[a + 4 >> 2] + b | 0]; + v[c + 64 >> 2] = 4; + v[c + 76 >> 2] = b << 8; + continue; + } + v[a + 8 >> 2] = b + 1; + b = w[v[a + 4 >> 2] + b | 0]; + v[c + 64 >> 2] = v[c + 68 >> 2]; + v[c + 76 >> 2] = (b + v[c + 76 >> 2] | 0) + 1; + continue; + } + v[a + 8 >> 2] = b + 1; + f = 7; + b = w[v[a + 4 >> 2] + b | 0]; + if (b >>> 0 > 224) { + break G; + } + i = 0; + e = c; + if (b >>> 0 < 45) { + j = 0; + } else { + b = b - 45 | 0; + g = ((b & 255) >>> 0) / 45 | 0; + b = b - B(g, 45) | 0; + j = g + 1 | 0; + } + v[e + 116 >> 2] = -1 << j ^ -1; + if ((b & 255) >>> 0 >= 9) { + b = b - 9 | 0; + e = ((b & 255) >>> 0) / 9 | 0; + i = e + 1 | 0; + b = b - B(e, 9) | 0; + } + v[c + 112 >> 2] = i; + b = b & 255; + v[c + 108 >> 2] = b; + if (b + i >>> 0 > 4) { + break G; + } + v[c + 112 >> 2] = -1 << i ^ -1; + b = 0; + v[c + 100 >> 2] = 0; + v[c + 92 >> 2] = 0; + v[c + 96 >> 2] = 0; + v[c + 84 >> 2] = 0; + v[c + 88 >> 2] = 0; + while (1) { + e = b << 1; + u[e + o >> 1] = 1024; + u[(e | 2) + o >> 1] = 1024; + b = b + 2 | 0; + if ((b | 0) != 14134) { + continue; + } + break; + } + v[c + 64 >> 2] = 6; + v[c + 8 >> 2] = 5; + v[c >> 2] = -1; + v[c + 4 >> 2] = 0; + } + k = v[c + 76 >> 2]; + f = 7; + if (k >>> 0 < 5) { + break B; + } + i = v[c + 8 >> 2]; + if (i) { + b = v[a + 8 >> 2]; + g = v[a + 12 >> 2]; + while (1) { + f = 0; + if ((b | 0) == (g | 0)) { + break B; + } + f = v[c + 4 >> 2]; + e = b + 1 | 0; + v[a + 8 >> 2] = e; + b = w[v[a + 4 >> 2] + b | 0]; + i = i - 1 | 0; + v[c + 8 >> 2] = i; + v[c + 4 >> 2] = b | f << 8; + b = e; + if (i) { + continue; + } + break; + } + } + v[c + 64 >> 2] = 7; + i = k - 5 | 0; + v[c + 76 >> 2] = i; + } + f = v[c + 32 >> 2]; + e = v[a + 24 >> 2] - v[a + 20 >> 2] | 0; + b = v[c + 72 >> 2]; + e = b >>> 0 > e >>> 0 ? e : b; + b = v[c + 44 >> 2]; + v[c + 40 >> 2] = e >>> 0 < b - f >>> 0 ? f + e | 0 : b; + f = v[a + 12 >> 2]; + e = v[a + 8 >> 2]; + b = f - e | 0; + g = v[c + 28388 >> 2]; + R: { + S: { + if (!g) { + if (i) { + break S; + } + i = 0; + } + j = (g + r | 0) + 4 | 0; + k = v[a + 4 >> 2] + e | 0; + f = i - g | 0; + e = 42 - g | 0; + e = e >>> 0 > f >>> 0 ? f : e; + g = b >>> 0 < e >>> 0 ? b : e; + W(j, k, g); + b = v[c + 28388 >> 2]; + e = b + g | 0; + T: { + if ((e | 0) == v[c + 76 >> 2]) { + _((g + (b + r | 0) | 0) + 4 | 0, 63 - e | 0); + b = g + v[c + 28388 >> 2] | 0; + break T; + } + if (e >>> 0 <= 20) { + v[c + 28388 >> 2] = e; + v[a + 8 >> 2] = g + v[a + 8 >> 2]; + break R; + } + b = e - 21 | 0; + } + v[c + 16 >> 2] = 0; + v[c + 12 >> 2] = h; + v[c + 20 >> 2] = b; + f = 7; + if (!da(c)) { + break G; + } + b = v[c + 28388 >> 2]; + e = b + g | 0; + g = v[c + 16 >> 2]; + if (e >>> 0 < g >>> 0) { + break G; + } + i = v[c + 76 >> 2] - g | 0; + v[c + 76 >> 2] = i; + if (b >>> 0 > g >>> 0) { + b = b - g | 0; + v[c + 28388 >> 2] = b; + e = h; + i = (g + r | 0) + 4 | 0; + U: { + if ((e | 0) == (i | 0)) { + break U; + } + f = b + e | 0; + if (i - f >>> 0 <= 0 - (b << 1) >>> 0) { + W(e, i, b); + break U; + } + g = (e ^ i) & 3; + V: { + W: { + if (e >>> 0 < i >>> 0) { + if (g) { + break V; + } + if (!(e & 3)) { + break W; + } + while (1) { + if (!b) { + break U; + } + t[e | 0] = w[i | 0]; + i = i + 1 | 0; + b = b - 1 | 0; + e = e + 1 | 0; + if (e & 3) { + continue; + } + break; + } + break W; + } + X: { + if (g) { + break X; + } + if (f & 3) { + while (1) { + if (!b) { + break U; + } + b = b - 1 | 0; + f = e + b | 0; + t[f | 0] = w[b + i | 0]; + if (f & 3) { + continue; + } + break; + } + } + if (b >>> 0 <= 3) { + break X; + } + while (1) { + b = b - 4 | 0; + v[e + b >> 2] = v[b + i >> 2]; + if (b >>> 0 > 3) { + continue; + } + break; + } + } + if (!b) { + break U; + } + while (1) { + b = b - 1 | 0; + t[e + b | 0] = w[b + i | 0]; + if (b) { + continue; + } + break; + } + break U; + } + if (b >>> 0 <= 3) { + break V; + } + while (1) { + v[e >> 2] = v[i >> 2]; + i = i + 4 | 0; + e = e + 4 | 0; + b = b - 4 | 0; + if (b >>> 0 > 3) { + continue; + } + break; + } + } + if (!b) { + break U; + } + while (1) { + t[e | 0] = w[i | 0]; + e = e + 1 | 0; + i = i + 1 | 0; + b = b - 1 | 0; + if (b) { + continue; + } + break; + } + } + break R; + } + e = v[a + 8 >> 2] + (g - b | 0) | 0; + v[a + 8 >> 2] = e; + v[c + 28388 >> 2] = 0; + f = v[a + 12 >> 2]; + b = f - e | 0; + } + if (b >>> 0 >= 21) { + g = v[a + 4 >> 2]; + v[c + 16 >> 2] = e; + v[c + 12 >> 2] = g; + v[c + 20 >> 2] = i + 21 >>> 0 > b >>> 0 ? f - 21 | 0 : e + i | 0; + f = 7; + if (!da(c)) { + break G; + } + g = v[c + 76 >> 2]; + e = v[c + 16 >> 2]; + b = e - v[a + 8 >> 2] | 0; + if (g >>> 0 < b >>> 0) { + break G; + } + i = g - b | 0; + v[c + 76 >> 2] = i; + v[a + 8 >> 2] = e; + b = v[a + 12 >> 2] - e | 0; + if (b >>> 0 > 20) { + break R; + } + } + b = b >>> 0 > i >>> 0 ? i : b; + W(h, v[a + 4 >> 2] + e | 0, b); + v[c + 28388 >> 2] = b; + v[a + 8 >> 2] = b + v[a + 8 >> 2]; + } + e = v[c + 32 >> 2]; + f = v[c + 28 >> 2]; + g = e - f | 0; + b = c; + if (v[b + 60 >> 2]) { + if ((e | 0) == v[c + 44 >> 2]) { + v[c + 32 >> 2] = 0; + } + W(v[a + 16 >> 2] + v[a + 20 >> 2] | 0, f + v[c + 24 >> 2] | 0, g); + e = v[c + 32 >> 2]; + } + v[b + 28 >> 2] = e; + e = g + v[a + 20 >> 2] | 0; + v[a + 20 >> 2] = e; + b = v[c + 72 >> 2] - g | 0; + v[c + 72 >> 2] = b; + if (!b) { + f = 7; + if (v[c + 4 >> 2] | (v[c + 76 >> 2] | v[c + 104 >> 2])) { + break G; + } + v[c + 64 >> 2] = 0; + break D; + } + f = 0; + if ((e | 0) == v[a + 24 >> 2]) { + break G; + } + if (v[a + 8 >> 2] != v[a + 12 >> 2] | y[c + 28388 >> 2] >= y[c + 76 >> 2]) { + continue; + } + break G; + } + i = v[c + 76 >> 2]; + if (!i) { + break F; + } + f = 0; + if (b >>> 0 >= e >>> 0) { + break G; + } + while (1) { + m = v[a + 24 >> 2]; + l = v[a + 20 >> 2]; + if (m >>> 0 <= l >>> 0) { + break G; + } + j = v[c + 32 >> 2]; + k = v[c + 44 >> 2] - j | 0; + g = e - b | 0; + e = m - l | 0; + e = e >>> 0 > g >>> 0 ? g : e; + e = e >>> 0 > k >>> 0 ? k : e; + g = e >>> 0 > i >>> 0 ? i : e; + v[c + 76 >> 2] = i - g; + W(v[c + 24 >> 2] + j | 0, v[a + 4 >> 2] + b | 0, g); + e = g + v[c + 32 >> 2] | 0; + v[c + 32 >> 2] = e; + if (e >>> 0 > y[c + 36 >> 2]) { + v[c + 36 >> 2] = e; + } + b = c; + if (v[b + 60 >> 2]) { + if ((e | 0) == v[c + 44 >> 2]) { + v[c + 32 >> 2] = 0; + } + W(v[a + 16 >> 2] + v[a + 20 >> 2] | 0, v[a + 4 >> 2] + v[a + 8 >> 2] | 0, g); + e = v[c + 32 >> 2]; + } + v[b + 28 >> 2] = e; + v[a + 20 >> 2] = g + v[a + 20 >> 2]; + b = g + v[a + 8 >> 2] | 0; + v[a + 8 >> 2] = b; + i = v[c + 76 >> 2]; + if (!i) { + break F; + } + e = v[a + 12 >> 2]; + if (e >>> 0 > b >>> 0) { + continue; + } + break; + } + } + break B; + } + v[c + 64 >> 2] = 0; + continue; + } + if (g << 24 >> 24 >= 0) { + break C; + } + v[c + 64 >> 2] = 1; + v[c + 72 >> 2] = g << 16 & 2031616; + if (g >>> 0 >= 192) { + v[c + 68 >> 2] = 5; + t[c + 81 | 0] = 0; + continue; + } + f = 7; + if (w[c + 81 | 0]) { + break B; + } + v[c + 68 >> 2] = 6; + if (g >>> 0 < 160) { + continue; + } + v[c + 84 >> 2] = 0; + v[c + 88 >> 2] = 0; + b = 0; + v[c + 100 >> 2] = 0; + v[c + 92 >> 2] = 0; + v[c + 96 >> 2] = 0; + while (1) { + e = b << 1; + u[e + o >> 1] = 1024; + u[(e | 2) + o >> 1] = 1024; + b = b + 2 | 0; + if ((b | 0) != 14134) { + continue; + } + break; + } + } + v[c + 8 >> 2] = 5; + v[c >> 2] = -1; + v[c + 4 >> 2] = 0; + continue; + } + if (g >>> 0 <= 2) { + v[c + 64 >> 2] = 3; + v[c + 68 >> 2] = 8; + continue; + } + break; + } + f = 7; + } + c = f; + b = d; + e = v[b + 76 >> 2]; + h = v[a + 8 >> 2] - v[b + 16 >> 2] | 0; + f = h + v[b + 72 >> 2] | 0; + k = f; + e = f >>> 0 < h >>> 0 ? e + 1 | 0 : e; + h = e; + v[b + 72 >> 2] = f; + v[b + 76 >> 2] = e; + l = v[b + 20 >> 2]; + j = v[a + 20 >> 2] - l | 0; + b = j; + g = b + v[d + 80 >> 2] | 0; + f = v[d + 84 >> 2]; + f = b >>> 0 > g >>> 0 ? f + 1 | 0 : f; + v[d + 80 >> 2] = g; + b = f; + v[d + 84 >> 2] = b; + e = v[d + 52 >> 2]; + if ((h | 0) == (e | 0) & k >>> 0 > y[d + 48 >> 2] | e >>> 0 < h >>> 0) { + c = 7; + break b; + } + e = v[d + 60 >> 2]; + if ((b | 0) == (e | 0) & g >>> 0 > y[d + 56 >> 2] | b >>> 0 > e >>> 0) { + c = 7; + break b; + } + k = d; + Y: { + Z: { + _: { + switch (v[d + 32 >> 2] - 1 | 0) { + case 0: + e = Y(l + v[a + 16 >> 2] | 0, j, v[d + 24 >> 2]); + b = 0; + break Z; + case 3: + break _; + default: + break Y; + } + } + h = l + v[a + 16 >> 2] | 0; + g = v[d + 24 >> 2] ^ -1; + f = v[d + 28 >> 2] ^ -1; + $: { + if (!j) { + break $; + } + if (j & 1) { + e = ((w[h | 0] ^ g & 255) << 3) + 2064 | 0; + b = v[e >> 2]; + l = v[e + 4 >> 2]; + e = b; + b = f; + f = b >>> 8 | 0; + g = e ^ ((b & 255) << 24 | g >>> 8); + f = f ^ l; + h = h + 1 | 0; + e = j - 1 | 0; + } else { + e = j; + } + if ((j | 0) == 1) { + break $; + } + while (1) { + j = ((w[h | 0] ^ g & 255) << 3) + 2064 | 0; + b = v[j >> 2]; + m = v[j + 4 >> 2]; + j = b; + b = f; + f = b >>> 8 | 0; + l = j ^ ((b & 255) << 24 | g >>> 8); + g = ((w[h + 1 | 0] ^ l & 255) << 3) + 2064 | 0; + b = v[g >> 2]; + j = v[g + 4 >> 2]; + g = f ^ m; + f = g >>> 8 | 0; + g = ((g & 255) << 24 | l >>> 8) ^ b; + f = f ^ j; + h = h + 2 | 0; + e = e - 2 | 0; + if (e) { + continue; + } + break; + } + } + e = g ^ -1; + b = f ^ -1; + } + v[k + 24 >> 2] = e; + v[k + 28 >> 2] = b; + } + if ((c | 0) != 1) { + break b; + } + e = v[d + 52 >> 2]; + c = e; + b = v[d + 48 >> 2]; + if (!((b | 0) == -1 & (c | 0) == -1 | v[d + 72 >> 2] == (b | 0) & v[d + 76 >> 2] == (c | 0))) { + c = 7; + break b; + } + c = v[d + 60 >> 2]; + e = c; + b = v[d + 56 >> 2]; + if ((b | 0) != -1 | (c | 0) != -1) { + c = 7; + if (v[d + 80 >> 2] != (b | 0) | v[d + 84 >> 2] != (e | 0)) { + break b; + } + } + c = v[d + 100 >> 2]; + b = v[d + 64 >> 2]; + e = b + v[d + 72 >> 2] | 0; + f = v[d + 76 >> 2]; + f = b >>> 0 > e >>> 0 ? f + 1 | 0 : f; + b = e; + g = b + v[d + 96 >> 2] | 0; + e = c + f | 0; + c = g; + e = b >>> 0 > c >>> 0 ? e + 1 | 0 : e; + b = e; + v[d + 96 >> 2] = c; + v[d + 100 >> 2] = b; + g = 4; + aa: { + switch (v[d + 32 >> 2] - 1 | 0) { + case 3: + g = 8; + case 0: + h = c + g | 0; + f = h >>> 0 < c >>> 0 ? b + 1 | 0 : b; + e = x; + v[e >> 2] = h; + v[e + 4 >> 2] = f; + break; + default: + break aa; + } + } + e = v[d + 108 >> 2] + v[d + 84 >> 2] | 0; + c = v[d + 80 >> 2]; + h = c + v[d + 104 >> 2] | 0; + v[d + 104 >> 2] = h; + v[d + 108 >> 2] = c >>> 0 > h >>> 0 ? e + 1 | 0 : e; + v[d + 112 >> 2] = Y(x, 24, v[d + 112 >> 2]); + v[d >> 2] = 4; + f = v[d + 92 >> 2]; + c = v[d + 88 >> 2] + 1 | 0; + f = c ? f : f + 1 | 0; + b = d; + v[b + 88 >> 2] = c; + v[b + 92 >> 2] = f; + } + b = v[d + 76 >> 2]; + l = v[d + 72 >> 2]; + ba: { + if (!(l & 3)) { + break ba; + } + c = 0; + m = v[a + 8 >> 2]; + j = v[a + 12 >> 2]; + if ((m | 0) == (j | 0)) { + break b; + } + g = m + 1 | 0; + v[a + 8 >> 2] = g; + if (w[m + v[a + 4 >> 2] | 0]) { + c = 7; + break b; + } + h = l + 1 | 0; + f = h ? b : b + 1 | 0; + v[d + 72 >> 2] = h; + v[d + 76 >> 2] = f; + if (!(h & 3)) { + break ba; + } + if ((g | 0) == (j | 0)) { + break b; + } + k = m + 2 | 0; + v[a + 8 >> 2] = k; + if (w[g + v[a + 4 >> 2] | 0]) { + c = 7; + break b; + } + f = l + 2 | 0; + e = f >>> 0 < 2 ? b + 1 | 0 : b; + h = d; + v[d + 72 >> 2] = f; + v[d + 76 >> 2] = e; + if (!(f & 3)) { + break ba; + } + if ((j | 0) == (k | 0)) { + break b; + } + g = m + 3 | 0; + v[a + 8 >> 2] = g; + if (w[k + v[a + 4 >> 2] | 0]) { + c = 7; + break b; + } + f = l + 3 | 0; + e = f >>> 0 < 3 ? b + 1 | 0 : b; + v[d + 72 >> 2] = f; + v[h + 76 >> 2] = e; + if (!(f & 3)) { + break ba; + } + if ((g | 0) == (j | 0)) { + break b; + } + v[a + 8 >> 2] = m + 4; + c = 7; + if (w[g + v[a + 4 >> 2] | 0]) { + break b; + } + f = b; + b = l + 4 | 0; + f = b >>> 0 < 4 ? f + 1 | 0 : f; + v[d + 72 >> 2] = b; + v[d + 76 >> 2] = f; + } + v[d >> 2] = 5; + } + h = 1; + ca: { + da: { + ea: { + switch (v[d + 32 >> 2] - 1 | 0) { + case 0: + b = v[a + 8 >> 2]; + k = v[a + 12 >> 2]; + while (1) { + if ((b | 0) == (k | 0)) { + c = 0; + break b; + } + g = v[d + 24 >> 2]; + e = v[d + 28 >> 2]; + f = v[d + 4 >> 2]; + c = b + 1 | 0; + v[a + 8 >> 2] = c; + l = w[v[a + 4 >> 2] + b | 0]; + b = f; + j = b & 31; + if ((l | 0) != (((b & 63) >>> 0 >= 32 ? e >>> j | 0 : ((1 << j) - 1 & e) << 32 - j | g >>> j) & 255)) { + c = 7; + break b; + } + e = f + 8 | 0; + v[d + 4 >> 2] = e; + b = c; + if (e >>> 0 < 32) { + continue; + } + break; + } + break da; + case 3: + break ea; + default: + break ca; + } + } + b = v[a + 8 >> 2]; + k = v[a + 12 >> 2]; + while (1) { + if ((b | 0) == (k | 0)) { + c = 0; + break b; + } + g = v[d + 24 >> 2]; + e = v[d + 28 >> 2]; + f = v[d + 4 >> 2]; + c = b + 1 | 0; + v[a + 8 >> 2] = c; + l = w[v[a + 4 >> 2] + b | 0]; + b = f; + j = b & 31; + if ((l | 0) != (((b & 63) >>> 0 >= 32 ? e >>> j | 0 : ((1 << j) - 1 & e) << 32 - j | g >>> j) & 255)) { + c = 7; + break b; + } + e = f + 8 | 0; + v[d + 4 >> 2] = e; + b = c; + if (e >>> 0 < 64) { + continue; + } + break; + } + } + v[d + 4 >> 2] = 0; + v[d + 24 >> 2] = 0; + v[d + 28 >> 2] = 0; + } + v[d >> 2] = 1; + continue; + } + break; + } + fa: { + if (!v[d + 36 >> 2]) { + ga: { + switch (c | 0) { + case 0: + c = v[a + 8 >> 2] == v[a + 12 >> 2] ? 7 : 8; + break; + case 1: + break fa; + default: + break ga; + } + } + v[a + 20 >> 2] = z; + v[a + 8 >> 2] = s; + break fa; + } + if (!(v[a + 8 >> 2] != (s | 0) | c | v[a + 20 >> 2] != (z | 0))) { + a = w[d + 40 | 0]; + t[d + 40 | 0] = 1; + c = a << 3; + break fa; + } + t[d + 40 | 0] = 0; + } + return c | 0; + } + function da(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0; + j = v[a + 32 >> 2]; + b = v[a + 40 >> 2]; + a: { + if (j >>> 0 >= b >>> 0) { + break a; + } + c = v[a + 104 >> 2]; + if (!c) { + break a; + } + d = v[a + 84 >> 2]; + if (d >>> 0 >= y[a + 36 >> 2] | d >>> 0 >= y[a + 48 >> 2]) { + break a; + } + b = b - j | 0; + g = b >>> 0 < c >>> 0 ? b : c; + v[a + 104 >> 2] = c - g; + e = (d ^ -1) + j | 0; + e = d >>> 0 >= j >>> 0 ? v[a + 44 >> 2] + e | 0 : e; + d = v[a + 24 >> 2]; + b = w[e + d | 0]; + v[a + 32 >> 2] = j + 1; + t[d + j | 0] = b; + h = g - 1 | 0; + b: { + if (!h) { + break b; + } + if (h & 1) { + b = e + 1 | 0; + e = (b | 0) == v[a + 44 >> 2] ? 0 : b; + c = v[a + 24 >> 2]; + d = w[e + c | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + c | 0] = d; + h = g - 2 | 0; + } + if ((g | 0) == 2) { + break b; + } + while (1) { + g = v[a + 24 >> 2]; + b = e + 1 | 0; + c = (b | 0) == v[a + 44 >> 2] ? 0 : b; + d = w[g + c | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + g | 0] = d; + b = c + 1 | 0; + e = (b | 0) == v[a + 44 >> 2] ? 0 : b; + c = v[a + 24 >> 2]; + d = w[e + c | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + c | 0] = d; + h = h - 2 | 0; + if (h) { + continue; + } + break; + } + } + j = v[a + 32 >> 2]; + if (j >>> 0 <= y[a + 36 >> 2]) { + break a; + } + v[a + 36 >> 2] = j; + } + c: { + d: { + if (y[a + 40 >> 2] <= j >>> 0) { + break d; + } + n = a + 1756 | 0; + o = a + 2784 | 0; + p = a + 84 | 0; + while (1) { + d = v[a + 16 >> 2]; + if (d >>> 0 > y[a + 20 >> 2]) { + break d; + } + m = v[a + 100 >> 2]; + i = v[a + 116 >> 2] & j; + k = ((m << 5) + a | 0) + (i << 1) | 0; + g = k; + f = v[a >> 2]; + e: { + if (f >>> 0 >= 16777216) { + e = v[a + 4 >> 2]; + break e; + } + f = f << 8; + v[a >> 2] = f; + b = d + 1 | 0; + v[a + 16 >> 2] = b; + e = w[v[a + 12 >> 2] + d | 0] | v[a + 4 >> 2] << 8; + v[a + 4 >> 2] = e; + d = b; + } + b = x[g + 120 >> 1]; + c = B(b, f >>> 11 | 0); + f: { + if (e >>> 0 < c >>> 0) { + v[a >> 2] = c; + u[g + 120 >> 1] = b + (2048 - b >>> 5 | 0); + f = j - 1 | 0; + f = j ? f : v[a + 44 >> 2] + f | 0; + i = v[a + 108 >> 2]; + g = v[a + 36 >> 2]; + l = ((v[a + 112 >> 2] & j) << i) + ((g ? w[v[a + 24 >> 2] + f | 0] : 0) >>> 8 - i | 0) | 0; + f = 1; + g: { + if (m >>> 0 <= 6) { + while (1) { + f = f << 1; + g = (f + (B(l, 1536) + a | 0) | 0) + 3812 | 0; + h: { + if (c >>> 0 > 16777215) { + b = c; + break h; + } + b = c << 8; + v[a >> 2] = b; + c = d + 1 | 0; + v[a + 16 >> 2] = c; + e = w[v[a + 12 >> 2] + d | 0] | e << 8; + v[a + 4 >> 2] = e; + d = c; + } + i = x[g >> 1]; + c = B(i, b >>> 11 | 0); + i: { + if (e >>> 0 >= c >>> 0) { + e = e - c | 0; + v[a + 4 >> 2] = e; + c = b - c | 0; + v[a >> 2] = c; + u[g >> 1] = i - (i >>> 5 | 0); + f = f | 1; + break i; + } + v[a >> 2] = c; + u[g >> 1] = i + (2048 - i >>> 5 | 0); + } + if (f >>> 0 < 256) { + continue; + } + break g; + } + } + b = v[a + 84 >> 2]; + f = (b ^ -1) + j | 0; + f = b >>> 0 >= j >>> 0 ? v[a + 44 >> 2] + f | 0 : f; + g = g ? w[v[a + 24 >> 2] + f | 0] : 0; + f = 1; + h = 256; + while (1) { + g = g << 1; + m = h & g; + i = ((B(l, 1536) + a | 0) + ((m + h | 0) + f << 1) | 0) + 3812 | 0; + j: { + if (c >>> 0 > 16777215) { + k = c; + break j; + } + k = c << 8; + v[a >> 2] = k; + b = d + 1 | 0; + v[a + 16 >> 2] = b; + e = w[v[a + 12 >> 2] + d | 0] | e << 8; + v[a + 4 >> 2] = e; + d = b; + } + b = i; + q = b; + b = x[b >> 1]; + c = B(b, k >>> 11 | 0); + i = e >>> 0 >= c >>> 0; + k: { + if (!i) { + v[a >> 2] = c; + b = b + (2048 - b >>> 5 | 0) | 0; + break k; + } + e = e - c | 0; + v[a + 4 >> 2] = e; + c = k - c | 0; + v[a >> 2] = c; + h = 0; + b = b - (b >>> 5 | 0) | 0; + } + u[q >> 1] = b; + h = h ^ m; + f = i | f << 1; + if (f >>> 0 < 256) { + continue; + } + break; + } + } + v[a + 32 >> 2] = j + 1; + t[v[a + 24 >> 2] + j | 0] = f; + j = v[a + 32 >> 2]; + if (j >>> 0 > y[a + 36 >> 2]) { + v[a + 36 >> 2] = j; + } + b = a; + d = v[a + 100 >> 2]; + if (d >>> 0 >= 4) { + if (d >>> 0 <= 9) { + v[a + 100 >> 2] = d - 3; + break f; + } + c = d - 6 | 0; + } else { + c = 0; + } + v[b + 100 >> 2] = c; + break f; + } + e = e - c | 0; + v[a + 4 >> 2] = e; + c = f - c | 0; + v[a >> 2] = c; + u[g + 120 >> 1] = b - (b >>> 5 | 0); + l = (m << 1) + a | 0; + g = l; + l: { + if (c >>> 0 > 16777215) { + b = d; + break l; + } + c = c << 8; + v[a >> 2] = c; + b = d + 1 | 0; + v[a + 16 >> 2] = b; + e = w[v[a + 12 >> 2] + d | 0] | e << 8; + v[a + 4 >> 2] = e; + } + m = x[g + 504 >> 1]; + d = B(m, c >>> 11 | 0); + m: { + if (d >>> 0 <= e >>> 0) { + e = e - d | 0; + v[a + 4 >> 2] = e; + c = c - d | 0; + v[a >> 2] = c; + u[g + 504 >> 1] = m - (m >>> 5 | 0); + n: { + if (c >>> 0 > 16777215) { + g = b; + break n; + } + c = c << 8; + v[a >> 2] = c; + g = b + 1 | 0; + v[a + 16 >> 2] = g; + e = w[v[a + 12 >> 2] + b | 0] | e << 8; + v[a + 4 >> 2] = e; + } + b = x[l + 528 >> 1]; + f = B(b, c >>> 11 | 0); + o: { + if (f >>> 0 > e >>> 0) { + u[l + 528 >> 1] = b + (2048 - b >>> 5 | 0); + if (f >>> 0 <= 16777215) { + f = f << 8; + v[a >> 2] = f; + v[a + 16 >> 2] = g + 1; + e = w[v[a + 12 >> 2] + g | 0] | e << 8; + v[a + 4 >> 2] = e; + } + d = x[k + 600 >> 1]; + b = B(d, f >>> 11 | 0); + if (b >>> 0 <= e >>> 0) { + v[a + 4 >> 2] = e - b; + v[a >> 2] = f - b; + u[k + 600 >> 1] = d - (d >>> 5 | 0); + break o; + } + v[a >> 2] = b; + u[k + 600 >> 1] = d + (2048 - d >>> 5 | 0); + v[a + 104 >> 2] = 1; + v[a + 100 >> 2] = y[a + 100 >> 2] < 7 ? 9 : 11; + break m; + } + e = e - f | 0; + v[a + 4 >> 2] = e; + u[l + 528 >> 1] = b - (b >>> 5 | 0); + c = c - f | 0; + p: { + if (c >>> 0 > 16777215) { + b = g; + break p; + } + c = c << 8; + v[a >> 2] = c; + b = g + 1 | 0; + v[a + 16 >> 2] = b; + e = w[v[a + 12 >> 2] + g | 0] | e << 8; + v[a + 4 >> 2] = e; + } + g = x[l + 552 >> 1]; + d = B(g, c >>> 11 | 0); + q: { + if (d >>> 0 > e >>> 0) { + v[a >> 2] = d; + u[l + 552 >> 1] = g + (2048 - g >>> 5 | 0); + c = v[a + 88 >> 2]; + break q; + } + e = e - d | 0; + v[a + 4 >> 2] = e; + u[l + 552 >> 1] = g - (g >>> 5 | 0); + c = c - d | 0; + if (c >>> 0 <= 16777215) { + c = c << 8; + v[a >> 2] = c; + v[a + 16 >> 2] = b + 1; + e = w[v[a + 12 >> 2] + b | 0] | e << 8; + v[a + 4 >> 2] = e; + } + d = x[l + 576 >> 1]; + b = B(d, c >>> 11 | 0); + r: { + if (b >>> 0 > e >>> 0) { + v[a >> 2] = b; + u[l + 576 >> 1] = d + (2048 - d >>> 5 | 0); + c = v[a + 92 >> 2]; + break r; + } + v[a + 4 >> 2] = e - b; + v[a >> 2] = c - b; + u[l + 576 >> 1] = d - (d >>> 5 | 0); + c = v[a + 96 >> 2]; + v[a + 96 >> 2] = v[a + 92 >> 2]; + } + v[a + 92 >> 2] = v[a + 88 >> 2]; + } + v[a + 88 >> 2] = v[a + 84 >> 2]; + v[a + 84 >> 2] = c; + } + v[a + 100 >> 2] = y[a + 100 >> 2] < 7 ? 8 : 11; + ca(a, o, i); + break m; + } + v[a >> 2] = d; + u[g + 504 >> 1] = m + (2048 - m >>> 5 | 0); + v[a + 96 >> 2] = v[a + 92 >> 2]; + b = v[a + 88 >> 2]; + v[a + 88 >> 2] = v[a + 84 >> 2]; + v[a + 92 >> 2] = b; + v[a + 100 >> 2] = y[a + 100 >> 2] < 7 ? 7 : 10; + ca(a, n, i); + b = v[a + 104 >> 2]; + d = b >>> 0 < 6 ? b - 2 | 0 : 3; + c = v[a >> 2]; + e = 1; + while (1) { + e = e << 1; + g = e + ((d << 7) + a | 0) | 0; + s: { + if (c >>> 0 >= 16777216) { + f = v[a + 4 >> 2]; + break s; + } + c = c << 8; + v[a >> 2] = c; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | v[a + 4 >> 2] << 8; + v[a + 4 >> 2] = f; + } + i = x[g + 984 >> 1]; + b = B(i, c >>> 11 | 0); + t: { + if (b >>> 0 <= f >>> 0) { + f = f - b | 0; + v[a + 4 >> 2] = f; + c = c - b | 0; + v[a >> 2] = c; + u[g + 984 >> 1] = i - (i >>> 5 | 0); + e = e | 1; + break t; + } + v[a >> 2] = b; + u[g + 984 >> 1] = i + (2048 - i >>> 5 | 0); + c = b; + } + if (e >>> 0 < 64) { + continue; + } + break; + } + d = e + -64 | 0; + if (d >>> 0 <= 3) { + v[a + 84 >> 2] = d; + break m; + } + h = e & 1 | 2; + v[a + 84 >> 2] = h; + b = d >>> 1 | 0; + if (d >>> 0 <= 13) { + i = b - 1 | 0; + k = h << i; + v[a + 84 >> 2] = k; + h = 1; + g = (((k << 1) + p | 0) + (0 - e << 1) | 0) + 1538 | 0; + l = 0; + while (1) { + h = h << 1; + m = g + h | 0; + u: { + if (c >>> 0 > 16777215) { + b = c; + break u; + } + b = c << 8; + v[a >> 2] = b; + d = v[a + 16 >> 2]; + v[a + 16 >> 2] = d + 1; + f = w[d + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + d = x[m >> 1]; + c = B(d, b >>> 11 | 0); + v: { + if (f >>> 0 >= c >>> 0) { + f = f - c | 0; + v[a + 4 >> 2] = f; + c = b - c | 0; + v[a >> 2] = c; + u[m >> 1] = d - (d >>> 5 | 0); + k = (1 << l) + k | 0; + v[a + 84 >> 2] = k; + h = h | 1; + break v; + } + v[a >> 2] = c; + u[m >> 1] = d + (2048 - d >>> 5 | 0); + } + l = l + 1 | 0; + if ((i | 0) != (l | 0)) { + continue; + } + break; + } + break m; + } + e = b - 5 | 0; + while (1) { + w: { + if (c >>> 0 > 16777215) { + d = c; + break w; + } + d = c << 8; + v[a >> 2] = d; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | f << 8; + } + c = d >>> 1 | 0; + v[a >> 2] = c; + g = f - c | 0; + b = g >> 31; + h = (b + (h << 1) | 0) + 1 | 0; + v[a + 84 >> 2] = h; + f = g + (b & c) | 0; + v[a + 4 >> 2] = f; + e = e - 1 | 0; + if (e) { + continue; + } + break; + } + h = h << 4; + v[a + 84 >> 2] = h; + if (d >>> 0 <= 33554431) { + c = c << 8; + v[a >> 2] = c; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + b = a; + d = x[a + 1726 >> 1]; + e = B(d, c >>> 11 | 0); + x: { + if (f >>> 0 >= e >>> 0) { + f = f - e | 0; + v[a + 4 >> 2] = f; + h = h | 1; + v[a + 84 >> 2] = h; + u[a + 1726 >> 1] = d - (d >>> 5 | 0); + e = c - e | 0; + c = 3; + break x; + } + u[a + 1726 >> 1] = d + (2048 - d >>> 5 | 0); + c = 2; + } + d = c << 1; + g = (b + d | 0) + 1724 | 0; + if (e >>> 0 <= 16777215) { + e = e << 8; + v[a >> 2] = e; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + b = x[g >> 1]; + c = B(b, e >>> 11 | 0); + y: { + if (f >>> 0 >= c >>> 0) { + f = f - c | 0; + v[a + 4 >> 2] = f; + u[g >> 1] = b - (b >>> 5 | 0); + h = h + 2 | 0; + v[a + 84 >> 2] = h; + c = e - c | 0; + d = d | 1; + break y; + } + u[g >> 1] = b + (2048 - b >>> 5 | 0); + } + d = d << 1; + g = (d + a | 0) + 1724 | 0; + if (c >>> 0 <= 16777215) { + c = c << 8; + v[a >> 2] = c; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + b = x[g >> 1]; + e = B(b, c >>> 11 | 0); + z: { + if (f >>> 0 >= e >>> 0) { + f = f - e | 0; + v[a + 4 >> 2] = f; + u[g >> 1] = b - (b >>> 5 | 0); + h = h + 4 | 0; + v[a + 84 >> 2] = h; + e = c - e | 0; + d = d | 1; + break z; + } + u[g >> 1] = b + (2048 - b >>> 5 | 0); + } + if (e >>> 0 <= 16777215) { + e = e << 8; + v[a >> 2] = e; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + f = w[b + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + b = ((d << 1) + a | 0) + 1724 | 0; + c = x[b >> 1]; + d = B(c, e >>> 11 | 0); + if (d >>> 0 <= f >>> 0) { + v[a + 4 >> 2] = f - d; + v[a >> 2] = e - d; + u[b >> 1] = c - (c >>> 5 | 0); + v[a + 84 >> 2] = h + 8; + break m; + } + v[a >> 2] = d; + u[b >> 1] = c + (2048 - c >>> 5 | 0); + } + c = 0; + g = v[a + 84 >> 2]; + if (g >>> 0 >= y[a + 36 >> 2] | g >>> 0 >= y[a + 48 >> 2]) { + break c; + } + k = v[a + 32 >> 2]; + b = v[a + 40 >> 2] - k | 0; + d = v[a + 104 >> 2]; + i = b >>> 0 < d >>> 0 ? b : d; + v[a + 104 >> 2] = d - i; + c = k + (g ^ -1) | 0; + c = g >>> 0 >= k >>> 0 ? v[a + 44 >> 2] + c | 0 : c; + d = v[a + 24 >> 2]; + b = w[c + d | 0]; + v[a + 32 >> 2] = k + 1; + t[d + k | 0] = b; + f = i - 1 | 0; + A: { + if (!f) { + break A; + } + if (f & 1) { + b = c + 1 | 0; + c = (b | 0) == v[a + 44 >> 2] ? 0 : b; + g = v[a + 24 >> 2]; + d = w[c + g | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + g | 0] = d; + f = i - 2 | 0; + } + if ((i | 0) == 2) { + break A; + } + while (1) { + g = v[a + 24 >> 2]; + b = c + 1 | 0; + c = (b | 0) == v[a + 44 >> 2] ? 0 : b; + d = w[g + c | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + g | 0] = d; + b = c + 1 | 0; + c = (b | 0) == v[a + 44 >> 2] ? 0 : b; + g = v[a + 24 >> 2]; + d = w[c + g | 0]; + b = v[a + 32 >> 2]; + v[a + 32 >> 2] = b + 1; + t[b + g | 0] = d; + f = f - 2 | 0; + if (f) { + continue; + } + break; + } + } + j = v[a + 32 >> 2]; + if (j >>> 0 <= y[a + 36 >> 2]) { + break f; + } + v[a + 36 >> 2] = j; + } + if (y[a + 40 >> 2] > j >>> 0) { + continue; + } + break; + } + } + c = 1; + b = v[a >> 2]; + if (b >>> 0 > 16777215) { + break c; + } + v[a >> 2] = b << 8; + b = v[a + 16 >> 2]; + v[a + 16 >> 2] = b + 1; + v[a + 4 >> 2] = w[b + v[a + 12 >> 2] | 0] | v[a + 4 >> 2] << 8; + } + return c; + } + function Z(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0; + i = 8; + a: { + b: { + if (a >>> 0 > 4294967239) { + break b; + } + while (1) { + i = i >>> 0 > 8 ? i : 8; + b = v[1291]; + f = b; + e = v[1290]; + h = e; + a = a >>> 0 > 8 ? a + 3 & -4 : 8; + c: { + if (a >>> 0 <= 127) { + g = (a >>> 3 | 0) - 1 | 0; + break c; + } + d = E(a); + g = ((a >>> 29 - d ^ 4) - (d << 2) | 0) + 110 | 0; + if (a >>> 0 <= 4095) { + break c; + } + d = ((a >>> 30 - d ^ 2) - (d << 1) | 0) + 71 | 0; + g = d >>> 0 < 63 ? d : 63; + } + c = g; + d = c & 31; + if ((c & 63) >>> 0 >= 32) { + c = 0; + b = b >>> d | 0; + } else { + c = b >>> d | 0; + b = ((1 << d) - 1 & b) << 32 - d | h >>> d; + } + d = c; + if (b | c) { + while (1) { + f = b; + c = d; + d: { + if (c | b) { + e = c - 1 | 0; + h = e + 1 | 0; + j = e; + e = b - 1 | 0; + h = (e | 0) != -1 ? h : j; + e = E(b ^ e) + 32 | 0; + b = E(c ^ h); + b = (b | 0) == 32 ? e : b; + c = 63 - b | 0; + Q = 0 - (b >>> 0 > 63) | 0; + break d; + } + Q = 0; + c = 64; + } + e = c; + c = e; + b = c & 31; + if ((c & 63) >>> 0 >= 32) { + c = 0; + h = d >>> b | 0; + } else { + c = d >>> b | 0; + h = ((1 << b) - 1 & d) << 32 - b | f >>> b; + } + d = c; + g = e + g | 0; + f = g << 4; + c = v[f + 4136 >> 2]; + e = f + 4128 | 0; + e: { + if ((c | 0) != (e | 0)) { + b = $(c, i, a); + if (b) { + break b; + } + b = v[c + 4 >> 2]; + v[b + 8 >> 2] = v[c + 8 >> 2]; + v[v[c + 8 >> 2] + 4 >> 2] = b; + v[c + 8 >> 2] = e; + b = f + 4132 | 0; + v[c + 4 >> 2] = v[b >> 2]; + v[b >> 2] = c; + v[v[c + 4 >> 2] + 8 >> 2] = c; + g = g + 1 | 0; + b = (d & 1) << 31 | h >>> 1; + d = d >>> 1 | 0; + break e; + } + k = v[1291]; + c = g; + j = c & 63; + b = j; + f = b & 31; + if (b >>> 0 >= 32) { + b = 0; + e = -1 >>> f | 0; + } else { + e = -1 >>> f | 0; + b = e; + e = b | (1 << f) - 1 << 32 - f; + } + e = e & -2; + f = j & 31; + if (j >>> 0 >= 32) { + b = e << f; + j = 0; + } else { + b = (1 << f) - 1 & e >>> 32 - f | b << f; + j = e << f; + } + f = b; + e = 0 - c & 63; + c = e; + b = c & 31; + if (c >>> 0 >= 32) { + b = -1 << b; + c = 0; + } else { + c = -1 << b; + b = c | (1 << b) - 1 & -1 >>> 32 - b; + } + l = c & -2; + c = e & 31; + if (e >>> 0 >= 32) { + e = 0; + c = b >>> c | 0; + } else { + e = b >>> c | 0; + c = ((1 << c) - 1 & b) << 32 - c | l >>> c; + } + b = c | j; + Q = e | f; + v[1290] = v[1290] & b; + v[1291] = Q & k; + b = h ^ 1; + } + if (b | d) { + continue; + } + break; + } + e = v[1290]; + f = v[1291]; + } + f: { + if (e | f) { + d = E(f); + h = 63 - ((d | 0) == 32 ? E(e) + 32 | 0 : d) | 0; + b = h << 4; + d = v[b + 4136 >> 2]; + g: { + if (!f & e >>> 0 < 1073741824) { + break g; + } + g = 99; + c = b + 4128 | 0; + if ((c | 0) == (d | 0)) { + break g; + } + while (1) { + if (!g) { + break g; + } + b = $(d, i, a); + if (b) { + break b; + } + g = g - 1 | 0; + d = v[d + 8 >> 2]; + if ((c | 0) != (d | 0)) { + continue; + } + break; + } + d = c; + } + if (aa(a + 48 | 0)) { + break f; + } + if (!d) { + break a; + } + c = (h << 4) + 4128 | 0; + if ((c | 0) == (d | 0)) { + break a; + } + while (1) { + b = $(d, i, a); + if (b) { + break b; + } + d = v[d + 8 >> 2]; + if ((c | 0) != (d | 0)) { + continue; + } + break; + } + break a; + } + if (!aa(a + 48 | 0)) { + break a; + } + } + b = 0; + if (i - 1 & i) { + break b; + } + if (a >>> 0 <= 4294967239) { + continue; + } + break; + } + } + return b; + } + return 0; + } + function W(a, b, c) { + var d = 0, + e = 0; + if (c >>> 0 >= 512) { + O(a | 0, b | 0, c | 0) | 0; + return; + } + d = a + c | 0; + a: { + if (!((a ^ b) & 3)) { + b: { + if (!(a & 3)) { + c = a; + break b; + } + if (!c) { + c = a; + break b; + } + c = a; + while (1) { + t[c | 0] = w[b | 0]; + b = b + 1 | 0; + c = c + 1 | 0; + if (!(c & 3)) { + break b; + } + if (c >>> 0 < d >>> 0) { + continue; + } + break; + } + } + a = d & -4; + c: { + if (a >>> 0 < 64) { + break c; + } + e = a + -64 | 0; + if (e >>> 0 < c >>> 0) { + break c; + } + while (1) { + v[c >> 2] = v[b >> 2]; + v[c + 4 >> 2] = v[b + 4 >> 2]; + v[c + 8 >> 2] = v[b + 8 >> 2]; + v[c + 12 >> 2] = v[b + 12 >> 2]; + v[c + 16 >> 2] = v[b + 16 >> 2]; + v[c + 20 >> 2] = v[b + 20 >> 2]; + v[c + 24 >> 2] = v[b + 24 >> 2]; + v[c + 28 >> 2] = v[b + 28 >> 2]; + v[c + 32 >> 2] = v[b + 32 >> 2]; + v[c + 36 >> 2] = v[b + 36 >> 2]; + v[c + 40 >> 2] = v[b + 40 >> 2]; + v[c + 44 >> 2] = v[b + 44 >> 2]; + v[c + 48 >> 2] = v[b + 48 >> 2]; + v[c + 52 >> 2] = v[b + 52 >> 2]; + v[c + 56 >> 2] = v[b + 56 >> 2]; + v[c + 60 >> 2] = v[b + 60 >> 2]; + b = b - -64 | 0; + c = c - -64 | 0; + if (e >>> 0 >= c >>> 0) { + continue; + } + break; + } + } + if (a >>> 0 <= c >>> 0) { + break a; + } + while (1) { + v[c >> 2] = v[b >> 2]; + b = b + 4 | 0; + c = c + 4 | 0; + if (a >>> 0 > c >>> 0) { + continue; + } + break; + } + break a; + } + if (d >>> 0 < 4) { + c = a; + break a; + } + e = d - 4 | 0; + if (e >>> 0 < a >>> 0) { + c = a; + break a; + } + c = a; + while (1) { + t[c | 0] = w[b | 0]; + t[c + 1 | 0] = w[b + 1 | 0]; + t[c + 2 | 0] = w[b + 2 | 0]; + t[c + 3 | 0] = w[b + 3 | 0]; + b = b + 4 | 0; + c = c + 4 | 0; + if (e >>> 0 >= c >>> 0) { + continue; + } + break; + } + } + if (c >>> 0 < d >>> 0) { + while (1) { + t[c | 0] = w[b | 0]; + b = b + 1 | 0; + c = c + 1 | 0; + if ((d | 0) != (c | 0)) { + continue; + } + break; + } + } + } + function ca(a, b, c) { + var d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0; + g = v[a >> 2]; + a: { + if (g >>> 0 >= 16777216) { + f = v[a + 4 >> 2]; + break a; + } + g = g << 8; + v[a >> 2] = g; + d = v[a + 16 >> 2]; + v[a + 16 >> 2] = d + 1; + f = w[d + v[a + 12 >> 2] | 0] | v[a + 4 >> 2] << 8; + v[a + 4 >> 2] = f; + } + d = x[b >> 1]; + e = B(d, g >>> 11 | 0); + b: { + if (f >>> 0 < e >>> 0) { + u[b >> 1] = d + (2048 - d >>> 5 | 0); + j = ((c << 4) + b | 0) + 4 | 0; + i = 2; + d = 8; + break b; + } + f = f - e | 0; + v[a + 4 >> 2] = f; + u[b >> 1] = d - (d >>> 5 | 0); + g = g - e | 0; + if (g >>> 0 <= 16777215) { + g = g << 8; + v[a >> 2] = g; + d = v[a + 16 >> 2]; + v[a + 16 >> 2] = d + 1; + f = w[d + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + d = x[b + 2 >> 1]; + e = B(d, g >>> 11 | 0); + if (f >>> 0 < e >>> 0) { + u[b + 2 >> 1] = d + (2048 - d >>> 5 | 0); + j = ((c << 4) + b | 0) + 260 | 0; + i = 10; + d = 8; + break b; + } + f = f - e | 0; + v[a + 4 >> 2] = f; + u[b + 2 >> 1] = d - (d >>> 5 | 0); + j = b + 516 | 0; + e = g - e | 0; + i = 18; + d = 256; + } + v[a + 104 >> 2] = i; + b = 1; + while (1) { + b = b << 1; + g = j + b | 0; + c: { + if (e >>> 0 > 16777215) { + c = e; + break c; + } + c = e << 8; + v[a >> 2] = c; + e = v[a + 16 >> 2]; + v[a + 16 >> 2] = e + 1; + f = w[e + v[a + 12 >> 2] | 0] | f << 8; + v[a + 4 >> 2] = f; + } + h = x[g >> 1]; + e = B(h, c >>> 11 | 0); + d: { + if (f >>> 0 >= e >>> 0) { + f = f - e | 0; + v[a + 4 >> 2] = f; + e = c - e | 0; + v[a >> 2] = e; + u[g >> 1] = h - (h >>> 5 | 0); + b = b | 1; + break d; + } + v[a >> 2] = e; + u[g >> 1] = (2048 - h >>> 5 | 0) + h; + } + if (b >>> 0 < d >>> 0) { + continue; + } + break; + } + v[a + 104 >> 2] = (b - d | 0) + i; + } + function aa(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0; + e = v[258]; + c = a + 3 & -4; + b = e + c | 0; + a: { + b: { + if (b >>> 0 <= e >>> 0 ? c : 0) { + break b; + } + if (b >>> 0 > S() << 16 >>> 0) { + if (!(P(b | 0) | 0)) { + break b; + } + } + v[258] = b; + break a; + } + v[1292] = 48; + e = -1; + } + if ((e | 0) != -1) { + c = a + e | 0; + b = c - 16 | 0; + v[b + 12 >> 2] = 16; + v[b >> 2] = 16; + a = v[1288]; + if (a) { + d = v[a + 8 >> 2]; + } else { + d = 0; + } + c: { + d: { + if ((d | 0) == (e | 0)) { + d = e - (v[e - 4 >> 2] & -2) | 0; + f = v[d - 4 >> 2]; + v[a + 8 >> 2] = c; + a = d - (f & -2) | 0; + c = -16; + if (!(t[(a + v[a >> 2] | 0) - 4 | 0] & 1)) { + break d; + } + c = v[a + 4 >> 2]; + v[c + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = c; + b = b - a | 0; + v[a >> 2] = b; + break c; + } + v[e + 12 >> 2] = 16; + v[e >> 2] = 16; + v[e + 8 >> 2] = c; + v[e + 4 >> 2] = a; + v[1288] = e; + c = 16; + } + a = e + c | 0; + b = b - a | 0; + v[a >> 2] = b; + } + v[((b & -4) + a | 0) - 4 >> 2] = b | 1; + g = a; + d = v[a >> 2] - 8 | 0; + e: { + if (d >>> 0 <= 127) { + b = (d >>> 3 | 0) - 1 | 0; + break e; + } + f = E(d); + b = ((d >>> 29 - f ^ 4) - (f << 2) | 0) + 110 | 0; + if (d >>> 0 <= 4095) { + break e; + } + b = ((d >>> 30 - f ^ 2) - (f << 1) | 0) + 71 | 0; + b = b >>> 0 < 63 ? b : 63; + } + c = b << 4; + v[g + 4 >> 2] = c + 4128; + c = c + 4136 | 0; + v[a + 8 >> 2] = v[c >> 2]; + v[c >> 2] = a; + v[v[a + 8 >> 2] + 4 >> 2] = a; + c = v[1291]; + a = b & 31; + if ((b & 63) >>> 0 >= 32) { + b = 1 << a; + d = 0; + } else { + d = 1 << a; + b = d - 1 & 1 >>> 32 - a; + } + v[1290] = d | v[1290]; + v[1291] = b | c; + } + return (e | 0) != -1; + } + function ea() { + var a = 0, + b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0; + while (1) { + b = f; + c = b >>> 1 | 0; + b = (b & 1) << 31 | g >>> 1; + a = b & 1; + d = 0 - a & -679014590; + h = 0 - ((a | 0) != 0) & -915646571; + a = g & 1; + e = 0 - a & -679014590; + a = c ^ 0 - ((a | 0) != 0) & -915646571; + c = b ^ e; + b = a >>> 1 | 0; + a = (a & 1) << 31 | c >>> 1; + c = a ^ d; + b = b ^ h; + d = b >>> 1 | 0; + b = (b & 1) << 31 | c >>> 1; + c = b & 1; + a = a & 1; + e = 0 - a & -679014590; + a = d ^ 0 - ((a | 0) != 0) & -915646571; + d = b ^ e; + b = a >>> 1 | 0; + a = (a & 1) << 31 | d >>> 1; + d = 0 - c & -679014590 ^ a; + c = b ^ 0 - ((c | 0) != 0) & -915646571; + b = c >>> 1 | 0; + c = (c & 1) << 31 | d >>> 1; + d = c & 1; + h = 0 - d & -679014590; + a = a & 1; + e = 0 - a & -679014590; + b = b ^ 0 - ((a | 0) != 0) & -915646571; + a = c ^ e; + a = (b & 1) << 31 | a >>> 1; + c = 0 - ((d | 0) != 0) & -915646571 ^ b >>> 1; + d = a ^ h; + b = c >>> 1 | 0; + e = (g << 3) + 2064 | 0; + c = (c & 1) << 31 | d >>> 1; + d = c & 1; + a = a & 1; + h = 0 - a & -679014590; + b = b ^ 0 - ((a | 0) != 0) & -915646571; + a = c ^ h; + v[e >> 2] = 0 - d & -679014590 ^ ((b & 1) << 31 | a >>> 1); + v[e + 4 >> 2] = 0 - ((d | 0) != 0) & -915646571 ^ b >>> 1; + b = f; + f = g + 1 | 0; + b = f ? b : b + 1 | 0; + g = f; + f = b; + if ((g | 0) != 256 | b) { + continue; + } + break; + } + } + function $(a, b, c) { + var d = 0, + e = 0, + f = 0, + g = 0; + d = a + 4 | 0; + e = (d + b | 0) - 1 & 0 - b; + b = v[a >> 2]; + if (e + c >>> 0 <= (b + a | 0) - 4 >>> 0) { + f = v[a + 4 >> 2]; + v[f + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = f; + if ((d | 0) != (e | 0)) { + e = e - d | 0; + f = a - (v[a - 4 >> 2] & -2) | 0; + d = e + v[f >> 2] | 0; + v[f >> 2] = d; + v[(f + (d & -4) | 0) - 4 >> 2] = d; + a = a + e | 0; + b = b - e | 0; + v[a >> 2] = b; + } + a: { + if (c + 24 >>> 0 <= b >>> 0) { + d = (a + c | 0) + 8 | 0; + b = (b - c | 0) - 8 | 0; + v[d >> 2] = b; + v[(d + (b & -4) | 0) - 4 >> 2] = b | 1; + g = d; + f = v[d >> 2] - 8 | 0; + b: { + if (f >>> 0 <= 127) { + e = (f >>> 3 | 0) - 1 | 0; + break b; + } + b = E(f); + e = ((f >>> 29 - b ^ 4) - (b << 2) | 0) + 110 | 0; + if (f >>> 0 <= 4095) { + break b; + } + b = ((f >>> 30 - b ^ 2) - (b << 1) | 0) + 71 | 0; + e = b >>> 0 < 63 ? b : 63; + } + b = e; + e = b << 4; + v[g + 4 >> 2] = e + 4128; + e = e + 4136 | 0; + v[d + 8 >> 2] = v[e >> 2]; + v[e >> 2] = d; + v[v[d + 8 >> 2] + 4 >> 2] = d; + e = v[1291]; + d = b & 31; + if ((b & 63) >>> 0 >= 32) { + b = 1 << d; + f = 0; + } else { + f = 1 << d; + b = f - 1 & 1 >>> 32 - d; + } + v[1290] = f | v[1290]; + v[1291] = b | e; + b = c + 8 | 0; + v[a >> 2] = b; + v[((b & -4) + a | 0) - 4 >> 2] = b; + break a; + } + v[(a + b | 0) - 4 >> 2] = b; + } + a = a + 4 | 0; + } else { + a = 0; + } + return a; + } + function X(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0; + if (a) { + c = a - 4 | 0; + e = v[c >> 2]; + b = e; + d = c; + f = v[a - 8 >> 2]; + a = f & -2; + if ((a | 0) != (f | 0)) { + d = c - a | 0; + b = v[d + 4 >> 2]; + v[b + 8 >> 2] = v[d + 8 >> 2]; + v[v[d + 8 >> 2] + 4 >> 2] = b; + b = a + e | 0; + } + a = c + e | 0; + c = v[a >> 2]; + if ((c | 0) != v[(a + c | 0) - 4 >> 2]) { + e = v[a + 4 >> 2]; + v[e + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = e; + b = b + c | 0; + } + v[d >> 2] = b; + v[((b & -4) + d | 0) - 4 >> 2] = b | 1; + f = d; + b = v[d >> 2] - 8 | 0; + a: { + if (b >>> 0 <= 127) { + a = (b >>> 3 | 0) - 1 | 0; + break a; + } + e = E(b); + a = ((b >>> 29 - e ^ 4) - (e << 2) | 0) + 110 | 0; + if (b >>> 0 <= 4095) { + break a; + } + a = ((b >>> 30 - e ^ 2) - (e << 1) | 0) + 71 | 0; + a = a >>> 0 < 63 ? a : 63; + } + c = a << 4; + v[f + 4 >> 2] = c + 4128; + c = c + 4136 | 0; + v[d + 8 >> 2] = v[c >> 2]; + v[c >> 2] = d; + v[v[d + 8 >> 2] + 4 >> 2] = d; + c = v[1291]; + d = a & 31; + if ((a & 63) >>> 0 >= 32) { + a = 1 << d; + b = 0; + } else { + b = 1 << d; + a = b - 1 & 1 >>> 32 - d; + } + v[1290] = b | v[1290]; + v[1291] = a | c; + } + } + function _(a, b) { + var c = 0; + a: { + if (!b) { + break a; + } + c = a + b | 0; + t[c - 1 | 0] = 0; + t[a | 0] = 0; + if (b >>> 0 < 3) { + break a; + } + t[c - 2 | 0] = 0; + t[a + 1 | 0] = 0; + t[c - 3 | 0] = 0; + t[a + 2 | 0] = 0; + if (b >>> 0 < 7) { + break a; + } + t[c - 4 | 0] = 0; + t[a + 3 | 0] = 0; + if (b >>> 0 < 9) { + break a; + } + c = 0 - a & 3; + a = c + a | 0; + v[a >> 2] = 0; + c = b - c & -4; + b = c + a | 0; + v[b - 4 >> 2] = 0; + if (c >>> 0 < 9) { + break a; + } + v[a + 8 >> 2] = 0; + v[a + 4 >> 2] = 0; + v[b - 8 >> 2] = 0; + v[b - 12 >> 2] = 0; + if (c >>> 0 < 25) { + break a; + } + v[a + 24 >> 2] = 0; + v[a + 20 >> 2] = 0; + v[a + 16 >> 2] = 0; + v[a + 12 >> 2] = 0; + v[b - 16 >> 2] = 0; + v[b - 20 >> 2] = 0; + v[b - 24 >> 2] = 0; + v[b - 28 >> 2] = 0; + b = c; + c = a & 4 | 24; + b = b - c | 0; + if (b >>> 0 < 32) { + break a; + } + a = a + c | 0; + while (1) { + v[a + 24 >> 2] = 0; + v[a + 28 >> 2] = 0; + v[a + 16 >> 2] = 0; + v[a + 20 >> 2] = 0; + v[a + 8 >> 2] = 0; + v[a + 12 >> 2] = 0; + v[a >> 2] = 0; + v[a + 4 >> 2] = 0; + a = a + 32 | 0; + b = b - 32 | 0; + if (b >>> 0 > 31) { + continue; + } + break; + } + } + } + function ja(a) { + a = a | 0; + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0; + if (!w[4112]) { + ga(); + ea(); + t[4112] = 1; + } + c = Z(28); + e = c; + b = Z(1208); + a: { + if (b) { + v[b + 36 >> 2] = 2; + f = b; + d = Z(28456); + if (d) { + v[d + 52 >> 2] = 104857600; + v[d + 60 >> 2] = 2; + v[d + 24 >> 2] = 0; + v[d + 56 >> 2] = 0; + } else { + d = 0; + } + v[f + 1200 >> 2] = d; + if (d) { + t[b + 40 | 0] = 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + v[b + 24 >> 2] = 0; + v[b + 28 >> 2] = 0; + _(b + 72 | 0, 100); + v[b + 172 >> 2] = 12; + break a; + } + X(b); + } + b = 0; + } + v[e >> 2] = b; + b = Z(a); + v[c + 8 >> 2] = 0; + v[c + 12 >> 2] = 0; + v[c + 4 >> 2] = b; + b = Z(a); + v[c + 24 >> 2] = a; + v[c + 20 >> 2] = 0; + v[c + 16 >> 2] = b; + return c | 0; + } + function ga() { + var a = 0, + b = 0, + c = 0, + d = 0; + while (1) { + b = c >>> 1 | 0; + a = (b ^ 0 - (c & 1) & -306674912) >>> 1 | 0; + b = (a ^ 0 - (b & 1) & -306674912) >>> 1 | 0; + a = (0 - (a & 1) & -306674912 ^ b) >>> 1 | 0; + d = 0 - (a & 1) & -306674912; + a = (a ^ 0 - (b & 1) & -306674912) >>> 1 | 0; + b = (d ^ a) >>> 1 | 0; + a = (b ^ 0 - (a & 1) & -306674912) >>> 1 | 0; + v[(c << 2) + 1040 >> 2] = 0 - (a & 1) & -306674912 ^ (a ^ 0 - (b & 1) & -306674912) >>> 1; + c = c + 1 | 0; + if ((c | 0) != 256) { + continue; + } + break; + } + } + function fa(a, b, c) { + var d = 0, + e = 0; + a: { + b: { + if (c >>> 0 >= 4) { + if ((a | b) & 3) { + break b; + } + while (1) { + if (v[a >> 2] != v[b >> 2]) { + break b; + } + b = b + 4 | 0; + a = a + 4 | 0; + c = c - 4 | 0; + if (c >>> 0 > 3) { + continue; + } + break; + } + } + if (!c) { + break a; + } + } + while (1) { + d = w[a | 0]; + e = w[b | 0]; + if ((d | 0) == (e | 0)) { + b = b + 1 | 0; + a = a + 1 | 0; + c = c - 1 | 0; + if (c) { + continue; + } + break a; + } + break; + } + return d - e | 0; + } + return 0; + } + function Y(a, b, c) { + var d = 0; + c = c ^ -1; + a: { + if (!b) { + break a; + } + if (b & 1) { + c = v[((w[a | 0] ^ c & 255) << 2) + 1040 >> 2] ^ c >>> 8; + a = a + 1 | 0; + d = b - 1 | 0; + } else { + d = b; + } + if ((b | 0) == 1) { + break a; + } + while (1) { + b = v[((w[a | 0] ^ c & 255) << 2) + 1040 >> 2] ^ c >>> 8; + c = v[((w[a + 1 | 0] ^ b & 255) << 2) + 1040 >> 2] ^ b >>> 8; + a = a + 2 | 0; + d = d - 2 | 0; + if (d) { + continue; + } + break; + } + } + return c ^ -1; + } + function ba(a, b, c) { + var d = 0, + e = 0, + f = 0; + e = v[a + 16 >> 2]; + d = c - e | 0; + f = d + v[a + 128 >> 2] | 0; + c = v[a + 132 >> 2]; + v[a + 128 >> 2] = f; + v[a + 132 >> 2] = f >>> 0 < d >>> 0 ? c + 1 | 0 : c; + v[a + 24 >> 2] = Y(b + e | 0, d, v[a + 24 >> 2]); + v[a + 28 >> 2] = 0; + } + function la(a) { + a = a | 0; + var b = 0, + c = 0; + b = v[a >> 2]; + if (b) { + c = v[b + 1200 >> 2]; + if (v[c + 60 >> 2]) { + X(v[c + 24 >> 2]); + } + X(c); + X(b); + } + X(v[a + 4 >> 2]); + X(v[a + 16 >> 2]); + X(a); + } + function ha() { + var a = 0, + b = 0, + c = 0; + while (1) { + b = a << 4; + c = b + 4128 | 0; + v[b + 4132 >> 2] = c; + v[b + 4136 >> 2] = c; + a = a + 1 | 0; + if ((a | 0) != 64) { + continue; + } + break; + } + aa(48); + } + function qa(a, b) { + a = a | 0; + b = b | 0; + v[a + 12 >> 2] = b; + v[a + 8 >> 2] = 0; + } + function ia(a) { + a = a | 0; + return y[a + 8 >> 2] >= y[a + 12 >> 2] | 0; + } + function ka() { + if (!w[4112]) { + ga(); + ea(); + t[4112] = 1; + } + } + function ra(a) { + a = a | 0; + return v[a + 4 >> 2]; + } + function oa(a) { + a = a | 0; + return v[a + 20 >> 2]; + } + function na(a) { + a = a | 0; + return v[a + 16 >> 2]; + } + function ma(a) { + a = a | 0; + v[a + 20 >> 2] = 0; + } + // EMSCRIPTEN_END_FUNCS + e = w; + p(); + var R = c([]); + function S() { + return s.byteLength / 65536 | 0; + } + return { + "d": ha, + "e": ka, + "f": ja, + "g": ia, + "h": ra, + "i": qa, + "j": pa, + "k": oa, + "l": na, + "m": ma, + "n": la, + "o": R + }; + } + return T(V); + } + // EMSCRIPTEN_END_ASM + (A); + } + function ca() { + return { + then: function then(b) { + b({ + instance: new ba() + }); + } + }; + } + var da = Error, + WebAssembly = {}; + y = []; + "object" !== _typeof(WebAssembly) && B("no native wasm support detected"); + var D, + E = !1, + F, + G, + z = a.INITIAL_MEMORY || 83886080; + a.wasmMemory ? D = a.wasmMemory : D = new aa(); + D && (F = D.buffer); + z = F.byteLength; + var H = F; + F = H; + a.HEAP8 = new Int8Array(H); + a.HEAP16 = new Int16Array(H); + a.HEAP32 = new Int32Array(H); + a.HEAPU8 = G = new Uint8Array(H); + a.HEAPU16 = new Uint16Array(H); + a.HEAPU32 = new Uint32Array(H); + a.HEAPF32 = new Float32Array(H); + a.HEAPF64 = new Float64Array(H); + var K, + L = [], + M = [], + N = []; + function fa() { + var b = a.preRun.shift(); + L.unshift(b); + } + Math.imul || (Math.imul = function (b, e) { + var d = b & 65535, + m = e & 65535; + return d * m + ((b >>> 16) * m + d * (e >>> 16) << 16) | 0; + }); + if (!Math.fround) { + var ha = new Float32Array(1); + Math.fround = function (b) { + ha[0] = b; + return ha[0]; + }; + } + Math.clz32 || (Math.clz32 = function (b) { + var e = 32, + d = b >> 16; + d && (e -= 16, b = d); + if (d = b >> 8) e -= 8, b = d; + if (d = b >> 4) e -= 4, b = d; + if (d = b >> 2) e -= 2, b = d; + return b >> 1 ? e - 2 : e - b; + }); + Math.trunc || (Math.trunc = function (b) { + return 0 > b ? Math.ceil(b) : Math.floor(b); + }); + var O = 0, + T = null; + a.preloadedImages = {}; + a.preloadedAudios = {}; + function B(b) { + if (a.onAbort) a.onAbort(b); + b = "Aborted(" + b + ")"; + x(b); + E = !0; + b = new da(b + ". Build with -s ASSERTIONS=1 for more info."); + q(b); + throw b; + } + function U(b) { + return b.startsWith("data:application/octet-stream;base64,"); + } + var V; + if (a.locateFile) { + if (V = "xzdec-asm.wasm", !U(V)) { + var ia = V; + V = a.locateFile ? a.locateFile(ia, u) : u + ia; + } + } else V = new URL("xzdec-asm.wasm", (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href)).toString(); + function ja() { + var b = V; + try { + if (b == V && y) return new Uint8Array(y); + if (U(b)) try { + var e = ka(b.slice(37)), + d = new Uint8Array(e.length); + for (b = 0; b < e.length; ++b) d[b] = e.charCodeAt(b); + var m = d; + } catch (k) { + throw Error("Converting base64 string to bytes failed."); + } else m = void 0; + var h = m; + if (h) return h; + throw "both async and sync fetching of the wasm failed"; + } catch (k) { + B(k); + } + } + function la() { + return y || "function" !== typeof fetch ? Promise.resolve().then(function () { + return ja(); + }) : fetch(V, { + credentials: "same-origin" + }).then(function (b) { + if (!b.ok) throw "failed to load wasm binary file at '" + V + "'"; + return b.arrayBuffer(); + }).catch(function () { + return ja(); + }); + } + function W(b) { + for (; 0 < b.length;) { + var e = b.shift(); + if ("function" == typeof e) e(a);else { + var d = e.H; + "number" === typeof d ? void 0 === e.A ? ma(d)() : ma(d)(e.A) : d(void 0 === e.A ? null : e.A); + } + } + } + var X = []; + function ma(b) { + var e = X[b]; + e || (b >= X.length && (X.length = b + 1), X[b] = e = K.get(b)); + return e; + } + var ka = "function" === typeof atob ? atob : function (b) { + var e = "", + d = 0; + b = b.replace(/[^A-Za-z0-9\+\/=]/g, ""); + do { + var m = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); + var h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); + var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); + var v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(d++)); + m = m << 2 | h >> 4; + h = (h & 15) << 4 | k >> 2; + var I = (k & 3) << 6 | v; + e += String.fromCharCode(m); + 64 !== k && (e += String.fromCharCode(h)); + 64 !== v && (e += String.fromCharCode(I)); + } while (d < b.length); + return e; + }, + A = { + b: Uint8Array.prototype.copyWithin ? function (b, e, d) { + G.copyWithin(b, e, e + d); + } : function (b, e, d) { + G.set(G.subarray(e, e + d), b); + }, + c: function c() { + B("OOM"); + }, + a: D + }; + (function () { + function b(h) { + a.asm = h.exports; + K = a.asm.o; + M.unshift(a.asm.d); + O--; + a.monitorRunDependencies && a.monitorRunDependencies(O); + 0 == O && (T && (h = T, T = null, h())); + } + function e(h) { + b(h.instance); + } + function d(h) { + return la().then(function () { + return ca(); + }).then(function (k) { + return k; + }).then(h, function (k) { + x("failed to asynchronously prepare wasm: " + k); + B(k); + }); + } + var m = { + a: A + }; + O++; + a.monitorRunDependencies && a.monitorRunDependencies(O); + if (a.instantiateWasm) try { + return a.instantiateWasm(m, b); + } catch (h) { + return x("Module.instantiateWasm callback failed with error: " + h), !1; + } + (function () { + return y || "function" !== typeof WebAssembly.instantiateStreaming || U(V) || "function" !== typeof fetch ? d(e) : fetch(V, { + credentials: "same-origin" + }).then(function (h) { + return WebAssembly.instantiateStreaming(h, m).then(e, function (k) { + x("wasm streaming compile failed: " + k); + x("falling back to ArrayBuffer instantiation"); + return d(e); + }); + }); + })().catch(q); + return {}; + })(); + a.___wasm_call_ctors = function () { + return (a.___wasm_call_ctors = a.asm.d).apply(null, arguments); + }; + a._init = function () { + return (a._init = a.asm.e).apply(null, arguments); + }; + a._init_decompression = function () { + return (a._init_decompression = a.asm.f).apply(null, arguments); + }; + a._input_empty = function () { + return (a._input_empty = a.asm.g).apply(null, arguments); + }; + a._get_in_buffer = function () { + return (a._get_in_buffer = a.asm.h).apply(null, arguments); + }; + a._set_new_input = function () { + return (a._set_new_input = a.asm.i).apply(null, arguments); + }; + a._decompress = function () { + return (a._decompress = a.asm.j).apply(null, arguments); + }; + a._get_out_pos = function () { + return (a._get_out_pos = a.asm.k).apply(null, arguments); + }; + a._get_out_buffer = function () { + return (a._get_out_buffer = a.asm.l).apply(null, arguments); + }; + a._out_buffer_cleared = function () { + return (a._out_buffer_cleared = a.asm.m).apply(null, arguments); + }; + a._release = function () { + return (a._release = a.asm.n).apply(null, arguments); + }; + var Y; + T = function na() { + Y || Z(); + Y || (T = na); + }; + function Z() { + function b() { + if (!Y && (Y = !0, a.calledRun = !0, !E)) { + W(M); + n(a); + if (a.onRuntimeInitialized) a.onRuntimeInitialized(); + if (a.postRun) for ("function" == typeof a.postRun && (a.postRun = [a.postRun]); a.postRun.length;) { + var e = a.postRun.shift(); + N.unshift(e); + } + W(N); + } + } + if (!(0 < O)) { + if (a.preRun) for ("function" == typeof a.preRun && (a.preRun = [a.preRun]); a.preRun.length;) fa(); + W(L); + 0 < O || (a.setStatus ? (a.setStatus("Running..."), setTimeout(function () { + setTimeout(function () { + a.setStatus(""); + }, 1); + b(); + }, 1)) : b()); + } + } + a.run = Z; + if (a.preInit) for ("function" == typeof a.preInit && (a.preInit = [a.preInit]); 0 < a.preInit.length;) a.preInit.pop()(); + Z(); + return XZ.ready; + }; + }(); + + var XZ = function () { + var _scriptDir = (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href); + return function (XZ) { + XZ = XZ || {}; + var a; + a || (a = typeof XZ !== 'undefined' ? XZ : {}); + var e, f; + a.ready = new Promise(function (b, c) { + e = b; + f = c; + }); + var h = {}, + l; + for (l in a) a.hasOwnProperty(l) && (h[l] = a[l]); + var m = ""; + "undefined" !== typeof document && document.currentScript && (m = document.currentScript.src); + _scriptDir && (m = _scriptDir); + 0 !== m.indexOf("blob:") ? m = m.substr(0, m.replace(/[?#].*/, "").lastIndexOf("/") + 1) : m = ""; + var n = a.printErr || console.warn.bind(console); + for (l in h) h.hasOwnProperty(l) && (a[l] = h[l]); + h = null; + var p; + a.wasmBinary && (p = a.wasmBinary); + a.noExitRuntime || !0; + "object" !== (typeof WebAssembly === "undefined" ? "undefined" : _typeof(WebAssembly)) && q("no native wasm support detected"); + var r, + t = !1, + u, + v, + w = [], + x = [], + z = []; + function A() { + var b = a.preRun.shift(); + w.unshift(b); + } + var B = 0, + D = null; + a.preloadedImages = {}; + a.preloadedAudios = {}; + function q(b) { + if (a.onAbort) a.onAbort(b); + b = "Aborted(" + b + ")"; + n(b); + t = !0; + b = new WebAssembly.RuntimeError(b + ". Build with -s ASSERTIONS=1 for more info."); + f(b); + throw b; + } + function E() { + return F.startsWith("data:application/octet-stream;base64,"); + } + var F; + if (a.locateFile) { + if (F = "xzdec-wasm.wasm", !E()) { + var G = F; + F = a.locateFile ? a.locateFile(G, m) : m + G; + } + } else F = new URL("xzdec-wasm.wasm", (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href)).toString(); + function H() { + var b = F; + try { + if (b == F && p) return new Uint8Array(p); + throw "both async and sync fetching of the wasm failed"; + } catch (c) { + q(c); + } + } + function I() { + return p || "function" !== typeof fetch ? Promise.resolve().then(function () { + return H(); + }) : fetch(F, { + credentials: "same-origin" + }).then(function (b) { + if (!b.ok) throw "failed to load wasm binary file at '" + F + "'"; + return b.arrayBuffer(); + }).catch(function () { + return H(); + }); + } + function J(b) { + for (; 0 < b.length;) { + var c = b.shift(); + if ("function" == typeof c) c(a);else { + var g = c.u; + "number" === typeof g ? void 0 === c.s ? K(g)() : K(g)(c.s) : g(void 0 === c.s ? null : c.s); + } + } + } + var L = []; + function K(b) { + var c = L[b]; + c || (b >= L.length && (L.length = b + 1), L[b] = c = v.get(b)); + return c; + } + var M = { + a: function a(b, c, g) { + u.copyWithin(b, c, c + g); + }, + b: function b() { + q("OOM"); + } + }; + (function () { + function b(d) { + a.asm = d.exports; + r = a.asm.c; + d = r.buffer; + a.HEAP8 = new Int8Array(d); + a.HEAP16 = new Int16Array(d); + a.HEAP32 = new Int32Array(d); + a.HEAPU8 = u = new Uint8Array(d); + a.HEAPU16 = new Uint16Array(d); + a.HEAPU32 = new Uint32Array(d); + a.HEAPF32 = new Float32Array(d); + a.HEAPF64 = new Float64Array(d); + v = a.asm.o; + x.unshift(a.asm.d); + B--; + a.monitorRunDependencies && a.monitorRunDependencies(B); + 0 == B && (D && (d = D, D = null, d())); + } + function c(d) { + b(d.instance); + } + function g(d) { + return I().then(function (k) { + return WebAssembly.instantiate(k, y); + }).then(function (k) { + return k; + }).then(d, function (k) { + n("failed to asynchronously prepare wasm: " + k); + q(k); + }); + } + var y = { + a: M + }; + B++; + a.monitorRunDependencies && a.monitorRunDependencies(B); + if (a.instantiateWasm) try { + return a.instantiateWasm(y, b); + } catch (d) { + return n("Module.instantiateWasm callback failed with error: " + d), !1; + } + (function () { + return p || "function" !== typeof WebAssembly.instantiateStreaming || E() || "function" !== typeof fetch ? g(c) : fetch(F, { + credentials: "same-origin" + }).then(function (d) { + return WebAssembly.instantiateStreaming(d, y).then(c, function (k) { + n("wasm streaming compile failed: " + k); + n("falling back to ArrayBuffer instantiation"); + return g(c); + }); + }); + })().catch(f); + return {}; + })(); + a.___wasm_call_ctors = function () { + return (a.___wasm_call_ctors = a.asm.d).apply(null, arguments); + }; + a._init = function () { + return (a._init = a.asm.e).apply(null, arguments); + }; + a._init_decompression = function () { + return (a._init_decompression = a.asm.f).apply(null, arguments); + }; + a._input_empty = function () { + return (a._input_empty = a.asm.g).apply(null, arguments); + }; + a._get_in_buffer = function () { + return (a._get_in_buffer = a.asm.h).apply(null, arguments); + }; + a._set_new_input = function () { + return (a._set_new_input = a.asm.i).apply(null, arguments); + }; + a._decompress = function () { + return (a._decompress = a.asm.j).apply(null, arguments); + }; + a._get_out_pos = function () { + return (a._get_out_pos = a.asm.k).apply(null, arguments); + }; + a._get_out_buffer = function () { + return (a._get_out_buffer = a.asm.l).apply(null, arguments); + }; + a._out_buffer_cleared = function () { + return (a._out_buffer_cleared = a.asm.m).apply(null, arguments); + }; + a._release = function () { + return (a._release = a.asm.n).apply(null, arguments); + }; + var N; + D = function O() { + N || P(); + N || (D = O); + }; + function P() { + function b() { + if (!N && (N = !0, a.calledRun = !0, !t)) { + J(x); + e(a); + if (a.onRuntimeInitialized) a.onRuntimeInitialized(); + if (a.postRun) for ("function" == typeof a.postRun && (a.postRun = [a.postRun]); a.postRun.length;) { + var c = a.postRun.shift(); + z.unshift(c); + } + J(z); + } + } + if (!(0 < B)) { + if (a.preRun) for ("function" == typeof a.preRun && (a.preRun = [a.preRun]); a.preRun.length;) A(); + J(w); + 0 < B || (a.setStatus ? (a.setStatus("Running..."), setTimeout(function () { + setTimeout(function () { + a.setStatus(""); + }, 1); + b(); + }, 1)) : b()); + } + } + a.run = P; + if (a.preInit) for ("function" == typeof a.preInit && (a.preInit = [a.preInit]); 0 < a.preInit.length;) a.preInit.pop()(); + P(); + return XZ.ready; + }; + }(); + + /** + * xzdec_wrapper.js: Javascript wrapper around compiled xz decompressor. + * + * Copyright 2021 Mossroy and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + + // Variable specific to this decompressor (will be used to populate global variable) + var XZMachineType = null; + + // Select asm or wasm conditionally + if ('WebAssembly' in self) { + console.debug('Instantiating WASM xz decoder'); + XZMachineType = 'WASM'; + } else { + console.debug('Instantiating ASM xz decoder'); + XZMachineType = 'ASM'; + } + + // DEV: xzdec.js has been compiled with `-s EXPORT_NAME="XZ" -s MODULARIZE=1` to avoid a clash with zstddec.js + // For explanation of loading method below to avoid conflicts, see https://github.com/emscripten-core/emscripten/blob/master/src/settings.js + + /** + * @typedef EMSInstance An object type representing an Emscripten instance + */ + + /** + * The XZ Decoder instance + * @type EMSInstance + */ + var xzdec; + var loadASM$1 = function loadASM() { + XZ$1().then(function (instance) { + params.decompressorAPI.assemblerMachineType = XZMachineType; + xzdec = instance; + }).catch(function (err) { + uiUtil.reportAssemblerErrorToAPIStatusPanel('XZ', err, XZMachineType); + }); + }; + if (XZMachineType === 'WASM') { + XZ().then(function (instance) { + params.decompressorAPI.assemblerMachineType = XZMachineType; + xzdec = instance; + }).catch(function (err) { + XZMachineType = 'ASM'; + loadASM$1(); + }); + } else { + loadASM$1(); + } + + /** + * Number of milliseconds to wait for the decompressor to be available for another chunk + * @type Integer + */ + var DELAY_WAITING_IDLE_DECOMPRESSOR$1 = 50; + + /** + * Is the decompressor already working? + * @type Boolean + */ + var busy$1 = false; + + /** + * @typedef Decompressor + * @property {Integer} _chunkSize + * @property {FileReader} _reader + * @property {unresolved} _decHandle + * @property {Integer} _inStreamPos + * @property {Integer} _outStreamPos + * @property {Array} _outBuffer + */ + + /** + * @constructor + * @param {FileReader} reader + * @param {Integer} chunkSize + * @returns {Decompressor} + */ + function Decompressor$1(reader, chunkSize) { + params.decompressorAPI.decompressorLastUsed = 'XZ'; + this._chunkSize = chunkSize || 1024 * 5; + this._reader = reader; + } + + /** + * Read length bytes, offset into the decompressed stream. Consecutive calls may only + * advance in the stream and may not overlap. + * @param {Integer} offset + * @param {Integer} length + */ + Decompressor$1.prototype.readSlice = function (offset, length) { + busy$1 = true; + var that = this; + this._inStreamPos = 0; + this._outStreamPos = 0; + this._decHandle = xzdec._init_decompression(this._chunkSize); + this._outBuffer = new Int8Array(new ArrayBuffer(length)); + this._outBufferPos = 0; + return this._readLoop(offset, length).then(function (data) { + xzdec._release(that._decHandle); + busy$1 = false; + return data; + }); + }; + + /** + * Reads stream of data from file offset for length of bytes to send to the decompresor + * This function ensures that only one decompression runs at a time + * @param {Integer} offset The file offset at which to begin reading compressed data + * @param {Integer} length The amount of data to read + * @returns {Promise} A Promise for the read data + */ + Decompressor$1.prototype.readSliceSingleThread = function (offset, length) { + // Tests whether the decompressor is ready (initiated) and not busy + if (xzdec && !busy$1) { + return this.readSlice(offset, length); + } else { + // The decompressor is already in progress. + // To avoid using too much memory, we wait until it has finished + // before using it for another decompression + var that = this; + return new Promise(function (resolve, reject) { + setTimeout(function () { + that.readSliceSingleThread(offset, length).then(resolve, reject); + }, DELAY_WAITING_IDLE_DECOMPRESSOR$1); + }); + } + }; + + /** + * + * @param {Integer} offset + * @param {Integer} length + * @returns {Array} + */ + Decompressor$1.prototype._readLoop = function (offset, length) { + var that = this; + return this._fillInBufferIfNeeded().then(function () { + var ret = xzdec._decompress(that._decHandle); + var finished = false; + if (ret === 0) ; else if (ret === 1) { + // stream ended + finished = true; + } else { + // error @todo handle + finished = true; + } + var outPos = xzdec._get_out_pos(that._decHandle); + if (outPos > 0 && that._outStreamPos + outPos >= offset) { + var outBuffer = xzdec._get_out_buffer(that._decHandle); + var copyStart = offset - that._outStreamPos; + if (copyStart < 0) copyStart = 0; + for (var i = copyStart; i < outPos && that._outBufferPos < that._outBuffer.length; i++) that._outBuffer[that._outBufferPos++] = xzdec.HEAP8[outBuffer + i]; + } + that._outStreamPos += outPos; + if (outPos > 0) xzdec._out_buffer_cleared(that._decHandle); + if (finished || that._outStreamPos >= offset + length) return that._outBuffer;else return that._readLoop(offset, length); + }); + }; + + /** + * + * @returns {Promise} + */ + Decompressor$1.prototype._fillInBufferIfNeeded = function () { + if (!xzdec._input_empty(this._decHandle)) { + return Promise.resolve(0); + } + var that = this; + return this._reader(this._inStreamPos, this._chunkSize).then(function (data) { + if (data.length > that._chunkSize) data = data.slice(0, that._chunkSize); + // For some reason, xzdec.writeArrayToMemory does not seem to be available, and is equivalent to xzdec.HEAP8.set + xzdec.HEAP8.set(data, xzdec._get_in_buffer(that._decHandle)); + that._inStreamPos += data.length; + xzdec._set_new_input(that._decHandle, data.length); + return 0; + }); + }; + var xz = { + Decompressor: Decompressor$1 + }; + + var ZD$1 = function () { + var _scriptDir = (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href); + return function (ZD) { + ZD = ZD || {}; + var a; + a || (a = typeof ZD !== 'undefined' ? ZD : {}); + var Promise = function () { + function c() {} + function f(b, e) { + return function () { + b.apply(e, arguments); + }; + } + function d(b) { + if (!(this instanceof d)) throw new TypeError("Promises must be constructed via new"); + if ("function" !== typeof b) throw new TypeError("not a function"); + this.s = 0; + this.B = !1; + this.u = void 0; + this.v = []; + C(b, this); + } + function n(b, e) { + for (; 3 === b.s;) b = b.u; + 0 === b.s ? b.v.push(e) : (b.B = !0, d.C(function () { + var g = 1 === b.s ? e.F : e.G; + if (null === g) (1 === b.s ? l : m)(e.promise, b.u);else { + try { + var h = g(b.u); + } catch (k) { + m(e.promise, k); + return; + } + l(e.promise, h); + } + })); + } + function l(b, e) { + try { + if (e === b) throw new TypeError("A promise cannot be resolved with itself."); + if (e && ("object" === _typeof(e) || "function" === typeof e)) { + var g = e.then; + if (e instanceof d) { + b.s = 3; + b.u = e; + q(b); + return; + } + if ("function" === typeof g) { + C(f(g, e), b); + return; + } + } + b.s = 1; + b.u = e; + q(b); + } catch (h) { + m(b, h); + } + } + function m(b, e) { + b.s = 2; + b.u = e; + q(b); + } + function q(b) { + 2 === b.s && 0 === b.v.length && d.C(function () { + b.B || d.D(b.u); + }); + for (var e = 0, g = b.v.length; e < g; e++) n(b, b.v[e]); + b.v = null; + } + function r(b, e, g) { + this.F = "function" === typeof b ? b : null; + this.G = "function" === typeof e ? e : null; + this.promise = g; + } + function C(b, e) { + var g = !1; + try { + b(function (h) { + g || (g = !0, l(e, h)); + }, function (h) { + g || (g = !0, m(e, h)); + }); + } catch (h) { + g || (g = !0, m(e, h)); + } + } + d.prototype["catch"] = function (b) { + return this.then(null, b); + }; + d.prototype.then = function (b, e) { + var g = new this.constructor(c); + n(this, new r(b, e, g)); + return g; + }; + d.all = function (b) { + return new d(function (e, g) { + function h(I, z) { + try { + if (z && ("object" === _typeof(z) || "function" === typeof z)) { + var T = z.then; + if ("function" === typeof T) { + T.call(z, function (M) { + h(I, M); + }, g); + return; + } + } + k[I] = z; + 0 === --u && e(k); + } catch (M) { + g(M); + } + } + if (!Array.isArray(b)) return g(new TypeError("Promise.all accepts an array")); + var k = Array.prototype.slice.call(b); + if (0 === k.length) return e([]); + for (var u = k.length, p = 0; p < k.length; p++) h(p, k[p]); + }); + }; + d.resolve = function (b) { + return b && "object" === _typeof(b) && b.constructor === d ? b : new d(function (e) { + e(b); + }); + }; + d.reject = function (b) { + return new d(function (e, g) { + g(b); + }); + }; + d.race = function (b) { + return new d(function (e, g) { + if (!Array.isArray(b)) return g(new TypeError("Promise.race accepts an array")); + for (var h = 0, k = b.length; h < k; h++) d.resolve(b[h]).then(e, g); + }); + }; + d.C = "function" === typeof setImmediate && function (b) { + setImmediate(b); + } || function (b) { + setTimeout(b, 0); + }; + d.D = function (b) { + "undefined" !== typeof console && console && console.warn("Possible Unhandled Promise Rejection:", b); + }; + return d; + }(), + t, + v; + a.ready = new Promise(function (c, f) { + t = c; + v = f; + }); + var w = {}, + x; + for (x in a) a.hasOwnProperty(x) && (w[x] = a[x]); + var y = ""; + "undefined" !== typeof document && document.currentScript && (y = document.currentScript.src); + _scriptDir && (y = _scriptDir); + 0 !== y.indexOf("blob:") ? y = y.substr(0, y.replace(/[?#].*/, "").lastIndexOf("/") + 1) : y = ""; + var A = a.printErr || console.warn.bind(console); + for (x in w) w.hasOwnProperty(x) && (a[x] = w[x]); + w = null; + var B; + a.wasmBinary && (B = a.wasmBinary); + a.noExitRuntime || !0; + function aa() { + this.buffer = new ArrayBuffer(D / 65536 * 65536); + } + function ba() { + this.exports = + // EMSCRIPTEN_START_ASM + function instantiate(W) { + function c(d) { + d.set = function (a, b) { + this[a] = b; + }; + d.get = function (a) { + return this[a]; + }; + return d; + } + var e; + var f = new Uint8Array(123); + for (var a = 25; a >= 0; --a) { + f[48 + a] = 52 + a; + f[65 + a] = a; + f[97 + a] = 26 + a; + } + f[43] = 62; + f[47] = 63; + function l(m, n, o) { + var g, + h, + a = 0, + i = n, + j = o.length, + k = n + (j * 3 >> 2) - (o[j - 2] == "=") - (o[j - 1] == "="); + for (; a < j; a += 4) { + g = f[o.charCodeAt(a + 1)]; + h = f[o.charCodeAt(a + 2)]; + m[i++] = f[o.charCodeAt(a)] << 2 | g >> 4; + if (i < k) m[i++] = g << 4 | h >> 2; + if (i < k) m[i++] = h << 6 | f[o.charCodeAt(a + 3)]; + } + } + function p(q) { + l(e, 1024, "QWxsb2NhdGlvbiBlcnJvciA6IG5vdCBlbm91Z2ggbWVtb3J5AENvbnRleHQgc2hvdWxkIGJlIGluaXQgZmlyc3QAU3JjIHNpemUgaXMgaW5jb3JyZWN0AENhbm5vdCBjcmVhdGUgRGljdGlvbmFyeSBmcm9tIHByb3ZpZGVkIHNhbXBsZXMAVW5rbm93biBmcmFtZSBkZXNjcmlwdG9yAFVuc3VwcG9ydGVkIGZyYW1lIHBhcmFtZXRlcgBVbnN1cHBvcnRlZCBwYXJhbWV0ZXIAT3BlcmF0aW9uIG9uIE5VTEwgZGVzdGluYXRpb24gYnVmZmVyAFJlc3RvcmVkIGRhdGEgZG9lc24ndCBtYXRjaCBjaGVja3N1bQBEZXN0aW5hdGlvbiBidWZmZXIgaXMgdG9vIHNtYWxsAFNwZWNpZmllZCBtYXhTeW1ib2xWYWx1ZSBpcyB0b28gc21hbGwAd29ya1NwYWNlIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoAERpY3Rpb25hcnkgbWlzbWF0Y2gARGVzdGluYXRpb24gYnVmZmVyIGlzIHdyb25nAEFuIEkvTyBlcnJvciBvY2N1cnJlZCB3aGVuIHJlYWRpbmcvc2Vla2luZwBGcmFtZSByZXF1aXJlcyB0b28gbXVjaCBtZW1vcnkgZm9yIGRlY29kaW5nAEZyYW1lIGluZGV4IGlzIHRvbyBsYXJnZQBVbnN1cHBvcnRlZCBtYXggU3ltYm9sIFZhbHVlIDogdG9vIGxhcmdlAE9wZXJhdGlvbiBub3QgYXV0aG9yaXplZCBhdCBjdXJyZW50IHByb2Nlc3Npbmcgc3RhZ2UAVW5zcGVjaWZpZWQgZXJyb3IgY29kZQBQYXJhbWV0ZXIgaXMgb3V0IG9mIGJvdW5kAHRhYmxlTG9nIHJlcXVpcmVzIHRvbyBtdWNoIG1lbW9yeSA6IHVuc3VwcG9ydGVkAFZlcnNpb24gbm90IHN1cHBvcnRlZABEaWN0aW9uYXJ5IGlzIGNvcnJ1cHRlZABObyBlcnJvciBkZXRlY3RlZABDb3JydXB0ZWQgYmxvY2sgZGV0ZWN0ZWQARXJyb3IgKGdlbmVyaWMp"); + l(e, 1880, "AQAAAAEAAAACAAAAAg=="); + l(e, 1904, "AQAAAAEAAAACAAAAAgAAACYAAACCAAAAIQUAAEoAAABnCAAAJgAAAMABAACAAAAASQUAAEoAAAC+CAAAKQAAACwCAACAAAAASQUAAEoAAAC+CAAALwAAAMoCAACAAAAAigUAAEoAAACECQAANQAAAHMDAACAAAAAnQUAAEoAAACgCQAAPQAAAIEDAACAAAAA6wUAAEsAAAA+CgAARAAAAJ4DAACAAAAATQYAAEsAAACqCgAASwAAALMDAACAAAAAwQYAAE0AAAAfDQAATQAAAFMEAACAAAAAIwgAAFEAAACmDwAAVAAAAJkEAACAAAAASwkAAFcAAACxEgAAWAAAANoEAACAAAAAbwkAAF0AAAAjFAAAVAAAAEUFAACAAAAAVAoAAGoAAACMFAAAagAAAK8FAACAAAAAdgkAAHwAAABOEAAAfAAAANICAACAAAAAYwcAAJEAAACQBwAAkgAAAAAAAAABAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8P/f//H/3//z/9//9/AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwAB"); + l(e, 2864, "AQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAABAAAAAUAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQ"); + l(e, 2964, "AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQ=="); + l(e, 3168, "AQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAABAAAABAAAAAgAAAAAAAAAAQABAQYAAAAAAAAEAAAAABAAAAQAAAAAIAAABQEAAAAAAAAFAwAAAAAAAAUEAAAAAAAABQYAAAAAAAAFBwAAAAAAAAUJAAAAAAAABQoAAAAAAAAFDAAAAAAAAAYOAAAAAAABBRAAAAAAAAEFFAAAAAAAAQUWAAAAAAACBRwAAAAAAAMFIAAAAAAABAUwAAAAIAAGBUAAAAAAAAcFgAAAAAAACAYAAQAAAAAKBgAEAAAAAAwGABAAACAAAAQAAAAAAAAABAEAAAAAAAAFAgAAACAAAAUEAAAAAAAABQUAAAAgAAAFBwAAAAAAAAUIAAAAIAAABQoAAAAAAAAFCwAAAAAAAAYNAAAAIAABBRAAAAAAAAEFEgAAACAAAQUWAAAAAAACBRgAAAAgAAMFIAAAAAAAAwUoAAAAAAAGBEAAAAAQAAYEQAAAACAABwWAAAAAAAAJBgACAAAAAAsGAAgAADAAAAQAAAAAEAAABAEAAAAgAAAFAgAAACAAAAUDAAAAIAAABQUAAAAgAAAFBgAAACAAAAUIAAAAIAAABQkAAAAgAAAFCwAAACAAAAUMAAAAAAAABg8AAAAgAAEFEgAAACAAAQUUAAAAIAACBRgAAAAgAAIFHAAAACAAAwUoAAAAIAAEBTAAAAAAABAGAAABAAAADwYAgAAAAAAOBgBAAAAAAA0GACA="); + l(e, 3792, "AQABAQUAAAAAAAAFAAAAAAAABgQ9AAAAAAAJBf0BAAAAAA8F/X8AAAAAFQX9/x8AAAADBQUAAAAAAAcEfQAAAAAADAX9DwAAAAASBf3/AwAAABcF/f9/AAAABQUdAAAAAAAIBP0AAAAAAA4F/T8AAAAAFAX9/w8AAAACBQEAAAAQAAcEfQAAAAAACwX9BwAAAAARBf3/AQAAABYF/f8/AAAABAUNAAAAEAAIBP0AAAAAAA0F/R8AAAAAEwX9/wcAAAABBQEAAAAQAAYEPQAAAAAACgX9AwAAAAAQBf3/AAAAABwF/f//DwAAGwX9//8HAAAaBf3//wMAABkF/f//AQAAGAX9//8="); + l(e, 4064, "AQABAQYAAAAAAAAGAwAAAAAAAAQEAAAAIAAABQUAAAAAAAAFBgAAAAAAAAUIAAAAAAAABQkAAAAAAAAFCwAAAAAAAAYNAAAAAAAABhAAAAAAAAAGEwAAAAAAAAYWAAAAAAAABhkAAAAAAAAGHAAAAAAAAAYfAAAAAAAABiIAAAAAAAEGJQAAAAAAAQYpAAAAAAACBi8AAAAAAAMGOwAAAAAABAZTAAAAAAAHBoMAAAAAAAkGAwIAABAAAAQEAAAAAAAABAUAAAAgAAAFBgAAAAAAAAUHAAAAIAAABQkAAAAAAAAFCgAAAAAAAAYMAAAAAAAABg8AAAAAAAAGEgAAAAAAAAYVAAAAAAAABhgAAAAAAAAGGwAAAAAAAAYeAAAAAAAABiEAAAAAAAEGIwAAAAAAAQYnAAAAAAACBisAAAAAAAMGMwAAAAAABAZDAAAAAAAFBmMAAAAAAAgGAwEAACAAAAQEAAAAMAAABAQAAAAQAAAEBQAAACAAAAUHAAAAIAAABQgAAAAgAAAFCgAAACAAAAULAAAAAAAABg4AAAAAAAAGEQAAAAAAAAYUAAAAAAAABhcAAAAAAAAGGgAAAAAAAAYdAAAAAAAABiAAAAAAABAGAwABAAAADwYDgAAAAAAOBgNAAAAAAA0GAyAAAAAADAYDEAAAAAALBgMIAAAAAAoGAwQ="); + l(e, 4596, "AQAAAAMAAAAHAAAADwAAAB8AAAA/AAAAfwAAAP8AAAD/AQAA/wMAAP8HAAD/DwAA/x8AAP8/AAD/fwAA//8AAP//AQD//wMA//8HAP//DwD//x8A//8/AP//fwD///8A////Af///wP///8H////D////x////8/////fwAAAAABAAAAAgAAAAQAAAAAAAAAAgAAAAQAAAAIAAAAAAAAAAEAAAACAAAAAQAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAHAAAACAAAAAkAAAAKAAAACw=="); + l(e, 4817, "F1A="); + } + function U(V) { + var r = V.a; + var s = r.buffer; + var t = new Int8Array(s); + var u = new Int16Array(s); + var v = new Int32Array(s); + var w = new Uint8Array(s); + var x = new Uint16Array(s); + var y = new Uint32Array(s); + var B = Math.imul; + var E = Math.clz32; + V.abort; + var O = V.b; + var P = V.c; + var Q = 5248768; + var R = 0; + // EMSCRIPTEN_START_FUNCS + function qa(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + u = 0, + z = 0, + A = 0, + C = 0, + D = 0, + F = 0, + G = 0, + H = 0, + I = 0, + J = 0, + K = 0, + L = 0, + M = 0, + N = 0, + O = 0, + P = 0, + R = 0, + S = 0, + T = 0, + U = 0, + V = 0; + k = Q - 192 | 0; + Q = k; + g = a + 28760 | 0; + f = v[g + 4 >> 2]; + g = v[g >> 2]; + h = !f & g >>> 0 > 33554432 | (f | 0) != 0; + p = -72; + a: { + if (e >>> 0 > 131071) { + break a; + } + F = -20; + b: { + c: { + if (e >>> 0 < 3) { + break c; + } + d: { + e: { + f: { + g: { + h: { + p = w[d | 0]; + A = p & 3; + switch (A - 1 | 0) { + case 0: + break f; + case 1: + break g; + case 2: + break h; + default: + break e; + } + } + if (v[a + 28808 >> 2]) { + break g; + } + p = -30; + break b; + } + if (e >>> 0 < 5) { + break c; + } + o = 3; + f = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + i: { + j: { + k: { + l: { + j = p >>> 2 & 3; + switch (j - 2 | 0) { + case 1: + break j; + case 0: + break k; + default: + break l; + } + } + g = f >>> 14 & 1023; + p = f >>> 4 & 1023; + f = !j; + break i; + } + g = f >>> 18 | 0; + o = 4; + p = f >>> 4 & 16383; + f = 0; + break i; + } + p = f >>> 4 & 262143; + if (p >>> 0 > 131072) { + break c; + } + g = w[d + 4 | 0] << 10 | f >>> 22; + o = 5; + f = 0; + } + C = g + o | 0; + if (C >>> 0 > e >>> 0) { + break c; + } + if (!v[a + 28956 >> 2] | p >>> 0 < 769) { + break d; + } + while (1) { + if (n >>> 0 >= 16324) { + break d; + } + n = n + 512 | 0; + continue; + } + } + g = 2; + m: { + n: { + switch ((p >>> 2 & 3) - 1 | 0) { + default: + g = 1; + f = p >>> 3 | 0; + break m; + case 0: + f = (w[d | 0] | w[d + 1 | 0] << 8) >>> 4 | 0; + break m; + case 2: + break n; + } + } + if (e >>> 0 < 4) { + break c; + } + f = w[d | 0] | w[d + 1 | 0] << 8 | w[d + 2 | 0] << 16; + if (f >>> 0 > 2097167) { + break c; + } + g = 3; + f = f >>> 4 | 0; + } + j = _(a + 29040 | 0, w[d + g | 0], f + 32 | 0); + v[a + 28928 >> 2] = f; + v[a + 28912 >> 2] = j; + F = g + 1 | 0; + break c; + } + g = 2; + j = e; + o: { + p: { + switch ((p >>> 2 & 3) - 1 | 0) { + default: + g = 1; + f = p >>> 3 | 0; + break o; + case 0: + f = (w[d | 0] | w[d + 1 | 0] << 8) >>> 4 | 0; + break o; + case 2: + break p; + } + } + g = 3; + f = (w[d | 0] | w[d + 1 | 0] << 8 | w[d + 2 | 0] << 16) >>> 4 | 0; + } + p = f + g | 0; + if (p + 32 >>> 0 > j >>> 0) { + if (e >>> 0 < p >>> 0) { + break c; + } + g = X(a + 29040 | 0, d + g | 0, f); + v[a + 28928 >> 2] = f; + v[a + 28912 >> 2] = g; + f = f + g | 0; + t[f + 24 | 0] = 0; + t[f + 25 | 0] = 0; + t[f + 26 | 0] = 0; + t[f + 27 | 0] = 0; + t[f + 28 | 0] = 0; + t[f + 29 | 0] = 0; + t[f + 30 | 0] = 0; + t[f + 31 | 0] = 0; + t[f + 16 | 0] = 0; + t[f + 17 | 0] = 0; + t[f + 18 | 0] = 0; + t[f + 19 | 0] = 0; + t[f + 20 | 0] = 0; + t[f + 21 | 0] = 0; + t[f + 22 | 0] = 0; + t[f + 23 | 0] = 0; + t[f + 8 | 0] = 0; + t[f + 9 | 0] = 0; + t[f + 10 | 0] = 0; + t[f + 11 | 0] = 0; + t[f + 12 | 0] = 0; + t[f + 13 | 0] = 0; + t[f + 14 | 0] = 0; + t[f + 15 | 0] = 0; + t[f | 0] = 0; + t[f + 1 | 0] = 0; + t[f + 2 | 0] = 0; + t[f + 3 | 0] = 0; + t[f + 4 | 0] = 0; + t[f + 5 | 0] = 0; + t[f + 6 | 0] = 0; + t[f + 7 | 0] = 0; + break b; + } + v[a + 28928 >> 2] = f; + v[a + 28912 >> 2] = d + g; + break b; + } + q: { + if ((A | 0) == 3) { + l = d + o | 0; + o = a + 29040 | 0; + j = v[a + 12 >> 2]; + if (f) { + r: { + if (w[j + 1 | 0]) { + f = -72; + s: { + if (!g) { + break s; + } + t: { + u: { + v: { + if (g >>> 0 >= 4) { + n = w[(g + l | 0) - 1 | 0]; + f = -1; + if (!n) { + break t; + } + if (g >>> 0 <= 4294967176) { + break v; + } + f = g; + break s; + } + r = w[l | 0]; + w: { + switch (g - 2 | 0) { + case 1: + r = w[l + 2 | 0] << 16 | r; + case 0: + r = (w[l + 1 | 0] << 8) + r | 0; + break; + default: + break w; + } + } + n = w[(g + l | 0) - 1 | 0]; + f = -20; + if (!n) { + break s; + } + g = (E(n) - (g << 3) | 0) + 9 | 0; + break u; + } + i = g - 4 | 0; + f = l + i | 0; + r = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + g = E(n) - 23 | 0; + } + s = j + 4 | 0; + u = p + o | 0; + D = 0 - x[j + 2 >> 1] & 31; + x: { + y: { + if (g >>> 0 <= 32) { + m = u - 3 | 0; + z: { + while (1) { + A: { + if ((i | 0) >= 4) { + r = g >>> 3 | 0; + j = 0; + g = g & 7; + break A; + } + if (!i) { + m = u - 2 | 0; + i = 0; + n = l; + break y; + } + f = g >>> 3 | 0; + j = l >>> 0 > (i + l | 0) - f >>> 0; + r = j ? i : f; + g = g - (r << 3) | 0; + } + i = i - r | 0; + n = l + i | 0; + r = w[n | 0] | w[n + 1 | 0] << 8 | (w[n + 2 | 0] << 16 | w[n + 3 | 0] << 24); + if (j | m >>> 0 <= o >>> 0) { + break z; + } + f = s + (r << g >>> D << 2) | 0; + j = x[f >> 1]; + t[o | 0] = j; + t[o + 1 | 0] = j >>> 8; + j = w[f + 3 | 0] + o | 0; + g = w[f + 2 | 0] + g | 0; + f = s + (r << g >>> D << 2) | 0; + o = x[f >> 1]; + t[j | 0] = o; + t[j + 1 | 0] = o >>> 8; + o = j + w[f + 3 | 0] | 0; + g = g + w[f + 2 | 0] | 0; + if (g >>> 0 < 33) { + continue; + } + break; + } + m = u - 2 | 0; + break x; + } + } + n = i + l | 0; + m = u - 2 | 0; + if (g >>> 0 > 32) { + break x; + } + } + while (1) { + B: { + if ((i | 0) >= 4) { + j = g & 7; + r = g >>> 3 | 0; + g = 0; + break B; + } + if (!i) { + break x; + } + f = g; + j = f >>> 3 | 0; + g = l >>> 0 > n - j >>> 0; + r = g ? i : j; + j = f - (r << 3) | 0; + } + i = i - r | 0; + n = l + i | 0; + r = w[n | 0] | w[n + 1 | 0] << 8 | (w[n + 2 | 0] << 16 | w[n + 3 | 0] << 24); + if (!(g ? 0 : m >>> 0 >= o >>> 0)) { + g = j; + break x; + } + f = s + (r << j >>> D << 2) | 0; + g = x[f >> 1]; + t[o | 0] = g; + t[o + 1 | 0] = g >>> 8; + o = w[f + 3 | 0] + o | 0; + g = w[f + 2 | 0] + j | 0; + if (g >>> 0 <= 32) { + continue; + } + break; + } + } + if (m >>> 0 >= o >>> 0) { + while (1) { + f = s + (r << g >>> D << 2) | 0; + j = x[f >> 1]; + t[o | 0] = j; + t[o + 1 | 0] = j >>> 8; + g = w[f + 2 | 0] + g | 0; + o = w[f + 3 | 0] + o | 0; + if (m >>> 0 >= o >>> 0) { + continue; + } + break; + } + } + C: { + if (o >>> 0 >= u >>> 0) { + break C; + } + j = r << g >>> D | 0; + f = s + (j << 2) | 0; + t[o | 0] = w[f | 0]; + if (w[f + 3 | 0] == 1) { + g = w[f + 2 | 0] + g | 0; + break C; + } + if (g >>> 0 > 31) { + break C; + } + f = w[(s + (j << 2) | 0) + 2 | 0] + g | 0; + g = f >>> 0 < 32 ? f : 32; + } + f = (l | 0) != (n | 0) ? -20 : (g | 0) != 32 ? -20 : p; + } + } + break r; + } + f = la(o, p, l, g, j); + } + break q; + } + D: { + if (w[j + 1 | 0]) { + f = ra(o, p, l, g, j); + break D; + } + f = ka(o, p, l, g, j); + } + break q; + } + j = a + 26680 | 0; + i = d + o | 0; + l = a + 29040 | 0; + n = a + 10280 | 0; + if (f) { + f = ma(n, i, g, j); + if (f >>> 0 > 4294967176) { + break q; + } + if (f >>> 0 < g >>> 0) { + f = la(l, p, f + i | 0, g - f | 0, n); + } else { + f = -72; + } + break q; + } + f = -70; + E: { + if (!p) { + break E; + } + f = -20; + if (!g) { + break E; + } + m = p >>> 8 | 0; + f = B(g >>> 0 < p >>> 0 ? (g << 4 >>> 0) / (p >>> 0) | 0 : 15, 24); + o = B(m, v[f + 1884 >> 2]) + v[f + 1880 >> 2] | 0; + F: { + if ((o >>> 3 | 0) + o >>> 0 < v[f + 1872 >> 2] + B(m, v[f + 1876 >> 2]) >>> 0) { + f = ia(n, i, g, j, 2048); + if (f >>> 0 > 4294967176) { + break E; + } + j = -72; + if (f >>> 0 >= g >>> 0) { + break F; + } + f = ra(l, p, f + i | 0, g - f | 0, n); + break E; + } + f = ma(n, i, g, j); + if (f >>> 0 > 4294967176) { + break E; + } + j = -72; + if (f >>> 0 >= g >>> 0) { + break F; + } + j = ka(l, p, f + i | 0, g - f | 0, n); + } + f = j; + } + } + if (f >>> 0 > 4294967176) { + break c; + } + v[a + 28928 >> 2] = p; + v[a + 28808 >> 2] = 1; + v[a + 28912 >> 2] = a + 29040; + if ((A | 0) == 2) { + v[a + 12 >> 2] = a + 10280; + } + g = a + p | 0; + f = g + 29064 | 0; + t[f | 0] = 0; + t[f + 1 | 0] = 0; + t[f + 2 | 0] = 0; + t[f + 3 | 0] = 0; + t[f + 4 | 0] = 0; + t[f + 5 | 0] = 0; + t[f + 6 | 0] = 0; + t[f + 7 | 0] = 0; + f = g + 29056 | 0; + t[f | 0] = 0; + t[f + 1 | 0] = 0; + t[f + 2 | 0] = 0; + t[f + 3 | 0] = 0; + t[f + 4 | 0] = 0; + t[f + 5 | 0] = 0; + t[f + 6 | 0] = 0; + t[f + 7 | 0] = 0; + f = g + 29048 | 0; + t[f | 0] = 0; + t[f + 1 | 0] = 0; + t[f + 2 | 0] = 0; + t[f + 3 | 0] = 0; + t[f + 4 | 0] = 0; + t[f + 5 | 0] = 0; + t[f + 6 | 0] = 0; + t[f + 7 | 0] = 0; + f = g + 29040 | 0; + t[f | 0] = 0; + t[f + 1 | 0] = 0; + t[f + 2 | 0] = 0; + t[f + 3 | 0] = 0; + t[f + 4 | 0] = 0; + t[f + 5 | 0] = 0; + t[f + 6 | 0] = 0; + t[f + 7 | 0] = 0; + p = C; + break b; + } + p = F; + } + if (p >>> 0 > 4294967176) { + break a; + } + n = v[a + 28956 >> 2]; + f = d; + d = p >>> 0 < 4294967177 ? p : 0; + l = f + d | 0; + f = l; + p = -72; + m = e - d | 0; + g = m; + G: { + H: { + if (!g) { + break H; + } + e = w[f | 0]; + if (!e) { + v[k + 36 >> 2] = 0; + d = (g | 0) == 1 ? 1 : -72; + break G; + } + j = e << 24 >> 24; + d = f + 1 | 0; + I: { + if ((j | 0) >= 0) { + break I; + } + if ((j | 0) == -1) { + if ((g | 0) < 3) { + break H; + } + e = (w[f + 1 | 0] | w[f + 2 | 0] << 8) + 32512 | 0; + d = f + 3 | 0; + break I; + } + if ((g | 0) < 2) { + break H; + } + e = (w[f + 1 | 0] | e << 8) - 32768 | 0; + d = f + 2 | 0; + } + v[k + 36 >> 2] = e; + j = d + 1 | 0; + g = f + g | 0; + if (j >>> 0 > g >>> 0) { + break H; + } + p = -20; + d = w[d | 0]; + i = ga(a + 16 | 0, a, d >>> 6 | 0, 35, 9, j, g - j | 0, 2960, 3104, 3264, v[a + 28812 >> 2], v[a + 28956 >> 2], e); + if (i >>> 0 > 4294967176) { + break H; + } + j = j + (i >>> 0 < 4294967177 ? i : 0) | 0; + i = ga(a + 4120 | 0, a + 8 | 0, d >>> 4 & 3, 31, 8, j, g - j | 0, 2256, 2384, 3792, v[a + 28812 >> 2], v[a + 28956 >> 2], e); + if (i >>> 0 > 4294967176) { + break H; + } + C = d >>> 2 & 3; + d = j + (i >>> 0 < 4294967177 ? i : 0) | 0; + e = ga(a + 6176 | 0, a + 4 | 0, C, 52, 9, d, g - d | 0, 2512, 2736, 4064, v[a + 28812 >> 2], v[a + 28956 >> 2], e); + if (e >>> 0 > 4294967176) { + break H; + } + p = (d + e | 0) - f | 0; + } + d = p; + } + if (d >>> 0 > 4294967176) { + p = d; + break a; + } + F = v[k + 36 >> 2]; + if (!b) { + p = -70; + if ((F | 0) > 0) { + break a; + } + } + g = m - d | 0; + q = d + l | 0; + J: { + K: { + L: { + if (n) { + v[a + 28956 >> 2] = 0; + break L; + } + d = a + 28760 | 0; + e = v[d >> 2]; + if (!v[d + 4 >> 2] & e >>> 0 < 16777217 | (F | 0) <= 4) { + break K; + } + d = v[a + 8 >> 2]; + f = d + 8 | 0; + d = v[d + 4 >> 2]; + p = 0; + e = 0; + while (1) { + p = (w[(f + (e << 3) | 0) + 2 | 0] > 22) + p | 0; + e = e + 1 | 0; + if (!(e >>> d | 0)) { + continue; + } + break; + } + v[a + 28956 >> 2] = 0; + if (p << 8 - d >>> 0 < 20) { + break J; + } + } + e = v[a + 28912 >> 2]; + v[k + 188 >> 2] = e; + H = b + c | 0; + K = v[a + 28928 >> 2] + e | 0; + M: { + if (!F) { + d = b; + break M; + } + I = v[a + 28740 >> 2]; + L = v[a + 28736 >> 2]; + C = v[a + 28732 >> 2]; + v[a + 28812 >> 2] = 1; + v[k + 92 >> 2] = v[a + 26676 >> 2]; + G = a + 26668 | 0; + c = G; + d = v[c + 4 >> 2]; + v[k + 84 >> 2] = v[c >> 2]; + v[k + 88 >> 2] = d; + v[k + 100 >> 2] = I; + v[k + 96 >> 2] = C; + N = b - C | 0; + v[k + 104 >> 2] = N; + p = -20; + if (!g) { + break a; + } + v[k + 52 >> 2] = q; + v[k + 56 >> 2] = q + 4; + N: { + if (g >>> 0 >= 4) { + d = g - 4 | 0; + c = q + d | 0; + v[k + 48 >> 2] = c; + l = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + v[k + 40 >> 2] = l; + if (l >>> 0 < 16777216 | g >>> 0 > 4294967176) { + break a; + } + e = E(l >>> 24 | 0) - 23 | 0; + break N; + } + v[k + 48 >> 2] = q; + l = w[q | 0]; + v[k + 40 >> 2] = l; + O: { + switch (g - 2 | 0) { + case 1: + l = w[q + 2 | 0] << 16 | l; + case 0: + l = (w[q + 1 | 0] << 8) + l | 0; + v[k + 40 >> 2] = l; + break; + default: + break O; + } + } + c = w[(g + q | 0) - 1 | 0]; + if (!c) { + break a; + } + e = (E(c) - (g << 3) | 0) + 9 | 0; + v[k + 44 >> 2] = e; + d = 0; + } + f = v[a >> 2]; + c = v[f + 4 >> 2]; + e = c + e | 0; + o = l >>> 0 - e & v[(c << 2) + 4592 >> 2]; + v[k + 60 >> 2] = o; + P: { + if (e >>> 0 > 32) { + break P; + } + Q: { + if ((d | 0) >= 4) { + d = d - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + d; + e = e & 7; + break Q; + } + if (!d) { + d = 0; + break P; + } + c = e >>> 3 | 0; + c = q >>> 0 > (d + q | 0) - c >>> 0 ? d : c; + d = d - c | 0; + v[k + 48 >> 2] = q + d; + e = e - (c << 3) | 0; + } + c = d + q | 0; + l = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + v[k + 40 >> 2] = l; + } + g = (F | 0) < 4; + R = f + 8 | 0; + v[k - -64 >> 2] = R; + f = v[a + 8 >> 2]; + c = v[f + 4 >> 2]; + e = c + e | 0; + z = l >>> 0 - e & v[(c << 2) + 4592 >> 2]; + v[k + 68 >> 2] = z; + R: { + if (e >>> 0 > 32) { + break R; + } + S: { + if ((d | 0) >= 4) { + d = d - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + d; + e = e & 7; + break S; + } + if (!d) { + d = 0; + break R; + } + c = e >>> 3 | 0; + c = q >>> 0 > (d + q | 0) - c >>> 0 ? d : c; + d = d - c | 0; + v[k + 48 >> 2] = q + d; + e = e - (c << 3) | 0; + } + c = d + q | 0; + l = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + v[k + 40 >> 2] = l; + } + O = g ? F : 4; + S = f + 8 | 0; + v[k + 72 >> 2] = S; + g = v[a + 4 >> 2]; + a = v[g + 4 >> 2]; + e = a + e | 0; + v[k + 44 >> 2] = e; + c = 0; + u = v[(a << 2) + 4592 >> 2] & l >>> 0 - e; + v[k + 76 >> 2] = u; + T: { + U: { + if (e >>> 0 >= 33) { + v[k + 80 >> 2] = g + 8; + n = h; + break U; + } + f = k; + V: { + W: { + if ((d | 0) >= 4) { + a = d - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + a; + e = e & 7; + break W; + } + if (!d) { + v[k + 80 >> 2] = g + 8; + a = 0; + n = h; + break V; + } + a = e >>> 3 | 0; + c = q >>> 0 > (d + q | 0) - a >>> 0 ? d : a; + a = d - c | 0; + v[k + 48 >> 2] = q + a; + e = e - (c << 3) | 0; + } + v[f + 44 >> 2] = e; + c = a + q | 0; + l = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + v[k + 80 >> 2] = g + 8; + v[k + 40 >> 2] = l; + c = 0; + n = h; + if (e >>> 0 > 32) { + break U; + } + } + D = (O | 0) > 0 ? O : 0; + V = g + 8 | 0; + g = a; + j = a; + h = a; + i = a; + d = a; + while (1) { + m = k; + X: { + Y: { + if ((d | 0) >= 4) { + f = e & 7; + v[k + 44 >> 2] = f; + a = d - (e >>> 3 | 0) | 0; + d = q + a | 0; + v[k + 48 >> 2] = d; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + break Y; + } + if (!d) { + f = e; + d = 0; + break X; + } + a = e >>> 3 | 0; + a = q >>> 0 > (d + q | 0) - a >>> 0 ? d : a; + f = e - (a << 3) | 0; + v[k + 44 >> 2] = f; + a = d - a | 0; + d = q + a | 0; + v[k + 48 >> 2] = d; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + } + v[m + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + if ((c | 0) == (D | 0)) { + e = f; + c = D; + break T; + } + e = (o << 3) + R | 0; + m = v[e + 4 >> 2]; + o = v[e >> 2]; + e = m; + T = (e & 65535) << 16 | o >>> 16; + J = T & 255; + m = (u << 3) + V | 0; + s = v[m + 4 >> 2]; + r = v[m >> 2]; + m = s; + U = (m & 65535) << 16 | r >>> 16; + P = U & 255; + s = (z << 3) + S | 0; + A = v[s + 4 >> 2]; + s = v[s >> 2]; + u = A; + M = u; + A = m; + z = e; + m = (u & 65535) << 16 | s >>> 16; + e = m & 255; + Z: { + if (e >>> 0 >= 2) { + _: { + if (e >>> 0 > 24 & n) { + u = e; + m = 32 - f | 0; + e = e >>> 0 < m >>> 0 ? e : m; + u = u - e | 0; + m = l << f >>> 0 - e << u; + f = e + f | 0; + $: { + if (f >>> 0 > 32) { + break $; + } + aa: { + if ((h | 0) >= 4) { + a = h - (f >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + a; + f = f & 7; + break aa; + } + if (!h) { + h = 0; + i = 0; + d = 0; + break $; + } + a = f >>> 3 | 0; + d = q >>> 0 > (h + q | 0) - a >>> 0 ? h : a; + a = h - d | 0; + v[k + 48 >> 2] = q + a; + f = f - (d << 3) | 0; + } + d = a + q | 0; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + v[k + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + m = m + M | 0; + if (!u) { + e = f; + break _; + } + e = f + u | 0; + v[k + 44 >> 2] = e; + m = (l << f >>> 0 - u | 0) + m | 0; + break _; + } + m = M + (l << f >>> 0 - m | 0) | 0; + f = e + f | 0; + if (f >>> 0 > 32) { + e = f; + break _; + } + d = k; + ba: { + if ((i | 0) >= 4) { + e = f & 7; + v[k + 44 >> 2] = e; + a = i - (f >>> 3 | 0) | 0; + f = q + a | 0; + v[k + 48 >> 2] = f; + l = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + break ba; + } + if (!i) { + i = 0; + e = f; + d = 0; + break _; + } + a = f >>> 3 | 0; + a = q >>> 0 > (i + q | 0) - a >>> 0 ? i : a; + e = f - (a << 3) | 0; + v[k + 44 >> 2] = e; + a = i - a | 0; + f = q + a | 0; + v[k + 48 >> 2] = f; + l = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + } + v[d + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + f = v[k + 88 >> 2]; + u = v[k + 84 >> 2]; + v[k + 84 >> 2] = m; + v[k + 88 >> 2] = u; + v[k + 92 >> 2] = f; + break Z; + } + if (!e) { + if (z) { + m = v[k + 84 >> 2]; + e = f; + break Z; + } + m = v[k + 88 >> 2]; + v[k + 88 >> 2] = v[k + 84 >> 2]; + v[k + 84 >> 2] = m; + e = f; + break Z; + } + e = f + 1 | 0; + v[k + 44 >> 2] = e; + f = M + (!z + (l << f >>> 31 | 0) | 0) | 0; + ca: { + da: { + if ((f | 0) == 3) { + f = v[k + 84 >> 2] - 1 | 0; + m = !f + f | 0; + break da; + } + m = v[((f << 2) + k | 0) + 84 >> 2]; + m = !m + m | 0; + if ((f | 0) == 1) { + break ca; + } + } + v[k + 92 >> 2] = v[k + 88 >> 2]; + } + v[k + 88 >> 2] = v[k + 84 >> 2]; + v[k + 84 >> 2] = m; + } + f = A; + if (P) { + f = (l << e >>> 0 - U | 0) + f | 0; + e = e + P | 0; + } + ea: { + if (J + P >>> 0 < 20 | e >>> 0 > 32) { + break ea; + } + d = k; + fa: { + if ((j | 0) >= 4) { + a = j - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + a; + e = e & 7; + break fa; + } + if (!j) { + j = 0; + h = 0; + i = 0; + d = 0; + break ea; + } + a = e >>> 3 | 0; + g = q >>> 0 > (j + q | 0) - a >>> 0 ? j : a; + a = j - g | 0; + v[k + 48 >> 2] = q + a; + e = e - (g << 3) | 0; + } + v[d + 44 >> 2] = e; + d = a + q | 0; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + v[k + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + u = r >>> 24 | 0; + A = o >>> 24 | 0; + if (J) { + z = (l << e >>> 0 - T | 0) + z | 0; + e = e + J | 0; + } + ga: { + if (e >>> 0 > 32) { + break ga; + } + ha: { + if ((g | 0) >= 4) { + a = g - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + a; + e = e & 7; + break ha; + } + if (!g) { + g = 0; + j = 0; + h = 0; + i = 0; + d = 0; + break ga; + } + a = e >>> 3 | 0; + d = q >>> 0 > (g + q | 0) - a >>> 0 ? g : a; + a = g - d | 0; + v[k + 48 >> 2] = q + a; + e = e - (d << 3) | 0; + } + d = a + q | 0; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + v[k + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + J = z + N | 0; + N = J + f | 0; + v[k + 104 >> 2] = N; + e = e + A | 0; + o = (v[(A << 2) + 4592 >> 2] & l >>> 0 - e) + (o & 65535) | 0; + v[k + 60 >> 2] = o; + e = e + u | 0; + u = (v[(u << 2) + 4592 >> 2] & l >>> 0 - e) + (r & 65535) | 0; + v[k + 76 >> 2] = u; + A = (J + (m >>> 0 > J >>> 0 ? I : C) | 0) - m | 0; + ia: { + if (e >>> 0 > 32) { + break ia; + } + ja: { + if ((a | 0) >= 4) { + a = a - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = q + a; + e = e & 7; + break ja; + } + if (!a) { + a = 0; + g = 0; + j = 0; + h = 0; + i = 0; + d = 0; + break ia; + } + d = e >>> 3 | 0; + d = q >>> 0 > (a + q | 0) - d >>> 0 ? a : d; + a = a - d | 0; + v[k + 48 >> 2] = q + a; + e = e - (d << 3) | 0; + } + d = a + q | 0; + l = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + v[k + 40 >> 2] = l; + g = a; + j = a; + h = a; + i = a; + d = a; + } + r = (k + 112 | 0) + (c << 4) | 0; + v[r + 12 >> 2] = A; + v[r + 8 >> 2] = m; + v[r + 4 >> 2] = f; + v[r >> 2] = z; + f = s >>> 24 | 0; + e = f + e | 0; + v[k + 44 >> 2] = e; + z = (v[(f << 2) + 4592 >> 2] & l >>> 0 - e) + (s & 65535) | 0; + v[k + 68 >> 2] = z; + c = c + 1 | 0; + if (e >>> 0 <= 32) { + continue; + } + break; + } + } + if ((c | 0) < (O | 0)) { + break a; + } + } + A = H - 32 | 0; + d = b; + ka: { + while (1) { + if (e >>> 0 >= 33) { + if ((c | 0) < (F | 0)) { + break a; + } + break ka; + } + a = v[k + 48 >> 2]; + r = v[k + 56 >> 2]; + la: { + if (a >>> 0 >= r >>> 0) { + f = e & 7; + v[k + 44 >> 2] = f; + a = a - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + break la; + } + f = v[k + 52 >> 2]; + if ((f | 0) == (a | 0)) { + f = e; + break la; + } + g = e >>> 3 | 0; + f = f >>> 0 > a - g >>> 0 ? a - f | 0 : g; + a = a - f | 0; + v[k + 48 >> 2] = a; + f = e - (f << 3) | 0; + v[k + 44 >> 2] = f; + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + } + if ((c | 0) >= (F | 0)) { + break ka; + } + e = v[k + 64 >> 2] + (v[k + 60 >> 2] << 3) | 0; + j = v[e + 4 >> 2]; + g = v[e >> 2]; + e = j; + q = (e & 65535) << 16 | g >>> 16; + s = q & 255; + j = v[k + 80 >> 2] + (v[k + 76 >> 2] << 3) | 0; + h = v[j + 4 >> 2]; + j = v[j >> 2]; + i = h; + J = (h & 65535) << 16 | j >>> 16; + u = J & 255; + h = v[k + 72 >> 2] + (v[k + 68 >> 2] << 3) | 0; + m = v[h + 4 >> 2]; + h = v[h >> 2]; + l = m; + D = l; + m = i; + z = e; + i = (l & 65535) << 16 | h >>> 16; + e = i & 255; + ma: { + if (e >>> 0 >= 2) { + na: { + if (e >>> 0 > 24 & n) { + l = e; + i = 32 - f | 0; + e = e >>> 0 < i >>> 0 ? e : i; + l = l - e | 0; + o = v[k + 40 >> 2]; + i = o << f >>> 0 - e << l; + f = e + f | 0; + oa: { + if (f >>> 0 > 32) { + break oa; + } + pa: { + if (a >>> 0 >= r >>> 0) { + a = a - (f >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + f = f & 7; + break pa; + } + e = v[k + 52 >> 2]; + if ((e | 0) == (a | 0)) { + break oa; + } + o = f >>> 3 | 0; + e = e >>> 0 > a - o >>> 0 ? a - e | 0 : o; + a = a - e | 0; + v[k + 48 >> 2] = a; + f = f - (e << 3) | 0; + } + o = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + v[k + 40 >> 2] = o; + } + i = i + D | 0; + if (!l) { + e = f; + break na; + } + e = f + l | 0; + v[k + 44 >> 2] = e; + i = (o << f >>> 0 - l | 0) + i | 0; + break na; + } + i = D + (v[k + 40 >> 2] << f >>> 0 - i | 0) | 0; + f = e + f | 0; + if (f >>> 0 > 32) { + e = f; + break na; + } + if (a >>> 0 >= r >>> 0) { + e = f & 7; + v[k + 44 >> 2] = e; + a = a - (f >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + break na; + } + e = v[k + 52 >> 2]; + if ((e | 0) == (a | 0)) { + e = f; + break na; + } + l = f >>> 3 | 0; + e = e >>> 0 > a - l >>> 0 ? a - e | 0 : l; + a = a - e | 0; + v[k + 48 >> 2] = a; + e = f - (e << 3) | 0; + v[k + 44 >> 2] = e; + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + } + f = v[k + 88 >> 2]; + l = v[k + 84 >> 2]; + v[k + 84 >> 2] = i; + v[k + 88 >> 2] = l; + v[k + 92 >> 2] = f; + break ma; + } + if (!e) { + if (z) { + i = v[k + 84 >> 2]; + e = f; + break ma; + } + i = v[k + 88 >> 2]; + v[k + 88 >> 2] = v[k + 84 >> 2]; + v[k + 84 >> 2] = i; + e = f; + break ma; + } + e = f + 1 | 0; + v[k + 44 >> 2] = e; + f = D + !z + (v[k + 40 >> 2] << f >>> 31) | 0; + qa: { + ra: { + if ((f | 0) == 3) { + f = v[k + 84 >> 2] - 1 | 0; + i = !f + f | 0; + break ra; + } + i = v[((f << 2) + k | 0) + 84 >> 2]; + i = !i + i | 0; + if ((f | 0) == 1) { + break qa; + } + } + v[k + 92 >> 2] = v[k + 88 >> 2]; + } + v[k + 88 >> 2] = v[k + 84 >> 2]; + v[k + 84 >> 2] = i; + } + f = m; + if (u) { + f = (v[k + 40 >> 2] << e >>> 0 - J | 0) + f | 0; + e = e + u | 0; + } + sa: { + if (s + u >>> 0 < 20 | e >>> 0 > 32) { + break sa; + } + l = k; + ta: { + if (a >>> 0 >= r >>> 0) { + a = a - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + e = e & 7; + break ta; + } + m = v[k + 52 >> 2]; + if ((m | 0) == (a | 0)) { + break sa; + } + o = e >>> 3 | 0; + m = m >>> 0 > a - o >>> 0 ? a - m | 0 : o; + a = a - m | 0; + v[k + 48 >> 2] = a; + e = e - (m << 3) | 0; + } + v[l + 44 >> 2] = e; + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + } + m = j >>> 24 | 0; + o = g >>> 24 | 0; + if (s) { + z = (v[k + 40 >> 2] << e >>> 0 - q | 0) + z | 0; + e = e + s | 0; + } + ua: { + if (e >>> 0 > 32) { + break ua; + } + va: { + if (a >>> 0 >= r >>> 0) { + a = a - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + e = e & 7; + break va; + } + l = v[k + 52 >> 2]; + if ((l | 0) == (a | 0)) { + break ua; + } + s = e >>> 3 | 0; + l = l >>> 0 > a - s >>> 0 ? a - l | 0 : s; + a = a - l | 0; + v[k + 48 >> 2] = a; + e = e - (l << 3) | 0; + } + v[k + 40 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + } + u = v[k + 104 >> 2] + z | 0; + v[k + 104 >> 2] = u + f; + l = v[k + 40 >> 2]; + e = e + o | 0; + v[k + 60 >> 2] = (v[(o << 2) + 4592 >> 2] & l >>> 0 - e) + (g & 65535); + e = e + m | 0; + v[k + 76 >> 2] = (v[(m << 2) + 4592 >> 2] & l >>> 0 - e) + (j & 65535); + D = v[(k + 40 | 0) + (i >>> 0 > u >>> 0 ? 60 : 56) >> 2]; + wa: { + if (e >>> 0 > 32) { + break wa; + } + xa: { + if (a >>> 0 >= r >>> 0) { + a = a - (e >>> 3 | 0) | 0; + v[k + 48 >> 2] = a; + e = e & 7; + break xa; + } + g = v[k + 52 >> 2]; + if ((g | 0) == (a | 0)) { + break wa; + } + j = e >>> 3 | 0; + g = g >>> 0 > a - j >>> 0 ? a - g | 0 : j; + a = a - g | 0; + v[k + 48 >> 2] = a; + e = e - (g << 3) | 0; + } + l = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + v[k + 40 >> 2] = l; + } + a = h >>> 24 | 0; + e = a + e | 0; + v[k + 44 >> 2] = e; + v[k + 68 >> 2] = (v[(a << 2) + 4592 >> 2] & l >>> 0 - e) + (h & 65535); + ya: { + za: { + h = v[k + 188 >> 2]; + l = (k + 112 | 0) + ((c & 3) << 4) | 0; + r = v[l >> 2]; + q = h + r | 0; + Aa: { + if (q >>> 0 > K >>> 0) { + break Aa; + } + g = v[l + 4 >> 2]; + j = r + g | 0; + if (A >>> 0 < j + d >>> 0) { + break Aa; + } + if (j + 32 >>> 0 <= H - d >>> 0) { + break za; + } + } + a = v[l + 12 >> 2]; + v[k + 24 >> 2] = v[l + 8 >> 2]; + v[k + 28 >> 2] = a; + a = v[l + 4 >> 2]; + v[k + 16 >> 2] = v[l >> 2]; + v[k + 20 >> 2] = a; + j = ha(d, H, k + 16 | 0, k + 188 | 0, K, C, L, I); + break ya; + } + a = d + r | 0; + m = v[l + 8 >> 2]; + e = h; + o = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + s = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[d | 0] = s; + t[d + 1 | 0] = s >>> 8; + t[d + 2 | 0] = s >>> 16; + t[d + 3 | 0] = s >>> 24; + t[d + 4 | 0] = o; + t[d + 5 | 0] = o >>> 8; + t[d + 6 | 0] = o >>> 16; + t[d + 7 | 0] = o >>> 24; + o = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + e = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[d + 8 | 0] = e; + t[d + 9 | 0] = e >>> 8; + t[d + 10 | 0] = e >>> 16; + t[d + 11 | 0] = e >>> 24; + t[d + 12 | 0] = o; + t[d + 13 | 0] = o >>> 8; + t[d + 14 | 0] = o >>> 16; + t[d + 15 | 0] = o >>> 24; + if (r >>> 0 >= 17) { + e = d + 16 | 0; + while (1) { + o = w[h + 20 | 0] | w[h + 21 | 0] << 8 | (w[h + 22 | 0] << 16 | w[h + 23 | 0] << 24); + r = w[h + 16 | 0] | w[h + 17 | 0] << 8 | (w[h + 18 | 0] << 16 | w[h + 19 | 0] << 24); + t[e | 0] = r; + t[e + 1 | 0] = r >>> 8; + t[e + 2 | 0] = r >>> 16; + t[e + 3 | 0] = r >>> 24; + t[e + 4 | 0] = o; + t[e + 5 | 0] = o >>> 8; + t[e + 6 | 0] = o >>> 16; + t[e + 7 | 0] = o >>> 24; + o = w[h + 28 | 0] | w[h + 29 | 0] << 8 | (w[h + 30 | 0] << 16 | w[h + 31 | 0] << 24); + r = w[h + 24 | 0] | w[h + 25 | 0] << 8 | (w[h + 26 | 0] << 16 | w[h + 27 | 0] << 24); + t[e + 8 | 0] = r; + t[e + 9 | 0] = r >>> 8; + t[e + 10 | 0] = r >>> 16; + t[e + 11 | 0] = r >>> 24; + t[e + 12 | 0] = o; + t[e + 13 | 0] = o >>> 8; + t[e + 14 | 0] = o >>> 16; + t[e + 15 | 0] = o >>> 24; + h = h + 16 | 0; + e = e + 16 | 0; + if (e >>> 0 < a >>> 0) { + continue; + } + break; + } + } + e = a - m | 0; + v[k + 188 >> 2] = q; + if (m >>> 0 > a - C >>> 0) { + if (m >>> 0 > a - L >>> 0) { + break a; + } + e = e - C | 0; + h = e + I | 0; + if (I >>> 0 >= h + g >>> 0) { + Z(a, h, g); + break ya; + } + g = e + g | 0; + a = Z(a, h, 0 - e | 0) - e | 0; + e = C; + } + if (m >>> 0 >= 16) { + m = a + g | 0; + while (1) { + g = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + h = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = h; + t[a + 1 | 0] = h >>> 8; + t[a + 2 | 0] = h >>> 16; + t[a + 3 | 0] = h >>> 24; + t[a + 4 | 0] = g; + t[a + 5 | 0] = g >>> 8; + t[a + 6 | 0] = g >>> 16; + t[a + 7 | 0] = g >>> 24; + g = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + h = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = h; + t[a + 9 | 0] = h >>> 8; + t[a + 10 | 0] = h >>> 16; + t[a + 11 | 0] = h >>> 24; + t[a + 12 | 0] = g; + t[a + 13 | 0] = g >>> 8; + t[a + 14 | 0] = g >>> 16; + t[a + 15 | 0] = g >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (m >>> 0 > a >>> 0) { + continue; + } + break; + } + break ya; + } + Ba: { + if (m >>> 0 <= 7) { + t[a | 0] = w[e | 0]; + t[a + 1 | 0] = w[e + 1 | 0]; + t[a + 2 | 0] = w[e + 2 | 0]; + t[a + 3 | 0] = w[e + 3 | 0]; + m = m << 2; + e = v[m + 4752 >> 2] + e | 0; + h = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a + 4 | 0] = h; + t[a + 5 | 0] = h >>> 8; + t[a + 6 | 0] = h >>> 16; + t[a + 7 | 0] = h >>> 24; + e = e - v[m + 4784 >> 2] | 0; + break Ba; + } + h = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + m = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = m; + t[a + 1 | 0] = m >>> 8; + t[a + 2 | 0] = m >>> 16; + t[a + 3 | 0] = m >>> 24; + t[a + 4 | 0] = h; + t[a + 5 | 0] = h >>> 8; + t[a + 6 | 0] = h >>> 16; + t[a + 7 | 0] = h >>> 24; + } + if (g >>> 0 < 9) { + break ya; + } + m = a + g | 0; + a = a + 8 | 0; + e = e + 8 | 0; + if ((a - e | 0) <= 15) { + while (1) { + g = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + h = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = h; + t[a + 1 | 0] = h >>> 8; + t[a + 2 | 0] = h >>> 16; + t[a + 3 | 0] = h >>> 24; + t[a + 4 | 0] = g; + t[a + 5 | 0] = g >>> 8; + t[a + 6 | 0] = g >>> 16; + t[a + 7 | 0] = g >>> 24; + e = e + 8 | 0; + a = a + 8 | 0; + if (m >>> 0 > a >>> 0) { + continue; + } + break ya; + } + } + while (1) { + g = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + h = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = h; + t[a + 1 | 0] = h >>> 8; + t[a + 2 | 0] = h >>> 16; + t[a + 3 | 0] = h >>> 24; + t[a + 4 | 0] = g; + t[a + 5 | 0] = g >>> 8; + t[a + 6 | 0] = g >>> 16; + t[a + 7 | 0] = g >>> 24; + g = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + h = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = h; + t[a + 9 | 0] = h >>> 8; + t[a + 10 | 0] = h >>> 16; + t[a + 11 | 0] = h >>> 24; + t[a + 12 | 0] = g; + t[a + 13 | 0] = g >>> 8; + t[a + 14 | 0] = g >>> 16; + t[a + 15 | 0] = g >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (m >>> 0 > a >>> 0) { + continue; + } + break; + } + } + if (j >>> 0 <= 4294967176) { + v[l >> 2] = z; + v[(l | 4) >> 2] = f; + v[(l | 8) >> 2] = i; + v[l + 12 >> 2] = (u + D | 0) - i; + c = c + 1 | 0; + d = d + j | 0; + e = v[k + 44 >> 2]; + continue; + } + break; + } + p = j; + break a; + } + i = c - O | 0; + if ((F | 0) > (i | 0)) { + n = H - 32 | 0; + while (1) { + Ca: { + Da: { + m = v[k + 188 >> 2]; + e = (k + 112 | 0) + ((i & 3) << 4) | 0; + j = v[e >> 2]; + l = m + j | 0; + Ea: { + if (l >>> 0 > K >>> 0) { + break Ea; + } + z = v[e + 4 >> 2]; + c = j + z | 0; + if (n >>> 0 < d + c >>> 0) { + break Ea; + } + if (c + 32 >>> 0 <= H - d >>> 0) { + break Da; + } + } + a = v[e + 12 >> 2]; + v[k + 8 >> 2] = v[e + 8 >> 2]; + v[k + 12 >> 2] = a; + a = v[e + 4 >> 2]; + v[k >> 2] = v[e >> 2]; + v[k + 4 >> 2] = a; + c = ha(d, H, k, k + 188 | 0, K, C, L, I); + break Ca; + } + a = d + j | 0; + f = v[e + 8 >> 2]; + e = m; + g = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + h = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[d | 0] = h; + t[d + 1 | 0] = h >>> 8; + t[d + 2 | 0] = h >>> 16; + t[d + 3 | 0] = h >>> 24; + t[d + 4 | 0] = g; + t[d + 5 | 0] = g >>> 8; + t[d + 6 | 0] = g >>> 16; + t[d + 7 | 0] = g >>> 24; + g = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + e = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[d + 8 | 0] = e; + t[d + 9 | 0] = e >>> 8; + t[d + 10 | 0] = e >>> 16; + t[d + 11 | 0] = e >>> 24; + t[d + 12 | 0] = g; + t[d + 13 | 0] = g >>> 8; + t[d + 14 | 0] = g >>> 16; + t[d + 15 | 0] = g >>> 24; + if (j >>> 0 >= 17) { + e = d + 16 | 0; + while (1) { + g = w[m + 20 | 0] | w[m + 21 | 0] << 8 | (w[m + 22 | 0] << 16 | w[m + 23 | 0] << 24); + j = w[m + 16 | 0] | w[m + 17 | 0] << 8 | (w[m + 18 | 0] << 16 | w[m + 19 | 0] << 24); + t[e | 0] = j; + t[e + 1 | 0] = j >>> 8; + t[e + 2 | 0] = j >>> 16; + t[e + 3 | 0] = j >>> 24; + t[e + 4 | 0] = g; + t[e + 5 | 0] = g >>> 8; + t[e + 6 | 0] = g >>> 16; + t[e + 7 | 0] = g >>> 24; + g = w[m + 28 | 0] | w[m + 29 | 0] << 8 | (w[m + 30 | 0] << 16 | w[m + 31 | 0] << 24); + j = w[m + 24 | 0] | w[m + 25 | 0] << 8 | (w[m + 26 | 0] << 16 | w[m + 27 | 0] << 24); + t[e + 8 | 0] = j; + t[e + 9 | 0] = j >>> 8; + t[e + 10 | 0] = j >>> 16; + t[e + 11 | 0] = j >>> 24; + t[e + 12 | 0] = g; + t[e + 13 | 0] = g >>> 8; + t[e + 14 | 0] = g >>> 16; + t[e + 15 | 0] = g >>> 24; + m = m + 16 | 0; + e = e + 16 | 0; + if (e >>> 0 < a >>> 0) { + continue; + } + break; + } + } + e = a - f | 0; + v[k + 188 >> 2] = l; + if (f >>> 0 > a - C >>> 0) { + if (f >>> 0 > a - L >>> 0) { + break a; + } + e = e - C | 0; + g = e + I | 0; + if (I >>> 0 >= g + z >>> 0) { + Z(a, g, z); + break Ca; + } + z = e + z | 0; + a = Z(a, g, 0 - e | 0) - e | 0; + e = C; + } + if (f >>> 0 >= 16) { + j = a + z | 0; + while (1) { + f = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = f; + t[a + 5 | 0] = f >>> 8; + t[a + 6 | 0] = f >>> 16; + t[a + 7 | 0] = f >>> 24; + f = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + g = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = g; + t[a + 9 | 0] = g >>> 8; + t[a + 10 | 0] = g >>> 16; + t[a + 11 | 0] = g >>> 24; + t[a + 12 | 0] = f; + t[a + 13 | 0] = f >>> 8; + t[a + 14 | 0] = f >>> 16; + t[a + 15 | 0] = f >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (j >>> 0 > a >>> 0) { + continue; + } + break; + } + break Ca; + } + Fa: { + if (f >>> 0 <= 7) { + t[a | 0] = w[e | 0]; + t[a + 1 | 0] = w[e + 1 | 0]; + t[a + 2 | 0] = w[e + 2 | 0]; + t[a + 3 | 0] = w[e + 3 | 0]; + g = f << 2; + e = v[g + 4752 >> 2] + e | 0; + f = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a + 4 | 0] = f; + t[a + 5 | 0] = f >>> 8; + t[a + 6 | 0] = f >>> 16; + t[a + 7 | 0] = f >>> 24; + e = e - v[g + 4784 >> 2] | 0; + break Fa; + } + f = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = f; + t[a + 5 | 0] = f >>> 8; + t[a + 6 | 0] = f >>> 16; + t[a + 7 | 0] = f >>> 24; + } + if (z >>> 0 < 9) { + break Ca; + } + j = a + z | 0; + a = a + 8 | 0; + e = e + 8 | 0; + if ((a - e | 0) <= 15) { + while (1) { + f = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = f; + t[a + 5 | 0] = f >>> 8; + t[a + 6 | 0] = f >>> 16; + t[a + 7 | 0] = f >>> 24; + e = e + 8 | 0; + a = a + 8 | 0; + if (j >>> 0 > a >>> 0) { + continue; + } + break Ca; + } + } + while (1) { + f = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = f; + t[a + 5 | 0] = f >>> 8; + t[a + 6 | 0] = f >>> 16; + t[a + 7 | 0] = f >>> 24; + f = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + g = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = g; + t[a + 9 | 0] = g >>> 8; + t[a + 10 | 0] = g >>> 16; + t[a + 11 | 0] = g >>> 24; + t[a + 12 | 0] = f; + t[a + 13 | 0] = f >>> 8; + t[a + 14 | 0] = f >>> 16; + t[a + 15 | 0] = f >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (j >>> 0 > a >>> 0) { + continue; + } + break; + } + } + if (c >>> 0 > 4294967176) { + p = c; + break a; + } + d = c + d | 0; + i = i + 1 | 0; + if ((F | 0) != (i | 0)) { + continue; + } + break; + } + } + c = v[k + 88 >> 2]; + a = G; + v[a >> 2] = v[k + 84 >> 2]; + v[a + 4 >> 2] = c; + v[a + 8 >> 2] = v[k + 92 >> 2]; + e = v[k + 188 >> 2]; + } + p = -70; + a = K - e | 0; + if (a >>> 0 > H - d >>> 0) { + break a; + } + if (d) { + a = X(d, e, a) + a | 0; + } else { + a = 0; + } + p = a - b | 0; + break a; + } + v[a + 28956 >> 2] = 0; + } + m = h; + n = 0; + h = Q - 112 | 0; + Q = h; + f = a; + e = v[a + 28912 >> 2]; + v[h + 92 >> 2] = e; + d = b; + r = d + c | 0; + u = v[a + 28928 >> 2] + e | 0; + Ga: { + Ha: { + if (!F) { + c = d; + break Ha; + } + D = v[f + 28740 >> 2]; + z = v[f + 28736 >> 2]; + l = v[f + 28732 >> 2]; + v[f + 28812 >> 2] = 1; + v[h + 76 >> 2] = v[f + 26676 >> 2]; + C = f + 26668 | 0; + a = C; + b = v[a + 4 >> 2]; + v[h + 68 >> 2] = v[a >> 2]; + v[h + 72 >> 2] = b; + if (!g) { + f = -20; + break Ga; + } + v[h + 36 >> 2] = q; + v[h + 40 >> 2] = q + 4; + Ia: { + Ja: { + if (g >>> 0 >= 4) { + n = g - 4 | 0; + a = q + n | 0; + v[h + 32 >> 2] = a; + j = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + v[h + 24 >> 2] = j; + if (j >>> 0 >= 16777216) { + break Ja; + } + f = -20; + break Ga; + } + v[h + 32 >> 2] = q; + j = w[q | 0]; + v[h + 24 >> 2] = j; + Ka: { + switch (g - 2 | 0) { + case 1: + j = w[q + 2 | 0] << 16 | j; + case 0: + j = (w[q + 1 | 0] << 8) + j | 0; + v[h + 24 >> 2] = j; + break; + default: + break Ka; + } + } + a = w[(g + q | 0) - 1 | 0]; + if (!a) { + f = -20; + break Ga; + } + g = (E(a) - (g << 3) | 0) + 9 | 0; + v[h + 28 >> 2] = g; + break Ia; + } + if (g >>> 0 > 4294967176) { + f = -20; + break Ga; + } + g = E(j >>> 24 | 0) - 23 | 0; + } + c = v[f >> 2]; + a = v[c + 4 >> 2]; + g = a + g | 0; + a = j >>> 0 - g & v[(a << 2) + 4592 >> 2]; + v[h + 44 >> 2] = a; + La: { + if (g >>> 0 > 32) { + break La; + } + Ma: { + if ((n | 0) >= 4) { + n = n - (g >>> 3 | 0) | 0; + v[h + 32 >> 2] = q + n; + g = g & 7; + break Ma; + } + if (!n) { + n = 0; + break La; + } + b = g >>> 3 | 0; + b = q >>> 0 > (n + q | 0) - b >>> 0 ? n : b; + n = n - b | 0; + v[h + 32 >> 2] = q + n; + g = g - (b << 3) | 0; + } + b = n + q | 0; + j = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + v[h + 24 >> 2] = j; + } + e = c + 8 | 0; + v[h + 48 >> 2] = e; + c = v[f + 8 >> 2]; + b = v[c + 4 >> 2]; + i = b + g | 0; + g = j >>> 0 - i & v[(b << 2) + 4592 >> 2]; + v[h + 52 >> 2] = g; + Na: { + if (i >>> 0 > 32) { + break Na; + } + Oa: { + if ((n | 0) >= 4) { + n = n - (i >>> 3 | 0) | 0; + v[h + 32 >> 2] = q + n; + i = i & 7; + break Oa; + } + if (!n) { + n = 0; + break Na; + } + b = i >>> 3 | 0; + b = q >>> 0 > (n + q | 0) - b >>> 0 ? n : b; + n = n - b | 0; + v[h + 32 >> 2] = q + n; + i = i - (b << 3) | 0; + } + b = n + q | 0; + j = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + v[h + 24 >> 2] = j; + } + o = c + 8 | 0; + v[h + 56 >> 2] = o; + p = v[f + 4 >> 2]; + c = v[p + 4 >> 2]; + b = c + i | 0; + v[h + 28 >> 2] = b; + i = v[(c << 2) + 4592 >> 2] & j >>> 0 - b; + v[h + 60 >> 2] = i; + Pa: { + if (b >>> 0 > 32) { + break Pa; + } + c = n + q | 0; + f = h; + Qa: { + if ((n | 0) >= 4) { + c = c - (b >>> 3 | 0) | 0; + v[h + 32 >> 2] = c; + b = b & 7; + break Qa; + } + if (!n) { + break Pa; + } + j = b >>> 3 | 0; + j = q >>> 0 > c - j >>> 0 ? n : j; + c = c - j | 0; + v[h + 32 >> 2] = c; + b = b - (j << 3) | 0; + } + v[f + 28 >> 2] = b; + v[h + 24 >> 2] = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + } + n = p + 8 | 0; + v[h - -64 >> 2] = n; + I = r - 32 | 0; + c = d; + f = 0; + while (1) { + a = (a << 3) + e | 0; + e = v[a + 4 >> 2]; + j = v[a >> 2]; + a = e; + H = (a & 65535) << 16 | j >>> 16; + A = H & 255; + e = (i << 3) + n | 0; + i = v[e + 4 >> 2]; + p = v[e >> 2]; + e = i; + K = (e & 65535) << 16 | p >>> 16; + G = K & 255; + g = (g << 3) + o | 0; + i = v[g + 4 >> 2]; + n = v[g >> 2]; + q = i; + o = e; + e = a; + g = (i & 65535) << 16 | n >>> 16; + a = g & 255; + Ra: { + if (a >>> 0 >= 2) { + Sa: { + if (!(!m | a >>> 0 < 25)) { + i = a; + g = 32 - b | 0; + a = a >>> 0 < g >>> 0 ? a : g; + s = i - a | 0; + i = v[h + 24 >> 2]; + L = i << b >>> 0 - a << s; + a = a + b | 0; + Ta: { + if (a >>> 0 > 32) { + break Ta; + } + b = v[h + 32 >> 2]; + Ua: { + if (b >>> 0 >= y[h + 40 >> 2]) { + b = b - (a >>> 3 | 0) | 0; + v[h + 32 >> 2] = b; + a = a & 7; + break Ua; + } + g = v[h + 36 >> 2]; + if ((g | 0) == (b | 0)) { + break Ta; + } + i = a >>> 3 | 0; + g = g >>> 0 > b - i >>> 0 ? b - g | 0 : i; + b = b - g | 0; + v[h + 32 >> 2] = b; + a = a - (g << 3) | 0; + } + i = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + v[h + 24 >> 2] = i; + } + g = q + L | 0; + if (!s) { + break Sa; + } + g = (i << a >>> 0 - s | 0) + g | 0; + a = a + s | 0; + break Sa; + } + g = q + (v[h + 24 >> 2] << b >>> 0 - g | 0) | 0; + b = a + b | 0; + if (b >>> 0 > 32) { + a = b; + break Sa; + } + i = v[h + 32 >> 2]; + if (i >>> 0 >= y[h + 40 >> 2]) { + a = b & 7; + v[h + 28 >> 2] = a; + b = i - (b >>> 3 | 0) | 0; + v[h + 32 >> 2] = b; + v[h + 24 >> 2] = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + break Sa; + } + a = v[h + 36 >> 2]; + if ((a | 0) == (i | 0)) { + a = b; + break Sa; + } + M = b; + b = b >>> 3 | 0; + b = a >>> 0 > i - b >>> 0 ? i - a | 0 : b; + a = M - (b << 3) | 0; + v[h + 28 >> 2] = a; + b = i - b | 0; + v[h + 32 >> 2] = b; + v[h + 24 >> 2] = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + } + b = v[h + 72 >> 2]; + i = v[h + 68 >> 2]; + v[h + 68 >> 2] = g; + v[h + 72 >> 2] = i; + v[h + 76 >> 2] = b; + break Ra; + } + if (!a) { + if (e) { + g = v[h + 68 >> 2]; + a = b; + break Ra; + } + g = v[h + 72 >> 2]; + v[h + 72 >> 2] = v[h + 68 >> 2]; + v[h + 68 >> 2] = g; + a = b; + break Ra; + } + a = b + 1 | 0; + v[h + 28 >> 2] = a; + b = q + !e + (v[h + 24 >> 2] << b >>> 31) | 0; + Va: { + Wa: { + if ((b | 0) == 3) { + b = v[h + 68 >> 2] - 1 | 0; + g = !b + b | 0; + break Wa; + } + g = v[(h + (b << 2) | 0) + 68 >> 2]; + g = !g + g | 0; + if ((b | 0) == 1) { + break Va; + } + } + v[h + 76 >> 2] = v[h + 72 >> 2]; + } + v[h + 72 >> 2] = v[h + 68 >> 2]; + v[h + 68 >> 2] = g; + } + b = o; + if (G) { + b = (v[h + 24 >> 2] << a >>> 0 - K | 0) + b | 0; + a = a + G | 0; + } + Xa: { + if (A + G >>> 0 < 20 | a >>> 0 > 32) { + break Xa; + } + o = h; + i = v[h + 32 >> 2]; + Ya: { + if (i >>> 0 >= y[h + 40 >> 2]) { + i = i - (a >>> 3 | 0) | 0; + v[h + 32 >> 2] = i; + a = a & 7; + break Ya; + } + s = v[h + 36 >> 2]; + if ((s | 0) == (i | 0)) { + break Xa; + } + G = a >>> 3 | 0; + s = s >>> 0 > i - G >>> 0 ? i - s | 0 : G; + i = i - s | 0; + v[h + 32 >> 2] = i; + a = a - (s << 3) | 0; + } + v[o + 28 >> 2] = a; + v[h + 24 >> 2] = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + } + o = p >>> 24 | 0; + i = j; + s = i >>> 24 | 0; + if (A) { + e = (v[h + 24 >> 2] << a >>> 0 - H | 0) + e | 0; + a = a + A | 0; + } + Za: { + if (a >>> 0 > 32) { + break Za; + } + j = v[h + 32 >> 2]; + _a: { + if (j >>> 0 >= y[h + 40 >> 2]) { + j = j - (a >>> 3 | 0) | 0; + v[h + 32 >> 2] = j; + a = a & 7; + break _a; + } + A = v[h + 36 >> 2]; + if ((A | 0) == (j | 0)) { + break Za; + } + G = a >>> 3 | 0; + A = A >>> 0 > j - G >>> 0 ? j - A | 0 : G; + j = j - A | 0; + v[h + 32 >> 2] = j; + a = a - (A << 3) | 0; + } + v[h + 24 >> 2] = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + } + j = v[h + 24 >> 2]; + a = a + s | 0; + v[h + 44 >> 2] = (v[(s << 2) + 4592 >> 2] & j >>> 0 - a) + (i & 65535); + a = a + o | 0; + v[h + 60 >> 2] = (v[(o << 2) + 4592 >> 2] & j >>> 0 - a) + (p & 65535); + $a: { + if (a >>> 0 > 32) { + break $a; + } + i = v[h + 32 >> 2]; + ab: { + if (i >>> 0 >= y[h + 40 >> 2]) { + j = i - (a >>> 3 | 0) | 0; + v[h + 32 >> 2] = j; + a = a & 7; + break ab; + } + p = v[h + 36 >> 2]; + if ((p | 0) == (i | 0)) { + break $a; + } + A = i; + j = a >>> 3 | 0; + i = p >>> 0 > i - j >>> 0 ? i - p | 0 : j; + j = A - i | 0; + v[h + 32 >> 2] = j; + a = a - (i << 3) | 0; + } + j = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + v[h + 24 >> 2] = j; + } + i = a; + a = n >>> 24 | 0; + i = i + a | 0; + v[h + 28 >> 2] = i; + v[h + 52 >> 2] = (v[(a << 2) + 4592 >> 2] & j >>> 0 - i) + (n & 65535); + v[h + 96 >> 2] = e; + v[h + 100 >> 2] = b; + v[h + 104 >> 2] = g; + bb: { + cb: { + i = v[h + 92 >> 2]; + o = i + e | 0; + db: { + if (o >>> 0 > u >>> 0) { + break db; + } + j = b + e | 0; + if (I >>> 0 < j + c >>> 0) { + break db; + } + if (j + 32 >>> 0 <= r - c >>> 0) { + break cb; + } + } + a = v[h + 108 >> 2]; + v[h + 16 >> 2] = v[h + 104 >> 2]; + v[h + 20 >> 2] = a; + a = v[h + 100 >> 2]; + v[h + 8 >> 2] = v[h + 96 >> 2]; + v[h + 12 >> 2] = a; + j = ha(c, r, h + 8 | 0, h + 92 | 0, u, l, z, D); + break bb; + } + a = c + e | 0; + p = w[i + 4 | 0] | w[i + 5 | 0] << 8 | (w[i + 6 | 0] << 16 | w[i + 7 | 0] << 24); + n = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + t[c | 0] = n; + t[c + 1 | 0] = n >>> 8; + t[c + 2 | 0] = n >>> 16; + t[c + 3 | 0] = n >>> 24; + t[c + 4 | 0] = p; + t[c + 5 | 0] = p >>> 8; + t[c + 6 | 0] = p >>> 16; + t[c + 7 | 0] = p >>> 24; + p = w[i + 12 | 0] | w[i + 13 | 0] << 8 | (w[i + 14 | 0] << 16 | w[i + 15 | 0] << 24); + n = w[i + 8 | 0] | w[i + 9 | 0] << 8 | (w[i + 10 | 0] << 16 | w[i + 11 | 0] << 24); + t[c + 8 | 0] = n; + t[c + 9 | 0] = n >>> 8; + t[c + 10 | 0] = n >>> 16; + t[c + 11 | 0] = n >>> 24; + t[c + 12 | 0] = p; + t[c + 13 | 0] = p >>> 8; + t[c + 14 | 0] = p >>> 16; + t[c + 15 | 0] = p >>> 24; + if (e >>> 0 >= 17) { + e = c + 16 | 0; + while (1) { + p = w[i + 20 | 0] | w[i + 21 | 0] << 8 | (w[i + 22 | 0] << 16 | w[i + 23 | 0] << 24); + n = w[i + 16 | 0] | w[i + 17 | 0] << 8 | (w[i + 18 | 0] << 16 | w[i + 19 | 0] << 24); + t[e | 0] = n; + t[e + 1 | 0] = n >>> 8; + t[e + 2 | 0] = n >>> 16; + t[e + 3 | 0] = n >>> 24; + t[e + 4 | 0] = p; + t[e + 5 | 0] = p >>> 8; + t[e + 6 | 0] = p >>> 16; + t[e + 7 | 0] = p >>> 24; + p = w[i + 28 | 0] | w[i + 29 | 0] << 8 | (w[i + 30 | 0] << 16 | w[i + 31 | 0] << 24); + n = w[i + 24 | 0] | w[i + 25 | 0] << 8 | (w[i + 26 | 0] << 16 | w[i + 27 | 0] << 24); + t[e + 8 | 0] = n; + t[e + 9 | 0] = n >>> 8; + t[e + 10 | 0] = n >>> 16; + t[e + 11 | 0] = n >>> 24; + t[e + 12 | 0] = p; + t[e + 13 | 0] = p >>> 8; + t[e + 14 | 0] = p >>> 16; + t[e + 15 | 0] = p >>> 24; + i = i + 16 | 0; + e = e + 16 | 0; + if (e >>> 0 < a >>> 0) { + continue; + } + break; + } + } + e = a - g | 0; + v[h + 92 >> 2] = o; + if (a - l >>> 0 < g >>> 0) { + if (a - z >>> 0 < g >>> 0) { + j = -20; + break bb; + } + e = e - l | 0; + i = e + D | 0; + if (D >>> 0 >= i + b >>> 0) { + Z(a, i, b); + break bb; + } + a = Z(a, i, 0 - e | 0); + b = b + e | 0; + v[h + 100 >> 2] = b; + a = a - e | 0; + e = l; + } + if (g >>> 0 >= 16) { + i = a + b | 0; + while (1) { + b = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = b; + t[a + 5 | 0] = b >>> 8; + t[a + 6 | 0] = b >>> 16; + t[a + 7 | 0] = b >>> 24; + b = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + g = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = g; + t[a + 9 | 0] = g >>> 8; + t[a + 10 | 0] = g >>> 16; + t[a + 11 | 0] = g >>> 24; + t[a + 12 | 0] = b; + t[a + 13 | 0] = b >>> 8; + t[a + 14 | 0] = b >>> 16; + t[a + 15 | 0] = b >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (i >>> 0 > a >>> 0) { + continue; + } + break; + } + break bb; + } + eb: { + if (g >>> 0 <= 7) { + t[a | 0] = w[e | 0]; + t[a + 1 | 0] = w[e + 1 | 0]; + t[a + 2 | 0] = w[e + 2 | 0]; + t[a + 3 | 0] = w[e + 3 | 0]; + i = g << 2; + e = v[i + 4752 >> 2] + e | 0; + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a + 4 | 0] = g; + t[a + 5 | 0] = g >>> 8; + t[a + 6 | 0] = g >>> 16; + t[a + 7 | 0] = g >>> 24; + e = e - v[i + 4784 >> 2] | 0; + break eb; + } + g = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + i = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = i; + t[a + 1 | 0] = i >>> 8; + t[a + 2 | 0] = i >>> 16; + t[a + 3 | 0] = i >>> 24; + t[a + 4 | 0] = g; + t[a + 5 | 0] = g >>> 8; + t[a + 6 | 0] = g >>> 16; + t[a + 7 | 0] = g >>> 24; + } + if (b >>> 0 < 9) { + break bb; + } + i = a + b | 0; + a = a + 8 | 0; + e = e + 8 | 0; + if ((a - e | 0) <= 15) { + while (1) { + b = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = b; + t[a + 5 | 0] = b >>> 8; + t[a + 6 | 0] = b >>> 16; + t[a + 7 | 0] = b >>> 24; + e = e + 8 | 0; + a = a + 8 | 0; + if (i >>> 0 > a >>> 0) { + continue; + } + break bb; + } + } + while (1) { + b = w[e + 4 | 0] | w[e + 5 | 0] << 8 | (w[e + 6 | 0] << 16 | w[e + 7 | 0] << 24); + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + t[a | 0] = g; + t[a + 1 | 0] = g >>> 8; + t[a + 2 | 0] = g >>> 16; + t[a + 3 | 0] = g >>> 24; + t[a + 4 | 0] = b; + t[a + 5 | 0] = b >>> 8; + t[a + 6 | 0] = b >>> 16; + t[a + 7 | 0] = b >>> 24; + b = w[e + 12 | 0] | w[e + 13 | 0] << 8 | (w[e + 14 | 0] << 16 | w[e + 15 | 0] << 24); + g = w[e + 8 | 0] | w[e + 9 | 0] << 8 | (w[e + 10 | 0] << 16 | w[e + 11 | 0] << 24); + t[a + 8 | 0] = g; + t[a + 9 | 0] = g >>> 8; + t[a + 10 | 0] = g >>> 16; + t[a + 11 | 0] = g >>> 24; + t[a + 12 | 0] = b; + t[a + 13 | 0] = b >>> 8; + t[a + 14 | 0] = b >>> 16; + t[a + 15 | 0] = b >>> 24; + e = e + 16 | 0; + a = a + 16 | 0; + if (i >>> 0 > a >>> 0) { + continue; + } + break; + } + } + a = v[h + 28 >> 2]; + fb: { + if (a >>> 0 > 32) { + b = a; + break fb; + } + e = v[h + 32 >> 2]; + if (e >>> 0 >= y[h + 40 >> 2]) { + b = a & 7; + v[h + 28 >> 2] = b; + a = e - (a >>> 3 | 0) | 0; + v[h + 32 >> 2] = a; + v[h + 24 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + break fb; + } + b = v[h + 36 >> 2]; + if ((b | 0) == (e | 0)) { + b = a; + break fb; + } + i = a; + a = a >>> 3 | 0; + a = b >>> 0 > e - a >>> 0 ? e - b | 0 : a; + b = i - (a << 3) | 0; + v[h + 28 >> 2] = b; + a = e - a | 0; + v[h + 32 >> 2] = a; + v[h + 24 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + } + a = j >>> 0 < 4294967177; + f = a ? f : j; + c = (a ? j : 0) + c | 0; + F = F - 1 | 0; + if (F) { + g = v[h + 52 >> 2]; + o = v[h + 56 >> 2]; + i = v[h + 60 >> 2]; + n = v[h + 64 >> 2]; + a = v[h + 44 >> 2]; + e = v[h + 48 >> 2]; + continue; + } + break; + } + if (f >>> 0 > 4294967176) { + break Ga; + } + if (b >>> 0 <= 32) { + a = v[h + 32 >> 2]; + if (a >>> 0 >= y[h + 40 >> 2]) { + f = -20; + break Ga; + } + if ((a | 0) != v[h + 36 >> 2]) { + f = -20; + break Ga; + } + f = -20; + if ((b | 0) != 32) { + break Ga; + } + } + b = v[h + 72 >> 2]; + a = C; + v[a >> 2] = v[h + 68 >> 2]; + v[a + 4 >> 2] = b; + v[a + 8 >> 2] = v[h + 76 >> 2]; + e = v[h + 92 >> 2]; + } + f = -70; + a = u - e | 0; + if (a >>> 0 > r - c >>> 0) { + break Ga; + } + if (c) { + a = X(c, e, a) + a | 0; + } else { + a = 0; + } + f = a - d | 0; + } + Q = h + 112 | 0; + p = f; + } + Q = k + 192 | 0; + return p; + } + function Aa(a, b, c) { + a = a | 0; + b = b | 0; + c = c | 0; + var d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + t = 0, + u = 0, + x = 0, + z = 0, + A = 0, + C = 0, + D = 0, + E = 0, + F = 0, + G = 0, + H = 0, + I = 0, + J = 0, + K = 0, + L = 0, + M = 0, + N = 0, + O = 0, + P = 0, + R = 0, + T = 0, + U = 0, + V = 0, + W = 0, + Z = 0; + u = Q - 16 | 0; + Q = u; + i = v[c + 8 >> 2]; + k = v[c + 4 >> 2]; + a: { + if (i >>> 0 > k >>> 0) { + e = -72; + break a; + } + g = v[b + 8 >> 2]; + f = v[b + 4 >> 2]; + if (g >>> 0 > f >>> 0) { + e = -70; + break a; + } + d = v[b >> 2]; + p = v[c >> 2]; + if (!(!v[a + 28964 >> 2] | v[a + 29024 >> 2] != 1)) { + e = -104; + if ((d | 0) != v[a + 29028 >> 2] | (g | 0) != v[a + 29036 >> 2] | (f | 0) != v[a + 29032 >> 2]) { + break a; + } + } + H = d + f | 0; + m = a + 4120 | 0; + L = a + 6176 | 0; + M = a + 16 | 0; + q = a + 26668 | 0; + N = a + 10280 | 0; + r = a + 28728 | 0; + F = k + p | 0; + p = i + p | 0; + o = F - p | 0; + k = a + 160144 | 0; + i = a + 28752 | 0; + I = a + 29028 | 0; + x = a + 28804 | 0; + t = a + 28972 | 0; + C = a + 28988 | 0; + J = a + 160164 | 0; + j = a + 28856 | 0; + K = j; + f = p; + O = d + g | 0; + s = O; + b: { + while (1) { + c: { + e = -1; + d = i; + g = k; + d: { + e: { + f: { + g: { + h: { + switch (v[a + 28964 >> 2]) { + case 3: + d = v[x >> 2]; + e = v[a + 28744 >> 2]; + break e; + case 1: + e = v[a + 29e3 >> 2]; + break g; + case 2: + break f; + case 0: + break h; + case 4: + break d; + default: + break a; + } + } + v[a + 28964 >> 2] = 1; + v[a + 28992 >> 2] = 0; + v[a + 28996 >> 2] = 0; + v[a + 29012 >> 2] = 0; + v[a + 29016 >> 2] = 0; + v[a + 29e3 >> 2] = 0; + v[a + 28976 >> 2] = 0; + e = v[b + 4 >> 2]; + v[I >> 2] = v[b >> 2]; + v[I + 4 >> 2] = e; + v[I + 8 >> 2] = v[b + 8 >> 2]; + e = 0; + } + e = aa(d, g, e, v[a + 28908 >> 2]); + if (e >>> 0 > 4294967176) { + break a; + } + if (e) { + d = v[a + 29e3 >> 2]; + h = e - d | 0; + g = F - f | 0; + if (h >>> 0 > g >>> 0) { + if (g) { + X((a + d | 0) + 160144 | 0, f, g); + d = g + v[a + 29e3 >> 2] | 0; + v[a + 29e3 >> 2] = d; + } + v[c + 8 >> 2] = v[c + 4 >> 2]; + a = v[a + 28908 >> 2] ? 2 : 6; + e = ((a >>> 0 > e >>> 0 ? a : e) - d | 0) + 3 | 0; + break a; + } + X((a + d | 0) + 160144 | 0, f, h); + v[a + 29e3 >> 2] = e; + f = f + h | 0; + continue; + } + i: { + d = v[i >> 2]; + e = v[i + 4 >> 2]; + if ((d | 0) == -1 & (e | 0) == -1 | v[a + 28772 >> 2] == 1) { + break i; + } + G = H - s | 0; + if (!e & G >>> 0 < d >>> 0 | e) { + break i; + } + n = 0; + l = Q - 48 | 0; + Q = l; + j: { + if (!(((w[p | 0] | w[p + 1 | 0] << 8 | (w[p + 2 | 0] << 16 | w[p + 3 | 0] << 24)) & -16) != 407710288 | o >>> 0 < 8)) { + e = w[p + 4 | 0] | w[p + 5 | 0] << 8 | (w[p + 6 | 0] << 16 | w[p + 7 | 0] << 24); + v[u + 8 >> 2] = 0; + v[u + 12 >> 2] = 0; + v[u + 4 >> 2] = 0; + d = e + 8 | 0; + v[u >> 2] = e >>> 0 > 4294967287 ? -14 : d >>> 0 > o >>> 0 ? -72 : d; + break j; + } + h = u; + e = aa(l + 8 | 0, p, o, 0); + k: { + if (e >>> 0 >= 4294967177) { + v[u >> 2] = e; + e = -2; + d = -1; + break k; + } + if (e) { + v[u >> 2] = -72; + e = -2; + d = -1; + break k; + } + e = v[l + 32 >> 2]; + d = o - e | 0; + e = e + p | 0; + l: { + while (1) { + if (d >>> 0 < 3) { + D = -72; + break l; + } + D = -20; + m: { + n: { + E = w[e | 0] | w[e + 1 | 0] << 8; + g = E >>> 1 & 3; + switch (g - 1 | 0) { + case 2: + break l; + case 0: + break m; + default: + break n; + } + } + g = (E | w[e + 2 | 0] << 16) >>> 3 | 0; + } + g = g + 3 | 0; + if (g >>> 0 > d >>> 0) { + v[u >> 2] = -72; + e = -2; + d = -1; + break k; + } + n = n + 1 | 0; + d = d - g | 0; + e = e + g | 0; + if (!(E & 1)) { + continue; + } + break; + } + if (v[l + 40 >> 2]) { + if (d >>> 0 <= 3) { + v[u >> 2] = -72; + e = -2; + d = -1; + break k; + } + e = e + 4 | 0; + } + D = v[l + 24 >> 2]; + d = v[l + 8 >> 2]; + g = v[l + 12 >> 2]; + v[u + 4 >> 2] = 0; + v[u >> 2] = e - p; + e = d; + d = (d | 0) == -1 & (g | 0) == -1; + e = d ? B(n, D) : e; + d = d ? 0 : g; + break k; + } + v[u >> 2] = D; + e = -2; + d = -1; + } + v[h + 8 >> 2] = e; + v[h + 12 >> 2] = d; + } + Q = l + 48 | 0; + n = v[u >> 2]; + if (n >>> 0 > o >>> 0) { + break i; + } + g = s; + k = p; + h = n; + o = 0; + x = 0; + D = 0; + o: { + p: { + switch (v[a + 28960 >> 2] + 1 | 0) { + default: + e = v[a + 28944 >> 2]; + q: { + if (!e) { + break q; + } + d = v[e + 26692 >> 2]; + f = v[e + 26688 >> 2]; + r: { + s: { + i = v[e >> 2]; + if (i) { + if (!f) { + break s; + } + S[f | 0](d, i); + S[f | 0](d, e); + break q; + } + if (!f) { + break r; + } + S[f | 0](d, e); + break q; + } + Y(i); + } + Y(e); + } + v[a + 28960 >> 2] = 0; + v[a + 28944 >> 2] = 0; + v[a + 28948 >> 2] = 0; + r = 0; + break o; + case 2: + v[a + 28960 >> 2] = 0; + break; + case 0: + break p; + } + } + r = v[a + 28948 >> 2]; + } + if (r) { + x = v[r + 8 >> 2]; + o = v[r + 4 >> 2]; + } + f = v[a + 28908 >> 2] ? 1 : 5; + t: { + u: { + if (h >>> 0 < f >>> 0) { + e = g; + break u; + } + K = a + 28816 | 0; + L = a + 28752 | 0; + M = r + 10276 | 0; + N = r + 4116 | 0; + P = r + 6172 | 0; + R = r + 12 | 0; + T = a + 4120 | 0; + U = a + 6176 | 0; + V = a + 16 | 0; + J = a + 26668 | 0; + W = a + 10280 | 0; + C = a + 28728 | 0; + l = a + 28856 | 0; + E = l; + e = g; + while (1) { + if (((w[k | 0] | w[k + 1 | 0] << 8 | (w[k + 2 | 0] << 16 | w[k + 3 | 0] << 24)) & -16) == 407710288) { + d = -72; + if (h >>> 0 < 8) { + break t; + } + d = -14; + i = w[k + 4 | 0] | w[k + 5 | 0] << 8 | (w[k + 6 | 0] << 16 | w[k + 7 | 0] << 24); + if (i >>> 0 > 4294967287) { + break t; + } + d = i + 8 | 0; + d = d >>> 0 > h >>> 0 ? -72 : d; + if (d >>> 0 > 4294967176) { + break t; + } + k = d + k | 0; + h = h - d | 0; + if (h >>> 0 >= f >>> 0) { + continue; + } + break u; + } + v: { + if (r) { + d = v[r + 8 >> 2]; + i = v[r + 4 >> 2]; + v[a + 28804 >> 2] = 0; + v[a + 28744 >> 2] = f; + v[a + 28792 >> 2] = 0; + v[a + 28796 >> 2] = 0; + v[a + 28956 >> 2] = v[a + 28740 >> 2] != (d + i | 0); + f = C; + v[f + 8 >> 2] = 0; + v[f + 12 >> 2] = 0; + v[f >> 2] = 0; + v[f + 4 >> 2] = 0; + v[a + 10280 >> 2] = 201326604; + v[a + 28808 >> 2] = 0; + v[a + 28812 >> 2] = 0; + v[a + 28800 >> 2] = 3; + v[J + 8 >> 2] = v[814]; + f = v[813]; + v[J >> 2] = v[812]; + v[J + 4 >> 2] = f; + v[a + 12 >> 2] = W; + v[a + 8 >> 2] = T; + v[a + 4 >> 2] = U; + v[a >> 2] = V; + v[a + 28952 >> 2] = v[r + 26676 >> 2]; + f = v[r + 4 >> 2]; + v[a + 28736 >> 2] = f; + v[a + 28732 >> 2] = f; + d = f + v[r + 8 >> 2] | 0; + v[a + 28728 >> 2] = d; + v[a + 28740 >> 2] = d; + if (v[r + 26680 >> 2]) { + v[a + 28808 >> 2] = 1; + v[a + 28812 >> 2] = 1; + v[a + 12 >> 2] = M; + v[a + 8 >> 2] = N; + v[a + 4 >> 2] = P; + v[a >> 2] = R; + v[a + 26668 >> 2] = v[r + 26664 >> 2]; + v[a + 26672 >> 2] = v[r + 26668 >> 2]; + v[a + 26676 >> 2] = v[r + 26672 >> 2]; + break v; + } + v[a + 28808 >> 2] = 0; + v[a + 28812 >> 2] = 0; + break v; + } + d = 0; + v[a + 28792 >> 2] = 0; + v[a + 28796 >> 2] = 0; + v[a + 28728 >> 2] = 0; + v[a + 28732 >> 2] = 0; + v[a + 28952 >> 2] = 0; + v[a + 28808 >> 2] = 0; + v[a + 28812 >> 2] = 0; + v[a + 28800 >> 2] = 3; + v[a + 28804 >> 2] = 0; + f = a + 28736 | 0; + v[f >> 2] = 0; + v[f + 4 >> 2] = 0; + f = a + 10280 | 0; + v[f >> 2] = 201326604; + v[a + 28744 >> 2] = v[a + 28908 >> 2] ? 1 : 5; + v[a + 12 >> 2] = f; + v[a + 8 >> 2] = a + 4120; + v[a + 4 >> 2] = a + 6176; + v[a >> 2] = a + 16; + i = v[813]; + f = a + 26668 | 0; + v[f >> 2] = v[812]; + v[f + 4 >> 2] = i; + v[a + 26676 >> 2] = v[814]; + w: { + if (!o | !x) { + break w; + } + Z = a + 28728 | 0; + x: { + if (!((w[o | 0] | w[o + 1 | 0] << 8 | (w[o + 2 | 0] << 16 | w[o + 3 | 0] << 24)) != -332356553 | x >>> 0 <= 7)) { + v[a + 28952 >> 2] = w[o + 4 | 0] | w[o + 5 | 0] << 8 | (w[o + 6 | 0] << 16 | w[o + 7 | 0] << 24); + d = -30; + t = a + 16 | 0; + i = Q - 128 | 0; + Q = i; + f = -30; + y: { + if (x >>> 0 < 9) { + break y; + } + q = o + 8 | 0; + j = ia(t + 10264 | 0, q, x - 8 | 0, t, 10264); + if (j >>> 0 > 4294967176) { + break y; + } + v[i + 124 >> 2] = 31; + j = q + (j >>> 0 < 4294967177 ? j : 0) | 0; + q = o + x | 0; + m = $(i, i + 124 | 0, i + 120 | 0, j, q - j | 0); + if (m >>> 0 > 4294967176) { + break y; + } + A = v[i + 124 >> 2]; + if (A >>> 0 > 31) { + break y; + } + z = v[i + 120 >> 2]; + if (z >>> 0 >= 9) { + break y; + } + ba(t + 4104 | 0, i, A, 2256, 2384, z); + v[i + 124 >> 2] = 52; + j = j + m | 0; + m = $(i, i + 124 | 0, i + 120 | 0, j, q - j | 0); + if (m >>> 0 > 4294967176) { + break y; + } + A = v[i + 124 >> 2]; + if (A >>> 0 > 52) { + break y; + } + z = v[i + 120 >> 2]; + if (z >>> 0 >= 10) { + break y; + } + ba(t + 6160 | 0, i, A, 2512, 2736, z); + v[i + 124 >> 2] = 35; + j = j + m | 0; + m = $(i, i + 124 | 0, i + 120 | 0, j, q - j | 0); + if (m >>> 0 > 4294967176) { + break y; + } + A = v[i + 124 >> 2]; + if (A >>> 0 > 35) { + break y; + } + z = v[i + 120 >> 2]; + if (z >>> 0 >= 10) { + break y; + } + ba(t, i, A, 2960, 3104, z); + j = j + m | 0; + A = j + 12 | 0; + if (A >>> 0 > q >>> 0) { + break y; + } + m = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + if (!m) { + break y; + } + q = q - A | 0; + if (q >>> 0 < m >>> 0) { + break y; + } + v[t + 26652 >> 2] = m; + m = w[j + 4 | 0] | w[j + 5 | 0] << 8 | (w[j + 6 | 0] << 16 | w[j + 7 | 0] << 24); + if (!m | m >>> 0 > q >>> 0) { + break y; + } + v[t + 26656 >> 2] = m; + j = j + 4 | 0; + m = w[j + 4 | 0] | w[j + 5 | 0] << 8 | (w[j + 6 | 0] << 16 | w[j + 7 | 0] << 24); + if (!m | m >>> 0 > q >>> 0) { + break y; + } + v[t + 26660 >> 2] = m; + f = (j - o | 0) + 8 | 0; + } + Q = i + 128 | 0; + if (f >>> 0 > 4294967176) { + break w; + } + v[a + 28808 >> 2] = 1; + v[a + 28812 >> 2] = 1; + i = v[a + 28728 >> 2]; + v[a + 28740 >> 2] = i; + j = v[a + 28732 >> 2]; + d = (f >>> 0 < 4294967177 ? f : 0) + o | 0; + v[a + 28732 >> 2] = d; + v[a + 28736 >> 2] = d + (j - i | 0); + d = d + (x - f | 0) | 0; + break x; + } + v[a + 28736 >> 2] = o; + v[a + 28740 >> 2] = 0; + v[a + 28732 >> 2] = o; + d = o + x | 0; + } + v[Z >> 2] = d; + d = 0; + } + if (d >>> 0 > 4294967176) { + break t; + } + d = v[C >> 2]; + } + if ((e | 0) != (d | 0)) { + v[a + 28740 >> 2] = d; + v[a + 28728 >> 2] = e; + f = v[a + 28732 >> 2]; + v[a + 28732 >> 2] = e; + v[a + 28736 >> 2] = (f - d | 0) + e; + } + z: { + d = v[a + 28908 >> 2]; + A: { + if ((d ? 5 : 9) >>> 0 > h >>> 0) { + f = -72; + break A; + } + j = d ? 1 : 5; + f = w[(j + k | 0) - 1 | 0]; + i = f & 32; + f = (!i + (v[(f >>> 4 & 12) + 4736 >> 2] + (j + v[((f & 3) << 2) + 4720 >> 2] | 0) | 0) | 0) + (i >>> 5 & f >>> 0 < 64) | 0; + if (f >>> 0 > 4294967176) { + break A; + } + if (f + 3 >>> 0 > h >>> 0) { + f = -72; + break A; + } + d = aa(L, k, f, d); + if (d >>> 0 > 4294967176) { + f = d; + break A; + } + if (d) { + f = -72; + break A; + } + d = v[a + 28780 >> 2]; + if (!(!d | (d | 0) == v[a + 28952 >> 2])) { + f = -32; + break A; + } + if (v[a + 28784 >> 2]) { + v[a + 28848 >> 2] = 2048144761; + v[a + 28852 >> 2] = 1640531534; + v[a + 28840 >> 2] = 0; + v[a + 28844 >> 2] = 0; + v[a + 28832 >> 2] = 668265295; + v[a + 28836 >> 2] = -1028477379; + v[a + 28824 >> 2] = -1379879466; + v[a + 28828 >> 2] = 1625958382; + v[a + 28816 >> 2] = 0; + v[a + 28820 >> 2] = 0; + v[l + 32 >> 2] = 0; + v[l + 36 >> 2] = 0; + v[E + 24 >> 2] = 0; + v[E + 28 >> 2] = 0; + d = l; + v[d + 16 >> 2] = 0; + v[d + 20 >> 2] = 0; + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + v[d >> 2] = 0; + v[d + 4 >> 2] = 0; + } + t = e + G | 0; + h = h - f | 0; + k = f + k | 0; + j = e; + while (1) { + if (h >>> 0 < 3) { + f = -72; + break A; + } + q = w[k | 0] | w[k + 1 | 0] << 8; + m = q | w[k + 2 | 0] << 16; + i = m >>> 3 | 0; + f = -20; + B: { + C: { + z = q >>> 1 & 3; + d = z; + switch (d - 1 | 0) { + case 2: + break A; + case 0: + break B; + default: + break C; + } + } + d = i; + } + h = h - 3 | 0; + if (h >>> 0 < d >>> 0) { + f = -72; + break A; + } + k = k + 3 | 0; + D: { + E: { + switch (z - 1 | 0) { + default: + if (!j) { + f = 0; + if (!d) { + break D; + } + f = -74; + break A; + } + if (t - j >>> 0 < d >>> 0) { + f = -70; + break A; + } + X(j, k, d); + f = d; + break D; + case 0: + if (!j) { + f = 0; + if (m >>> 0 < 8) { + break D; + } + f = -74; + break A; + } + if (i >>> 0 > t - j >>> 0) { + f = -70; + break A; + } + _(j, w[k | 0], i); + f = i; + break D; + case 1: + break E; + } + } + f = qa(a, j, t - j | 0, k, d); + if (f >>> 0 > 4294967176) { + break A; + } + } + if (v[a + 28784 >> 2]) { + pa(K, j, f); + } + h = h - d | 0; + k = d + k | 0; + j = f + j | 0; + if (!(q & 1)) { + continue; + } + break; + } + f = v[a + 28756 >> 2]; + d = f; + i = v[a + 28752 >> 2]; + if ((i | 0) != -1 | (d | 0) != -1) { + f = -20; + z = i; + i = j - e | 0; + if ((z | 0) != (i | 0) | i >> 31 != (d | 0)) { + break A; + } + } + if (v[a + 28784 >> 2]) { + f = -22; + d = oa(K); + if ((d | 0) != (w[k | 0] | w[k + 1 | 0] << 8 | (w[k + 2 | 0] << 16 | w[k + 3 | 0] << 24)) | h >>> 0 < 4) { + break A; + } + h = h - 4 | 0; + k = k + 4 | 0; + } + f = j - e | 0; + if (f >>> 0 < 4294967177) { + break z; + } + } + d = (f | 0) == -10 ? D ? -72 : f : f; + break t; + } + D = 1; + G = G - f | 0; + e = e + f | 0; + f = v[a + 28908 >> 2] ? 1 : 5; + if (h >>> 0 >= f >>> 0) { + continue; + } + break; + } + } + d = -72; + if (h) { + break t; + } + d = e - g | 0; + } + e = d; + if (d >>> 0 > 4294967176) { + break a; + } + v[a + 28744 >> 2] = 0; + s = e + s | 0; + f = p + n | 0; + break c; + } + F: { + if (v[a + 28772 >> 2] == 1 | v[a + 29024 >> 2] != 1) { + break F; + } + e = v[i >> 2]; + d = v[i + 4 >> 2]; + if ((e | 0) == -1 & (d | 0) == -1 | !d & H - s >>> 0 >= e >>> 0) { + break F; + } + e = -70; + break a; + } + G: { + H: { + switch (v[a + 28960 >> 2] + 1 | 0) { + default: + e = v[a + 28944 >> 2]; + I: { + if (!e) { + break I; + } + g = v[e + 26692 >> 2]; + d = v[e + 26688 >> 2]; + J: { + K: { + h = v[e >> 2]; + if (h) { + if (!d) { + break K; + } + S[d | 0](g, h); + S[d | 0](g, e); + break I; + } + if (!d) { + break J; + } + S[d | 0](g, e); + break I; + } + Y(h); + } + Y(e); + } + e = 0; + v[a + 28960 >> 2] = 0; + v[a + 28944 >> 2] = 0; + v[a + 28948 >> 2] = 0; + g = 1; + break G; + case 2: + v[a + 28960 >> 2] = 0; + break; + case 0: + break H; + } + } + e = v[a + 28948 >> 2]; + if (!e) { + e = 0; + g = 1; + break G; + } + v[a + 28956 >> 2] = v[a + 28740 >> 2] != (v[e + 4 >> 2] + v[e + 8 >> 2] | 0); + g = 0; + } + v[a + 28792 >> 2] = 0; + v[a + 28796 >> 2] = 0; + v[x >> 2] = 0; + h = v[a + 28908 >> 2]; + v[a + 28744 >> 2] = h ? 1 : 5; + d = r; + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + v[d >> 2] = 0; + v[d + 4 >> 2] = 0; + v[a + 10280 >> 2] = 201326604; + v[a + 28952 >> 2] = 0; + v[a + 28808 >> 2] = 0; + v[a + 28812 >> 2] = 0; + v[a + 28800 >> 2] = 3; + v[q + 8 >> 2] = v[814]; + d = v[813]; + v[q >> 2] = v[812]; + v[q + 4 >> 2] = d; + v[a + 12 >> 2] = N; + v[a + 8 >> 2] = m; + v[a + 4 >> 2] = L; + v[a >> 2] = M; + L: { + if (g) { + break L; + } + v[a + 28952 >> 2] = v[e + 26676 >> 2]; + d = v[e + 4 >> 2]; + v[a + 28736 >> 2] = d; + v[a + 28732 >> 2] = d; + d = d + v[e + 8 >> 2] | 0; + v[a + 28728 >> 2] = d; + v[a + 28740 >> 2] = d; + if (v[e + 26680 >> 2]) { + v[a + 28808 >> 2] = 1; + v[a + 28812 >> 2] = 1; + v[a + 12 >> 2] = e + 10276; + v[a + 8 >> 2] = e + 4116; + v[a + 4 >> 2] = e + 6172; + v[a >> 2] = e + 12; + v[a + 26668 >> 2] = v[e + 26664 >> 2]; + v[a + 26672 >> 2] = v[e + 26668 >> 2]; + v[a + 26676 >> 2] = v[e + 26672 >> 2]; + break L; + } + v[a + 28808 >> 2] = 0; + v[a + 28812 >> 2] = 0; + } + M: { + if (((w[k | 0] | w[k + 1 | 0] << 8 | (w[k + 2 | 0] << 16 | w[k + 3 | 0] << 24)) & -16) == 407710288) { + e = w[a + 160148 | 0] | w[a + 160149 | 0] << 8 | (w[a + 160150 | 0] << 16 | w[a + 160151 | 0] << 24); + g = 7; + break M; + } + e = aa(i, k, v[a + 29e3 >> 2], h); + if (e >>> 0 > 4294967176) { + break a; + } + if (e) { + e = -72; + break a; + } + e = v[a + 28780 >> 2]; + if (!(!e | (e | 0) == v[a + 28952 >> 2])) { + e = -32; + break a; + } + g = 2; + e = 3; + if (!v[a + 28784 >> 2]) { + break M; + } + v[a + 28848 >> 2] = 2048144761; + v[a + 28852 >> 2] = 1640531534; + v[a + 28840 >> 2] = 0; + v[a + 28844 >> 2] = 0; + v[a + 28832 >> 2] = 668265295; + v[a + 28836 >> 2] = -1028477379; + v[a + 28824 >> 2] = -1379879466; + v[a + 28828 >> 2] = 1625958382; + v[a + 28816 >> 2] = 0; + v[a + 28820 >> 2] = 0; + v[K + 32 >> 2] = 0; + v[K + 36 >> 2] = 0; + d = j; + v[d + 24 >> 2] = 0; + v[d + 28 >> 2] = 0; + v[d + 16 >> 2] = 0; + v[d + 20 >> 2] = 0; + v[d + 8 >> 2] = 0; + v[d + 12 >> 2] = 0; + v[d >> 2] = 0; + v[d + 4 >> 2] = 0; + } + v[a + 28744 >> 2] = e; + v[x >> 2] = g; + e = v[a + 28760 >> 2]; + d = v[a + 28764 >> 2]; + g = !d & e >>> 0 > 1024 | (d | 0) != 0; + e = g ? e : 1024; + d = g ? d : 0; + h = d; + v[a + 28760 >> 2] = e; + v[a + 28764 >> 2] = d; + if (!d & e >>> 0 > y[a + 28980 >> 2] | d) { + e = -16; + break a; + } + d = v[a + 28768 >> 2]; + l = d >>> 0 > 4 ? d : 4; + d = 0; + g = 0; + if (!v[a + 29024 >> 2]) { + g = v[i + 4 >> 2]; + D = g; + G = v[i >> 2]; + n = e; + e = !h & e >>> 0 < 131072; + E = e ? n : 131072; + n = n + E | 0; + e = (e ? h : 0) + h | 0; + e = n >>> 0 < E >>> 0 ? e + 1 | 0 : e; + h = n; + n = h - -64 | 0; + e = e - ((h >>> 0 < 4294967232) - 1 | 0) | 0; + g = (g | 0) == (e | 0) & n >>> 0 > G >>> 0 | e >>> 0 > g >>> 0; + g = (g ? D : e) ? -16 : g ? G : n; + } + e = v[C >> 2]; + n = v[t >> 2]; + h = g + l | 0; + d = e + n >>> 0 >= B(h, 3) >>> 0 ? v[J >> 2] + 1 | 0 : d; + v[J >> 2] = d; + if (!(!(e >>> 0 < g >>> 0 | l >>> 0 > n >>> 0) & d >>> 0 < 128)) { + N: { + O: { + e = v[a + 28936 >> 2]; + if (e) { + if (h >>> 0 <= e - 160168 >>> 0) { + break O; + } + e = -64; + break a; + } + e = v[a + 28968 >> 2]; + P: { + if (!e) { + break P; + } + d = w[a + 28920 | 0] | w[a + 28921 | 0] << 8 | (w[a + 28922 | 0] << 16 | w[a + 28923 | 0] << 24); + if (d) { + S[d | 0](w[a + 28924 | 0] | w[a + 28925 | 0] << 8 | (w[a + 28926 | 0] << 16 | w[a + 28927 | 0] << 24), e); + break P; + } + Y(e); + } + v[C >> 2] = 0; + v[t >> 2] = 0; + e = a; + d = w[a + 28916 | 0] | w[a + 28917 | 0] << 8 | (w[a + 28918 | 0] << 16 | w[a + 28919 | 0] << 24); + Q: { + if (d) { + d = S[d | 0](w[a + 28924 | 0] | w[a + 28925 | 0] << 8 | (w[a + 28926 | 0] << 16 | w[a + 28927 | 0] << 24), h) | 0; + break Q; + } + d = ea(h); + } + v[e + 28968 >> 2] = d; + if (d) { + break N; + } + e = -64; + break a; + } + d = v[a + 28968 >> 2]; + } + v[C >> 2] = g; + v[a + 28984 >> 2] = d + l; + v[t >> 2] = l; + } + v[a + 28964 >> 2] = 2; + } + h = F - f | 0; + d = v[x >> 2]; + R: { + S: { + if (!(v[a + 28800 >> 2] | d - 3 >>> 0 > 1)) { + e = v[a + 28744 >> 2]; + g = h >>> 0 > 1 ? h : 1; + if (e >>> 0 <= g >>> 0) { + break S; + } + break R; + } + e = v[a + 28744 >> 2]; + } + g = e; + if (!e) { + break c; + } + } + if (g >>> 0 <= h >>> 0) { + h = a; + T: { + if (!v[a + 29024 >> 2]) { + l = (d | 0) != 7; + U: { + if (!l) { + e = v[a + 28992 >> 2]; + d = 0; + break U; + } + e = v[a + 28992 >> 2]; + d = v[C >> 2] - e | 0; + } + e = ca(a, v[a + 28984 >> 2] + e | 0, d, f, g); + if (e >>> 0 > 4294967176) { + break a; + } + if (!e) { + d = 2; + if (l) { + break T; + } + } + v[a + 28996 >> 2] = v[a + 28992 >> 2] + e; + d = 4; + break T; + } + e = ca(a, s, (d | 0) == 7 ? 0 : H - s | 0, f, g); + if (e >>> 0 > 4294967176) { + break a; + } + s = e + s | 0; + d = 2; + } + v[h + 28964 >> 2] = d; + f = f + g | 0; + continue; + } + if ((f | 0) == (F | 0)) { + f = F; + break b; + } + v[a + 28964 >> 2] = 3; + } + h = v[a + 28976 >> 2]; + g = e - h | 0; + V: { + if ((d | 0) == 7) { + d = F - f | 0; + d = d >>> 0 > g >>> 0 ? g : d; + break V; + } + if (g >>> 0 > v[t >> 2] - h >>> 0) { + e = -20; + break a; + } + d = F - f | 0; + d = d >>> 0 > g >>> 0 ? g : d; + if (!d) { + d = 0; + break V; + } + X(v[a + 28968 >> 2] + h | 0, f, d); + h = v[a + 28976 >> 2]; + } + v[a + 28976 >> 2] = d + h; + f = d + f | 0; + if (d >>> 0 < g >>> 0) { + break b; + } + v[a + 28976 >> 2] = 0; + g = v[x >> 2]; + h = v[a + 28968 >> 2]; + d = a; + W: { + if (!v[a + 29024 >> 2]) { + n = (g | 0) != 7; + X: { + if (!n) { + g = v[a + 28992 >> 2]; + l = 0; + break X; + } + g = v[a + 28992 >> 2]; + l = v[C >> 2] - g | 0; + } + e = ca(a, v[a + 28984 >> 2] + g | 0, l, h, e); + if (e >>> 0 > 4294967176) { + break a; + } + if (!e) { + g = 2; + if (n) { + break W; + } + } + v[a + 28996 >> 2] = v[a + 28992 >> 2] + e; + g = 4; + break W; + } + e = ca(a, s, (g | 0) == 7 ? 0 : H - s | 0, h, e); + if (e >>> 0 > 4294967176) { + break a; + } + s = e + s | 0; + g = 2; + } + v[d + 28964 >> 2] = g; + continue; + } + d = a; + h = H - s | 0; + e = v[a + 28992 >> 2]; + l = v[a + 28996 >> 2] - e | 0; + n = h >>> 0 < l >>> 0; + g = n ? h : l; + if (g) { + X(s, e + v[a + 28984 >> 2] | 0, g); + e = v[a + 28992 >> 2]; + } + e = e + g | 0; + v[d + 28992 >> 2] = e; + Y: { + if (n) { + break Y; + } + v[a + 28964 >> 2] = 2; + d = v[C >> 2]; + if (!v[a + 28756 >> 2] & d >>> 0 >= y[a + 28752 >> 2] | d >>> 0 >= e + v[a + 28768 >> 2] >>> 0) { + break Y; + } + v[a + 28992 >> 2] = 0; + v[a + 28996 >> 2] = 0; + } + s = g + s | 0; + if (h >>> 0 >= l >>> 0) { + continue; + } + break b; + } + break; + } + v[a + 28964 >> 2] = 0; + } + v[c + 8 >> 2] = f - v[c >> 2]; + e = s - v[b >> 2] | 0; + v[b + 8 >> 2] = e; + v[I + 8 >> 2] = e; + e = v[b + 4 >> 2]; + v[I >> 2] = v[b >> 2]; + v[I + 4 >> 2] = e; + Z: { + if (!((f | 0) != (p | 0) | (s | 0) != (O | 0))) { + b = v[a + 29020 >> 2]; + v[a + 29020 >> 2] = b + 1; + if ((b | 0) < 15) { + break Z; + } + e = -70; + if ((H | 0) == (O | 0)) { + break a; + } + e = -72; + if ((p | 0) != (F | 0)) { + break Z; + } + break a; + } + v[a + 29020 >> 2] = 0; + } + b = v[a + 28744 >> 2]; + if (!b) { + b = v[a + 29016 >> 2]; + if (v[a + 28996 >> 2] == v[a + 28992 >> 2]) { + e = 0; + if (!b) { + break a; + } + b = v[c + 8 >> 2]; + if (b >>> 0 >= y[c + 4 >> 2]) { + v[a + 28964 >> 2] = 2; + e = 1; + break a; + } + v[c + 8 >> 2] = b + 1; + break a; + } + e = 1; + if (b) { + break a; + } + v[c + 8 >> 2] = v[c + 8 >> 2] - 1; + v[a + 29016 >> 2] = 1; + break a; + } + e = (b - v[a + 28976 >> 2] | 0) + (v[a + 28804 >> 2] == 3 ? 3 : 0) | 0; + } + Q = u + 16 | 0; + return e | 0; + } + function na(a, b, c, d, e, f) { + var g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + y = 0, + z = 0, + A = 0, + B = 0, + C = 0; + r = Q - 784 | 0; + Q = r; + j = -72; + a: { + if (!f) { + break a; + } + g = t[e | 0]; + A = g & 255; + b: { + c: { + if ((g | 0) < 0) { + g = A - 126 >>> 1 | 0; + if (g >>> 0 >= f >>> 0) { + break a; + } + j = -20; + i = A - 127 | 0; + if (i >>> 0 >= 256) { + break a; + } + if (!i) { + break b; + } + n = e + 1 | 0; + j = A - 128 | 0; + e = (j >>> 1 | 0) + 1 | 0; + k = e & 1; + f = 0; + if (j >>> 0 >= 2) { + e = e & -2; + while (1) { + j = n + (f >>> 1 | 0) | 0; + t[a + f | 0] = w[j | 0] >>> 4; + t[(f | 1) + a | 0] = w[j | 0] & 15; + j = f | 2; + l = n + (j >>> 1 | 0) | 0; + t[a + j | 0] = w[l | 0] >>> 4; + t[(f | 3) + a | 0] = w[l | 0] & 15; + f = f + 4 | 0; + e = e - 2 | 0; + if (e) { + continue; + } + break; + } + } + if (k) { + e = n + (f >>> 1 | 0) | 0; + t[a + f | 0] = w[e | 0] >>> 4; + t[(f | 1) + a | 0] = w[e | 0] & 15; + } + A = g; + break c; + } + if (f >>> 0 <= A >>> 0) { + break a; + } + v[r + 264 >> 2] = 255; + q = e + 1 | 0; + g = $(r + 272 | 0, r + 264 | 0, r + 268 | 0, q, A); + if (g >>> 0 > 4294967176) { + j = g; + break a; + } + j = -44; + m = v[r + 268 >> 2]; + if (m >>> 0 > 6) { + break a; + } + z = r + 272 | 0; + p = Q - 512 | 0; + Q = p; + j = -46; + s = v[r + 264 >> 2]; + d: { + if (s >>> 0 > 255) { + break d; + } + j = -44; + if (m >>> 0 > 12) { + break d; + } + B = r + 4 | 0; + o = 1 << m; + f = o - 1 | 0; + h = 1; + e = s + 1 | 0; + C = e & 1; + y = 65536 << m - 1 >> 16; + e: { + if (!s) { + e = f; + break e; + } + j = e & -2; + e = f; + while (1) { + k = l << 1; + i = x[k + z >> 1]; + f: { + if ((i | 0) == 65535) { + t[(B + (e << 2) | 0) + 2 | 0] = l; + e = e - 1 | 0; + i = 1; + break f; + } + h = (y | 0) > i << 16 >> 16 ? h : 0; + } + u[k + p >> 1] = i; + n = l | 1; + k = n << 1; + i = x[z + k >> 1]; + g: { + if ((i | 0) != 65535) { + h = (y | 0) > i << 16 >> 16 ? h : 0; + break g; + } + t[(B + (e << 2) | 0) + 2 | 0] = n; + e = e - 1 | 0; + i = 1; + } + u[k + p >> 1] = i; + l = l + 2 | 0; + j = j - 2 | 0; + if (j) { + continue; + } + break; + } + } + if (C) { + i = x[z + (l << 1) >> 1]; + h: { + if ((i | 0) != 65535) { + h = (y | 0) > i << 16 >> 16 ? h : 0; + break h; + } + t[(B + (e << 2) | 0) + 2 | 0] = l; + e = e - 1 | 0; + i = 1; + } + u[p + (l << 1) >> 1] = i; + } + u[r + 2 >> 1] = h; + u[r >> 1] = m; + n = ((o >>> 3) + (o >>> 1) | 0) + 3 | 0; + l = 0; + j = 0; + while (1) { + i = j; + k = u[z + (i << 1) >> 1]; + i: { + if ((k | 0) <= 0) { + break i; + } + if ((k | 0) != 1) { + j = k & -2; + while (1) { + t[(B + (l << 2) | 0) + 2 | 0] = i; + while (1) { + l = f & l + n; + if (l >>> 0 > e >>> 0) { + continue; + } + break; + } + t[(B + (l << 2) | 0) + 2 | 0] = i; + while (1) { + l = f & l + n; + if (l >>> 0 > e >>> 0) { + continue; + } + break; + } + j = j - 2 | 0; + if (j) { + continue; + } + break; + } + } + if (!(k & 1)) { + break i; + } + t[(B + (l << 2) | 0) + 2 | 0] = i; + while (1) { + l = f & l + n; + if (l >>> 0 > e >>> 0) { + continue; + } + break; + } + } + j = i + 1 | 0; + if ((i | 0) != (s | 0)) { + continue; + } + break; + } + j = -1; + if (l) { + break d; + } + f = m + 1 | 0; + j = 0; + l = 0; + while (1) { + i = B + (l << 2) | 0; + e = p + (w[i + 2 | 0] << 1) | 0; + k = x[e >> 1]; + u[e >> 1] = k + 1; + e = f + (E(k) ^ -32) | 0; + t[i + 3 | 0] = e; + u[i >> 1] = (k << e) - o; + l = l + 1 | 0; + if ((o | 0) != (l | 0)) { + continue; + } + break; + } + } + Q = p + 512 | 0; + if (j >>> 0 >= 4294967177) { + break a; + } + m = g + q | 0; + f = A - g | 0; + C = a; + s = a + 255 | 0; + y = s - 3 | 0; + j: { + k: { + l: { + m: { + n: { + if (x[r + 2 >> 1]) { + i = -72; + if (!f) { + break j; + } + o: { + p: { + if (f >>> 0 >= 4) { + q = -1; + e = w[(f + m | 0) - 1 | 0]; + if (!e) { + break l; + } + if (f >>> 0 <= 4294967176) { + break p; + } + i = f; + break j; + } + g = w[m | 0]; + q: { + switch (f - 2 | 0) { + case 1: + g = w[m + 2 | 0] << 16 | g; + case 0: + g = (w[m + 1 | 0] << 8) + g | 0; + break; + default: + break q; + } + } + j = w[(f + m | 0) - 1 | 0]; + i = -20; + if (!j) { + break j; + } + h = 0; + e = (E(j) - (f << 3) | 0) + 9 | 0; + break o; + } + h = f - 4 | 0; + f = m + h | 0; + g = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + e = E(e) - 23 | 0; + } + l = x[r >> 1]; + k = l + e | 0; + f = g >>> 0 - k | 0; + i = v[(l << 2) + 4592 >> 2]; + r: { + if (k >>> 0 > 32) { + break r; + } + s: { + if ((h | 0) >= 4) { + g = k >>> 3 | 0; + k = k & 7; + break s; + } + if (!h) { + h = 0; + break r; + } + e = k >>> 3 | 0; + g = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + k = k - (g << 3) | 0; + } + h = h - g | 0; + e = m + h | 0; + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + } + j = f & i; + p = r + 4 | 0; + f = k + l | 0; + n = i & g >>> 0 - f; + if (f >>> 0 > 32) { + e = f; + f = a; + break m; + } + if ((h | 0) >= 4) { + e = f & 7; + h = h - (f >>> 3 | 0) | 0; + f = m + h | 0; + g = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + break n; + } + if (!h) { + h = 0; + e = f; + break n; + } + e = f >>> 3 | 0; + e = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + h = h - e | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + e = f - (e << 3) | 0; + if (e >>> 0 <= 32) { + break n; + } + f = a; + break m; + } + i = -72; + if (!f) { + break j; + } + t: { + u: { + if (f >>> 0 >= 4) { + q = -1; + e = w[(f + m | 0) - 1 | 0]; + if (!e) { + break l; + } + if (f >>> 0 <= 4294967176) { + break u; + } + i = f; + break j; + } + g = w[m | 0]; + v: { + switch (f - 2 | 0) { + case 1: + g = w[m + 2 | 0] << 16 | g; + case 0: + g = (w[m + 1 | 0] << 8) + g | 0; + break; + default: + break v; + } + } + j = w[(f + m | 0) - 1 | 0]; + i = -20; + if (!j) { + break j; + } + h = 0; + e = (E(j) - (f << 3) | 0) + 9 | 0; + break t; + } + h = f - 4 | 0; + f = m + h | 0; + g = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + e = E(e) - 23 | 0; + } + l = x[r >> 1]; + k = l + e | 0; + f = g >>> 0 - k | 0; + i = v[(l << 2) + 4592 >> 2]; + w: { + if (k >>> 0 > 32) { + break w; + } + x: { + if ((h | 0) >= 4) { + g = k >>> 3 | 0; + k = k & 7; + break x; + } + if (!h) { + h = 0; + break w; + } + e = k >>> 3 | 0; + g = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + k = k - (g << 3) | 0; + } + h = h - g | 0; + e = m + h | 0; + g = w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24); + } + j = f & i; + p = r + 4 | 0; + f = k + l | 0; + n = i & g >>> 0 - f; + y: { + if (f >>> 0 > 32) { + e = f; + f = a; + break y; + } + z: { + if ((h | 0) >= 4) { + e = f & 7; + h = h - (f >>> 3 | 0) | 0; + f = m + h | 0; + g = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + break z; + } + if (!h) { + h = 0; + e = f; + break z; + } + e = f >>> 3 | 0; + e = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + h = h - e | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + e = f - (e << 3) | 0; + if (e >>> 0 <= 32) { + break z; + } + f = a; + break y; + } + f = a; + while (1) { + A: { + if ((h | 0) >= 4) { + g = e >>> 3 | 0; + k = 0; + e = e & 7; + break A; + } + if (!h) { + h = 0; + break y; + } + g = e >>> 3 | 0; + k = m >>> 0 > (h + m | 0) - g >>> 0; + g = k ? h : g; + e = e - (g << 3) | 0; + } + h = h - g | 0; + o = m + h | 0; + g = w[o | 0] | w[o + 1 | 0] << 8 | (w[o + 2 | 0] << 16 | w[o + 3 | 0] << 24); + if (k | f >>> 0 >= y >>> 0) { + break y; + } + i = (j << 2) + p | 0; + j = x[i >> 1]; + q = w[i + 3 | 0]; + t[f | 0] = w[i + 2 | 0]; + l = (n << 2) + p | 0; + k = x[l >> 1]; + i = w[l + 3 | 0]; + t[f + 1 | 0] = w[l + 2 | 0]; + e = e + q | 0; + j = j + (v[(q << 2) + 4592 >> 2] & g >>> 0 - e) | 0; + l = v[(i << 2) + 4592 >> 2]; + i = e + i | 0; + n = k + (l & g >>> 0 - i) | 0; + B: { + C: { + if (i >>> 0 > 32) { + e = i; + break C; + } + if ((h | 0) >= 4) { + e = i & 7; + h = h - (i >>> 3 | 0) | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + break B; + } + if (!h) { + h = 0; + e = i; + break C; + } + e = i >>> 3 | 0; + k = o - e | 0; + g = k >>> 0 < m >>> 0 ? h : e; + e = i - (g << 3) | 0; + h = h - g | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + if (k >>> 0 >= m >>> 0) { + break B; + } + } + f = f + 2 | 0; + break y; + } + i = (j << 2) + p | 0; + j = x[i >> 1]; + q = w[i + 3 | 0]; + t[f + 2 | 0] = w[i + 2 | 0]; + l = (n << 2) + p | 0; + i = x[l >> 1]; + k = w[l + 3 | 0]; + t[f + 3 | 0] = w[l + 2 | 0]; + e = e + q | 0; + j = j + (v[(q << 2) + 4592 >> 2] & g >>> 0 - e) | 0; + e = e + k | 0; + n = i + (v[(k << 2) + 4592 >> 2] & g >>> 0 - e) | 0; + f = f + 4 | 0; + if (e >>> 0 < 33) { + continue; + } + break; + } + } + q = -70; + o = s - 2 | 0; + if (o >>> 0 < f >>> 0) { + break l; + } + z = 2; + while (1) { + j = (j << 2) + p | 0; + y = x[j >> 1]; + s = w[j + 3 | 0]; + t[f | 0] = w[j + 2 | 0]; + i = f + 1 | 0; + e = e + s | 0; + if (e >>> 0 > 32) { + j = n; + break k; + } + D: { + E: { + if ((h | 0) >= 4) { + j = e >>> 3 | 0; + l = e & 7; + break E; + } + if (!h) { + h = 0; + l = e; + k = g; + break D; + } + j = e >>> 3 | 0; + j = m >>> 0 > (h + m | 0) - j >>> 0 ? h : j; + l = e - (j << 3) | 0; + } + h = h - j | 0; + j = m + h | 0; + k = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + } + if (i >>> 0 > o >>> 0) { + break l; + } + j = y + (v[(s << 2) + 4592 >> 2] & g >>> 0 - e) | 0; + e = (n << 2) + p | 0; + n = x[e >> 1]; + g = w[e + 3 | 0]; + t[f + 1 | 0] = w[e + 2 | 0]; + i = f + 2 | 0; + e = g + l | 0; + if (e >>> 0 > 32) { + z = 3; + break k; + } + f = v[(g << 2) + 4592 >> 2] & k >>> 0 - e; + F: { + G: { + if ((h | 0) >= 4) { + l = e >>> 3 | 0; + e = e & 7; + break G; + } + if (!h) { + h = 0; + g = k; + break F; + } + g = e; + e = e >>> 3 | 0; + l = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + e = g - (l << 3) | 0; + } + h = h - l | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + } + n = f + n | 0; + f = i; + if (o >>> 0 >= f >>> 0) { + continue; + } + break; + } + break l; + } + f = a; + while (1) { + H: { + if ((h | 0) >= 4) { + g = e >>> 3 | 0; + k = 0; + e = e & 7; + break H; + } + if (!h) { + h = 0; + break m; + } + g = e >>> 3 | 0; + k = m >>> 0 > (h + m | 0) - g >>> 0; + g = k ? h : g; + e = e - (g << 3) | 0; + } + h = h - g | 0; + o = m + h | 0; + g = w[o | 0] | w[o + 1 | 0] << 8 | (w[o + 2 | 0] << 16 | w[o + 3 | 0] << 24); + if (k | f >>> 0 >= y >>> 0) { + break m; + } + i = (j << 2) + p | 0; + j = x[i >> 1]; + q = w[i + 3 | 0]; + t[f | 0] = w[i + 2 | 0]; + l = (n << 2) + p | 0; + i = x[l >> 1]; + k = w[l + 3 | 0]; + t[f + 1 | 0] = w[l + 2 | 0]; + j = j + (g << e >>> 0 - q | 0) | 0; + e = e + q | 0; + n = i + (g << e >>> 0 - k | 0) | 0; + I: { + i = e + k | 0; + J: { + if (i >>> 0 > 32) { + e = i; + break J; + } + if ((h | 0) >= 4) { + e = i & 7; + h = h - (i >>> 3 | 0) | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + break I; + } + if (!h) { + h = 0; + e = i; + break J; + } + e = i >>> 3 | 0; + k = o - e | 0; + g = k >>> 0 < m >>> 0 ? h : e; + e = i - (g << 3) | 0; + h = h - g | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + if (k >>> 0 >= m >>> 0) { + break I; + } + } + f = f + 2 | 0; + break m; + } + i = (j << 2) + p | 0; + j = x[i >> 1]; + q = w[i + 3 | 0]; + t[f + 2 | 0] = w[i + 2 | 0]; + l = (n << 2) + p | 0; + i = x[l >> 1]; + k = w[l + 3 | 0]; + t[f + 3 | 0] = w[l + 2 | 0]; + j = j + (g << e >>> 0 - q | 0) | 0; + e = e + q | 0; + n = i + (g << e >>> 0 - k | 0) | 0; + f = f + 4 | 0; + e = e + k | 0; + if (e >>> 0 < 33) { + continue; + } + break; + } + } + q = -70; + o = s - 2 | 0; + if (o >>> 0 < f >>> 0) { + break l; + } + z = 2; + while (1) { + j = (j << 2) + p | 0; + y = x[j >> 1]; + s = w[j + 3 | 0]; + t[f | 0] = w[j + 2 | 0]; + i = f + 1 | 0; + k = e + s | 0; + if (k >>> 0 > 32) { + j = n; + break k; + } + K: { + L: { + if ((h | 0) >= 4) { + l = k >>> 3 | 0; + k = k & 7; + break L; + } + if (!h) { + h = 0; + l = g; + break K; + } + j = k >>> 3 | 0; + l = m >>> 0 > (h + m | 0) - j >>> 0 ? h : j; + k = k - (l << 3) | 0; + } + h = h - l | 0; + j = m + h | 0; + l = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + } + if (i >>> 0 > o >>> 0) { + break l; + } + j = y + (g << e >>> 0 - s | 0) | 0; + e = (n << 2) + p | 0; + n = x[e >> 1]; + g = w[e + 3 | 0]; + t[f + 1 | 0] = w[e + 2 | 0]; + i = f + 2 | 0; + e = g + k | 0; + if (e >>> 0 > 32) { + z = 3; + break k; + } + f = l << k >>> 0 - g | 0; + M: { + N: { + if ((h | 0) >= 4) { + l = e >>> 3 | 0; + e = e & 7; + break N; + } + if (!h) { + h = 0; + g = l; + break M; + } + g = e; + e = e >>> 3 | 0; + l = m >>> 0 > (h + m | 0) - e >>> 0 ? h : e; + e = g - (l << 3) | 0; + } + h = h - l | 0; + g = m + h | 0; + g = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + } + n = f + n | 0; + f = i; + if (o >>> 0 >= f >>> 0) { + continue; + } + break; + } + } + i = q; + break j; + } + t[i | 0] = w[((j << 2) + p | 0) + 2 | 0]; + i = (f + z | 0) - C | 0; + } + j = i; + if (i >>> 0 >= 4294967177) { + break a; + } + } + f = b; + v[f >> 2] = 0; + v[f + 4 >> 2] = 0; + e = 0; + v[f + 48 >> 2] = 0; + v[f + 40 >> 2] = 0; + v[f + 44 >> 2] = 0; + v[f + 32 >> 2] = 0; + v[f + 36 >> 2] = 0; + v[f + 24 >> 2] = 0; + v[f + 28 >> 2] = 0; + v[f + 16 >> 2] = 0; + v[f + 20 >> 2] = 0; + v[f + 8 >> 2] = 0; + v[f + 12 >> 2] = 0; + j = -20; + if (!i) { + break a; + } + f = 0; + while (1) { + k = a + f | 0; + g = w[k | 0]; + if (g >>> 0 > 11) { + break a; + } + g = (g << 2) + b | 0; + v[g >> 2] = v[g >> 2] + 1; + e = (1 << w[k | 0] >> 1) + e | 0; + f = f + 1 | 0; + if ((i | 0) != (f | 0)) { + continue; + } + break; + } + if (!e | e >>> 0 > 4095) { + break a; + } + f = d; + d = 32 - E(e) | 0; + v[f >> 2] = d; + e = (1 << d) - e | 0; + d = E(e) ^ 31; + if (1 << d != (e | 0)) { + break a; + } + e = a + i | 0; + a = d + 1 | 0; + t[e | 0] = a; + a = (a << 2) + b | 0; + v[a >> 2] = v[a >> 2] + 1; + a = v[b + 4 >> 2]; + if (a >>> 0 < 2 | a & 1) { + break a; + } + v[c >> 2] = i + 1; + j = A + 1 | 0; + break a; + } + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + v[b + 48 >> 2] = 0; + v[b + 40 >> 2] = 0; + v[b + 44 >> 2] = 0; + v[b + 32 >> 2] = 0; + v[b + 36 >> 2] = 0; + v[b + 24 >> 2] = 0; + v[b + 28 >> 2] = 0; + v[b + 16 >> 2] = 0; + v[b + 20 >> 2] = 0; + v[b + 8 >> 2] = 0; + v[b + 12 >> 2] = 0; + } + Q = r + 784 | 0; + return j; + } + function ra(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + u = 0, + y = 0, + z = 0, + A = 0, + B = 0, + C = 0, + D = 0, + F = 0, + G = 0, + H = 0, + I = 0, + J = 0, + K = 0, + L = 0, + M = 0, + N = 0, + O = 0, + P = 0, + R = 0, + S = 0, + T = 0; + n = Q - 32 | 0; + Q = n; + f = -20; + a: { + if (d >>> 0 < 10) { + break a; + } + j = w[c + 4 | 0] | w[c + 5 | 0] << 8; + h = w[c | 0] | w[c + 1 | 0] << 8; + m = h + 6 | 0; + i = w[c + 2 | 0] | w[c + 3 | 0] << 8; + C = j + (m + i | 0) | 0; + if (C >>> 0 > d >>> 0) { + break a; + } + if (!h) { + f = -72; + break a; + } + g = c + 6 | 0; + z = x[e + 2 >> 1]; + b: { + if (h >>> 0 >= 4) { + f = -1; + g = w[(h + g | 0) - 1 | 0]; + if (!g) { + break a; + } + r = h + 2 | 0; + h = r + c | 0; + k = w[h | 0] | w[h + 1 | 0] << 8 | (w[h + 2 | 0] << 16 | w[h + 3 | 0] << 24); + h = E(g) - 23 | 0; + break b; + } + k = w[g | 0]; + c: { + switch (h - 2 | 0) { + case 1: + k = w[c + 8 | 0] << 16 | k; + case 0: + k = (w[c + 7 | 0] << 8) + k | 0; + break; + default: + break c; + } + } + g = w[(h + g | 0) - 1 | 0]; + if (!g) { + break a; + } + r = 6; + h = (E(g) - (h << 3) | 0) + 9 | 0; + } + if (!i) { + f = -72; + break a; + } + B = c + m | 0; + d: { + if (i >>> 0 >= 4) { + f = -1; + m = w[(i + B | 0) - 1 | 0]; + if (!m) { + break a; + } + s = i - 4 | 0; + g = B + s | 0; + o = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + g = E(m) - 23 | 0; + break d; + } + o = w[B | 0]; + e: { + switch (i - 2 | 0) { + case 1: + o = w[B + 2 | 0] << 16 | o; + case 0: + o = (w[B + 1 | 0] << 8) + o | 0; + break; + default: + break e; + } + } + g = w[(i + B | 0) - 1 | 0]; + if (!g) { + f = -20; + break a; + } + g = (E(g) - (i << 3) | 0) + 9 | 0; + } + f = -72; + if (!j) { + break a; + } + F = i + B | 0; + m = F + j | 0; + f: { + if (j >>> 0 >= 4) { + f = -1; + l = w[m - 1 | 0]; + if (!l) { + break a; + } + u = j - 4 | 0; + i = F + u | 0; + D = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + i = E(l) - 23 | 0; + break f; + } + D = w[F | 0]; + g: { + switch (j - 2 | 0) { + case 1: + D = w[F + 2 | 0] << 16 | D; + case 0: + D = (w[F + 1 | 0] << 8) + D | 0; + break; + default: + break g; + } + } + i = w[m - 1 | 0]; + if (!i) { + f = -20; + break a; + } + i = (E(i) - (j << 3) | 0) + 9 | 0; + } + f = ja(n + 8 | 0, m, d - C | 0); + if (f >>> 0 > 4294967176) { + break a; + } + l = e + 4 | 0; + p = 0 - z & 31; + A = v[n + 16 >> 2]; + f = v[n + 12 >> 2]; + q = v[n + 8 >> 2]; + d = b + 3 >>> 2 | 0; + m = d + a | 0; + M = a + b | 0; + N = M - 3 | 0; + C = d + m | 0; + z = C + d | 0; + h: { + if (N >>> 0 <= z >>> 0) { + e = z; + j = C; + d = m; + break h; + } + P = v[n + 24 >> 2]; + d = m; + j = C; + e = z; + while (1) { + y = (k << h >>> p << 2) + l | 0; + G = x[y >> 1]; + t[a | 0] = G; + t[a + 1 | 0] = G >>> 8; + G = w[y + 2 | 0]; + I = w[y + 3 | 0]; + y = (o << g >>> p << 2) + l | 0; + H = x[y >> 1]; + t[d | 0] = H; + t[d + 1 | 0] = H >>> 8; + H = w[y + 2 | 0]; + J = w[y + 3 | 0]; + y = (D << i >>> p << 2) + l | 0; + K = x[y >> 1]; + t[j | 0] = K; + t[j + 1 | 0] = K >>> 8; + K = w[y + 2 | 0]; + O = w[y + 3 | 0]; + y = (q << f >>> p << 2) + l | 0; + L = x[y >> 1]; + t[e | 0] = L; + t[e + 1 | 0] = L >>> 8; + L = w[y + 2 | 0]; + R = w[y + 3 | 0]; + y = a + I | 0; + h = h + G | 0; + a = (k << h >>> p << 2) + l | 0; + G = x[a >> 1]; + t[y | 0] = G; + t[y + 1 | 0] = G >>> 8; + G = w[a + 2 | 0]; + S = w[a + 3 | 0]; + d = d + J | 0; + I = g + H | 0; + a = (o << I >>> p << 2) + l | 0; + g = x[a >> 1]; + t[d | 0] = g; + t[d + 1 | 0] = g >>> 8; + H = w[a + 2 | 0]; + T = w[a + 3 | 0]; + j = j + O | 0; + i = i + K | 0; + a = (D << i >>> p << 2) + l | 0; + g = x[a >> 1]; + t[j | 0] = g; + t[j + 1 | 0] = g >>> 8; + J = w[a + 2 | 0]; + K = w[a + 3 | 0]; + e = e + R | 0; + f = f + L | 0; + g = (q << f >>> p << 2) + l | 0; + a = x[g >> 1]; + t[e | 0] = a; + t[e + 1 | 0] = a >>> 8; + h = h + G | 0; + if ((r | 0) < 10) { + G = 3; + } else { + r = r - (h >>> 3 | 0) | 0; + a = r + c | 0; + k = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + h = h & 7; + G = 0; + } + O = w[g + 3 | 0]; + L = w[g + 2 | 0]; + g = H + I | 0; + I = 3; + if ((s | 0) < 4) { + H = 3; + } else { + s = s - (g >>> 3 | 0) | 0; + a = B + s | 0; + o = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + g = g & 7; + H = 0; + } + i = i + J | 0; + if ((u | 0) >= 4) { + u = u - (i >>> 3 | 0) | 0; + a = F + u | 0; + D = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + I = 0; + i = i & 7; + } + e = e + O | 0; + f = f + L | 0; + if (A >>> 0 < P >>> 0) { + J = 3; + } else { + A = A - (f >>> 3 | 0) | 0; + q = w[A | 0] | w[A + 1 | 0] << 8 | (w[A + 2 | 0] << 16 | w[A + 3 | 0] << 24); + f = f & 7; + J = 0; + } + a = y + S | 0; + d = d + T | 0; + j = j + K | 0; + if (e >>> 0 >= N >>> 0) { + break h; + } + if (!(J | (G | H | I))) { + continue; + } + break; + } + } + v[n + 16 >> 2] = A; + v[n + 12 >> 2] = f; + v[n + 8 >> 2] = q; + if (a >>> 0 > m >>> 0) { + f = -20; + break a; + } + if (d >>> 0 > C >>> 0) { + f = -20; + break a; + } + f = -20; + if (j >>> 0 > z >>> 0) { + break a; + } + i: { + j: { + k: { + if (h >>> 0 <= 32) { + A = m - 3 | 0; + while (1) { + l: { + if ((r | 0) >= 10) { + k = h >>> 3 | 0; + q = 0; + f = h & 7; + break l; + } + if ((r | 0) == 6) { + q = m - 2 | 0; + r = 6; + f = h; + break j; + } + f = h >>> 3 | 0; + q = (r - f | 0) < 6; + k = q ? r - 6 | 0 : f; + f = h - (k << 3) | 0; + } + r = r - k | 0; + h = r + c | 0; + k = w[h | 0] | w[h + 1 | 0] << 8 | (w[h + 2 | 0] << 16 | w[h + 3 | 0] << 24); + if (q | a >>> 0 >= A >>> 0) { + break k; + } + h = (k << f >>> p << 2) + l | 0; + q = x[h >> 1]; + t[a | 0] = q; + t[a + 1 | 0] = q >>> 8; + a = w[h + 3 | 0] + a | 0; + f = w[h + 2 | 0] + f | 0; + h = (k << f >>> p << 2) + l | 0; + q = x[h >> 1]; + t[a | 0] = q; + t[a + 1 | 0] = q >>> 8; + a = a + w[h + 3 | 0] | 0; + h = f + w[h + 2 | 0] | 0; + if (h >>> 0 < 33) { + continue; + } + break; + } + } + q = m - 2 | 0; + break i; + } + q = m - 2 | 0; + if (f >>> 0 <= 32) { + break j; + } + h = f; + break i; + } + while (1) { + m: { + if ((r | 0) >= 10) { + k = f >>> 3 | 0; + A = 0; + h = f & 7; + break m; + } + if ((r | 0) == 6) { + r = 6; + h = f; + break i; + } + h = f >>> 3 | 0; + A = (r - h | 0) < 6; + k = A ? r - 6 | 0 : h; + h = f - (k << 3) | 0; + } + r = r - k | 0; + f = r + c | 0; + k = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + if (A | a >>> 0 > q >>> 0) { + break i; + } + f = (k << h >>> p << 2) + l | 0; + A = x[f >> 1]; + t[a | 0] = A; + t[a + 1 | 0] = A >>> 8; + a = w[f + 3 | 0] + a | 0; + f = w[f + 2 | 0] + h | 0; + if (f >>> 0 <= 32) { + continue; + } + break; + } + h = f; + } + if (a >>> 0 <= q >>> 0) { + while (1) { + c = (k << h >>> p << 2) + l | 0; + f = x[c >> 1]; + t[a | 0] = f; + t[a + 1 | 0] = f >>> 8; + h = w[c + 2 | 0] + h | 0; + a = w[c + 3 | 0] + a | 0; + if (q >>> 0 >= a >>> 0) { + continue; + } + break; + } + } + n: { + if (a >>> 0 >= m >>> 0) { + break n; + } + f = a; + c = k << h >>> p | 0; + a = (c << 2) + l | 0; + t[f | 0] = w[a | 0]; + if (w[a + 3 | 0] == 1) { + h = w[a + 2 | 0] + h | 0; + break n; + } + if (h >>> 0 > 31) { + break n; + } + a = w[((c << 2) + l | 0) + 2 | 0] + h | 0; + h = a >>> 0 < 32 ? a : 32; + } + o: { + p: { + q: { + if (g >>> 0 <= 32) { + m = C - 3 | 0; + while (1) { + r: { + if ((s | 0) >= 4) { + f = g >>> 3 | 0; + a = 0; + c = g & 7; + break r; + } + if (!s) { + f = C - 2 | 0; + s = 0; + k = B; + c = g; + break p; + } + c = g >>> 3 | 0; + a = (B + s | 0) - c >>> 0 < B >>> 0; + f = a ? s : c; + c = g - (f << 3) | 0; + } + s = s - f | 0; + k = B + s | 0; + o = w[k | 0] | w[k + 1 | 0] << 8 | (w[k + 2 | 0] << 16 | w[k + 3 | 0] << 24); + if (a | d >>> 0 >= m >>> 0) { + break q; + } + a = (o << c >>> p << 2) + l | 0; + g = x[a >> 1]; + t[d | 0] = g; + t[d + 1 | 0] = g >>> 8; + d = w[a + 3 | 0] + d | 0; + c = w[a + 2 | 0] + c | 0; + a = (o << c >>> p << 2) + l | 0; + g = x[a >> 1]; + t[d | 0] = g; + t[d + 1 | 0] = g >>> 8; + d = d + w[a + 3 | 0] | 0; + g = c + w[a + 2 | 0] | 0; + if (g >>> 0 < 33) { + continue; + } + break; + } + } + k = B + s | 0; + f = C - 2 | 0; + break o; + } + f = C - 2 | 0; + if (c >>> 0 <= 32) { + break p; + } + g = c; + break o; + } + while (1) { + s: { + if ((s | 0) >= 4) { + a = c >>> 3 | 0; + q = 0; + g = c & 7; + break s; + } + if (!s) { + g = c; + break o; + } + a = c >>> 3 | 0; + q = k - a >>> 0 < B >>> 0; + a = q ? s : a; + g = c - (a << 3) | 0; + } + s = s - a | 0; + k = B + s | 0; + o = w[k | 0] | w[k + 1 | 0] << 8 | (w[k + 2 | 0] << 16 | w[k + 3 | 0] << 24); + if (q | d >>> 0 > f >>> 0) { + break o; + } + a = (o << g >>> p << 2) + l | 0; + c = x[a >> 1]; + t[d | 0] = c; + t[d + 1 | 0] = c >>> 8; + d = w[a + 3 | 0] + d | 0; + c = w[a + 2 | 0] + g | 0; + if (c >>> 0 <= 32) { + continue; + } + break; + } + g = c; + } + if (d >>> 0 <= f >>> 0) { + while (1) { + a = (o << g >>> p << 2) + l | 0; + c = x[a >> 1]; + t[d | 0] = c; + t[d + 1 | 0] = c >>> 8; + g = w[a + 2 | 0] + g | 0; + d = w[a + 3 | 0] + d | 0; + if (d >>> 0 <= f >>> 0) { + continue; + } + break; + } + } + t: { + if (d >>> 0 >= C >>> 0) { + break t; + } + c = o << g >>> p | 0; + a = (c << 2) + l | 0; + t[d | 0] = w[a | 0]; + if (w[a + 3 | 0] == 1) { + g = w[a + 2 | 0] + g | 0; + break t; + } + if (g >>> 0 > 31) { + break t; + } + a = w[((c << 2) + l | 0) + 2 | 0] + g | 0; + g = a >>> 0 < 32 ? a : 32; + } + u: { + v: { + w: { + if (i >>> 0 <= 32) { + m = z - 3 | 0; + while (1) { + x: { + if ((u | 0) >= 4) { + f = i >>> 3 | 0; + a = 0; + c = i & 7; + break x; + } + if (!u) { + f = z - 2 | 0; + u = 0; + o = F; + c = i; + break v; + } + c = i >>> 3 | 0; + a = F >>> 0 > (u + F | 0) - c >>> 0; + f = a ? u : c; + c = i - (f << 3) | 0; + } + u = u - f | 0; + o = F + u | 0; + D = w[o | 0] | w[o + 1 | 0] << 8 | (w[o + 2 | 0] << 16 | w[o + 3 | 0] << 24); + if (a | j >>> 0 >= m >>> 0) { + break w; + } + a = (D << c >>> p << 2) + l | 0; + d = x[a >> 1]; + t[j | 0] = d; + t[j + 1 | 0] = d >>> 8; + d = w[a + 3 | 0] + j | 0; + c = w[a + 2 | 0] + c | 0; + a = (D << c >>> p << 2) + l | 0; + i = x[a >> 1]; + t[d | 0] = i; + t[d + 1 | 0] = i >>> 8; + j = d + w[a + 3 | 0] | 0; + i = c + w[a + 2 | 0] | 0; + if (i >>> 0 < 33) { + continue; + } + break; + } + } + o = u + F | 0; + f = z - 2 | 0; + break u; + } + f = z - 2 | 0; + if (c >>> 0 <= 32) { + break v; + } + i = c; + break u; + } + while (1) { + y: { + if ((u | 0) >= 4) { + a = c >>> 3 | 0; + d = 0; + i = c & 7; + break y; + } + if (!u) { + i = c; + break u; + } + a = c >>> 3 | 0; + d = F >>> 0 > o - a >>> 0; + a = d ? u : a; + i = c - (a << 3) | 0; + } + u = u - a | 0; + o = F + u | 0; + D = w[o | 0] | w[o + 1 | 0] << 8 | (w[o + 2 | 0] << 16 | w[o + 3 | 0] << 24); + if (d | f >>> 0 < j >>> 0) { + break u; + } + a = (D << i >>> p << 2) + l | 0; + c = x[a >> 1]; + t[j | 0] = c; + t[j + 1 | 0] = c >>> 8; + j = w[a + 3 | 0] + j | 0; + c = w[a + 2 | 0] + i | 0; + if (c >>> 0 <= 32) { + continue; + } + break; + } + i = c; + } + if (f >>> 0 >= j >>> 0) { + while (1) { + a = (D << i >>> p << 2) + l | 0; + c = x[a >> 1]; + t[j | 0] = c; + t[j + 1 | 0] = c >>> 8; + i = w[a + 2 | 0] + i | 0; + j = w[a + 3 | 0] + j | 0; + if (j >>> 0 <= f >>> 0) { + continue; + } + break; + } + } + z: { + if (j >>> 0 >= z >>> 0) { + break z; + } + c = D << i >>> p | 0; + a = (c << 2) + l | 0; + t[j | 0] = w[a | 0]; + if (w[a + 3 | 0] == 1) { + i = w[a + 2 | 0] + i | 0; + break z; + } + if (i >>> 0 > 31) { + break z; + } + a = w[((c << 2) + l | 0) + 2 | 0] + i | 0; + i = a >>> 0 < 32 ? a : 32; + } + A: { + B: { + C: { + c = v[n + 12 >> 2]; + if (c >>> 0 <= 32) { + while (1) { + a = n; + f = v[a + 16 >> 2]; + C = v[a + 24 >> 2]; + D: { + if (f >>> 0 >= C >>> 0) { + f = f - (c >>> 3 | 0) | 0; + v[n + 16 >> 2] = f; + d = 0; + c = c & 7; + break D; + } + j = v[n + 20 >> 2]; + if ((j | 0) == (f | 0)) { + a = M - 2 | 0; + j = f; + break B; + } + m = c >>> 3 | 0; + d = j >>> 0 > f - m >>> 0; + j = d ? f - j | 0 : m; + f = f - j | 0; + v[n + 16 >> 2] = f; + c = c - (j << 3) | 0; + } + v[a + 12 >> 2] = c; + a = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + v[n + 8 >> 2] = a; + if (d | e >>> 0 >= N >>> 0) { + break C; + } + d = (a << c >>> p << 2) + l | 0; + f = x[d >> 1]; + t[e | 0] = f; + t[e + 1 | 0] = f >>> 8; + e = w[d + 3 | 0] + e | 0; + c = w[d + 2 | 0] + c | 0; + a = (a << c >>> p << 2) + l | 0; + d = x[a >> 1]; + t[e | 0] = d; + t[e + 1 | 0] = d >>> 8; + c = c + w[a + 2 | 0] | 0; + v[n + 12 >> 2] = c; + e = e + w[a + 3 | 0] | 0; + if (c >>> 0 < 33) { + continue; + } + break; + } + } + a = M - 2 | 0; + break A; + } + a = M - 2 | 0; + if (c >>> 0 > 32) { + break A; + } + j = v[n + 20 >> 2]; + } + while (1) { + m = n; + E: { + if (f >>> 0 >= C >>> 0) { + f = f - (c >>> 3 | 0) | 0; + v[n + 16 >> 2] = f; + d = 0; + c = c & 7; + break E; + } + if ((f | 0) == (j | 0)) { + break A; + } + z = c >>> 3 | 0; + d = j >>> 0 > f - z >>> 0; + z = d ? f - j | 0 : z; + f = f - z | 0; + v[n + 16 >> 2] = f; + c = c - (z << 3) | 0; + } + v[m + 12 >> 2] = c; + m = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + v[n + 8 >> 2] = m; + if (d | a >>> 0 < e >>> 0) { + break A; + } + d = (m << c >>> p << 2) + l | 0; + m = x[d >> 1]; + t[e | 0] = m; + t[e + 1 | 0] = m >>> 8; + c = w[d + 2 | 0] + c | 0; + v[n + 12 >> 2] = c; + e = w[d + 3 | 0] + e | 0; + if (c >>> 0 <= 32) { + continue; + } + break; + } + } + if (a >>> 0 >= e >>> 0) { + while (1) { + d = (v[n + 8 >> 2] << c >>> p << 2) + l | 0; + c = x[d >> 1]; + t[e | 0] = c; + t[e + 1 | 0] = c >>> 8; + c = v[n + 12 >> 2] + w[d + 2 | 0] | 0; + v[n + 12 >> 2] = c; + e = w[d + 3 | 0] + e | 0; + if (e >>> 0 <= a >>> 0) { + continue; + } + break; + } + } + F: { + if (e >>> 0 >= M >>> 0) { + break F; + } + d = v[n + 8 >> 2] << c >>> p | 0; + a = (d << 2) + l | 0; + t[e | 0] = w[a | 0]; + if (w[a + 3 | 0] == 1) { + c = v[n + 12 >> 2] + w[a + 2 | 0] | 0; + break F; + } + c = v[n + 12 >> 2]; + if (c >>> 0 > 31) { + break F; + } + a = w[((d << 2) + l | 0) + 2 | 0] + c | 0; + c = a >>> 0 < 32 ? a : 32; + } + f = (r | 0) == 6 ? (h | 0) == 32 ? (k | 0) == (B | 0) ? (g | 0) == 32 ? (o | 0) == (F | 0) ? (i | 0) == 32 ? v[n + 16 >> 2] == v[n + 20 >> 2] ? (c | 0) == 32 ? b : -20 : -20 : -20 : -20 : -20 : -20 : -20 : -20; + } + Q = n + 32 | 0; + return f; + } + function ka(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + u = 0, + y = 0, + z = 0, + A = 0, + C = 0, + D = 0, + F = 0, + G = 0, + H = 0, + I = 0, + J = 0, + K = 0, + L = 0, + M = 0, + N = 0, + O = 0, + P = 0, + R = 0, + S = 0, + T = 0, + U = 0; + n = Q - 32 | 0; + Q = n; + f = -20; + a: { + if (d >>> 0 < 10) { + break a; + } + k = w[c + 4 | 0] | w[c + 5 | 0] << 8; + h = w[c | 0] | w[c + 1 | 0] << 8; + j = h + 6 | 0; + g = w[c + 2 | 0] | w[c + 3 | 0] << 8; + q = k + (j + g | 0) | 0; + if (q >>> 0 > d >>> 0) { + break a; + } + if (!h) { + f = -72; + break a; + } + i = c + 6 | 0; + l = x[e + 2 >> 1]; + b: { + if (h >>> 0 >= 4) { + f = -1; + i = w[(h + i | 0) - 1 | 0]; + if (!i) { + break a; + } + r = h + 2 | 0; + f = r + c | 0; + m = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + h = E(i) - 23 | 0; + break b; + } + m = w[i | 0]; + c: { + switch (h - 2 | 0) { + case 1: + m = w[c + 8 | 0] << 16 | m; + case 0: + m = (w[c + 7 | 0] << 8) + m | 0; + break; + default: + break c; + } + } + f = w[(h + i | 0) - 1 | 0]; + if (!f) { + f = -20; + break a; + } + r = 6; + h = (E(f) - (h << 3) | 0) + 9 | 0; + } + if (!g) { + f = -72; + break a; + } + y = c + j | 0; + d: { + if (g >>> 0 >= 4) { + f = -1; + i = w[(g + y | 0) - 1 | 0]; + if (!i) { + break a; + } + J = g - 4 | 0; + f = J + y | 0; + z = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + i = E(i) - 23 | 0; + break d; + } + z = w[y | 0]; + e: { + switch (g - 2 | 0) { + case 1: + z = w[y + 2 | 0] << 16 | z; + case 0: + z = (w[y + 1 | 0] << 8) + z | 0; + break; + default: + break e; + } + } + f = w[(g + y | 0) - 1 | 0]; + if (!f) { + f = -20; + break a; + } + i = (E(f) - (g << 3) | 0) + 9 | 0; + } + f = -72; + if (!k) { + break a; + } + C = g + y | 0; + j = k + C | 0; + f: { + if (k >>> 0 >= 4) { + f = -1; + g = w[j - 1 | 0]; + if (!g) { + break a; + } + G = k - 4 | 0; + f = G + C | 0; + A = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + g = E(g) - 23 | 0; + break f; + } + A = w[C | 0]; + g: { + switch (k - 2 | 0) { + case 1: + A = w[C + 2 | 0] << 16 | A; + case 0: + A = (w[C + 1 | 0] << 8) + A | 0; + break; + default: + break g; + } + } + f = w[j - 1 | 0]; + if (!f) { + f = -20; + break a; + } + g = (E(f) - (k << 3) | 0) + 9 | 0; + } + f = ja(n + 8 | 0, j, d - q | 0); + if (f >>> 0 > 4294967176) { + break a; + } + o = e + 4 | 0; + p = 0 - l & 31; + f = v[n + 16 >> 2]; + D = v[n + 12 >> 2]; + N = v[n + 8 >> 2]; + L = b + 3 >>> 2 | 0; + F = L + a | 0; + H = F + L | 0; + I = H + L | 0; + K = a + b | 0; + O = K - 3 | 0; + h: { + if (I >>> 0 >= O >>> 0) { + u = f; + q = J; + l = G; + j = r; + s = I; + k = H; + d = F; + e = a; + break h; + } + P = 1; + S = v[n + 24 >> 2]; + e = a; + d = F; + k = H; + s = I; + while (1) { + j = (m << h >>> p << 1) + o | 0; + q = w[j + 1 | 0]; + t[e | 0] = w[j | 0]; + j = (z << i >>> p << 1) + o | 0; + l = w[j + 1 | 0]; + t[d | 0] = w[j | 0]; + j = (A << g >>> p << 1) + o | 0; + u = w[j + 1 | 0]; + t[k | 0] = w[j | 0]; + j = (N << D >>> p << 1) + o | 0; + M = w[j + 1 | 0]; + t[s | 0] = w[j | 0]; + h = h + q | 0; + j = (m << h >>> p << 1) + o | 0; + q = w[j + 1 | 0]; + t[e + 1 | 0] = w[j | 0]; + i = i + l | 0; + j = (z << i >>> p << 1) + o | 0; + l = w[j + 1 | 0]; + t[d + 1 | 0] = w[j | 0]; + u = g + u | 0; + g = (A << u >>> p << 1) + o | 0; + R = w[g + 1 | 0]; + t[k + 1 | 0] = w[g | 0]; + D = D + M | 0; + g = (N << D >>> p << 1) + o | 0; + M = w[g + 1 | 0]; + t[s + 1 | 0] = w[g | 0]; + h = h + q | 0; + i: { + if ((r | 0) < 10) { + j = r; + break i; + } + j = r - (h >>> 3 | 0) | 0; + g = j + c | 0; + m = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + h = h & 7; + } + i = i + l | 0; + j: { + if ((J | 0) < 4) { + q = J; + break j; + } + q = J - (i >>> 3 | 0) | 0; + g = y + q | 0; + z = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + i = i & 7; + } + l = u + R | 0; + k: { + if ((G | 0) < 4) { + g = l; + l = G; + break k; + } + g = l & 7; + l = G - (l >>> 3 | 0) | 0; + u = C + l | 0; + A = w[u | 0] | w[u + 1 | 0] << 8 | (w[u + 2 | 0] << 16 | w[u + 3 | 0] << 24); + } + D = D + M | 0; + s = s + 2 | 0; + l: { + if (f >>> 0 < S >>> 0) { + u = f; + break l; + } + u = f - (D >>> 3 | 0) | 0; + N = w[u | 0] | w[u + 1 | 0] << 8 | (w[u + 2 | 0] << 16 | w[u + 3 | 0] << 24); + D = D & 7; + } + k = k + 2 | 0; + d = d + 2 | 0; + e = e + 2 | 0; + M = (J | 0) > 3; + R = (G | 0) > 3; + T = (r | 0) > 9; + U = f >>> 0 >= S >>> 0; + r = j; + G = l; + J = q; + f = u; + P = T & (M & R) & P & U; + if (P & s >>> 0 < O >>> 0) { + continue; + } + break; + } + } + v[n + 16 >> 2] = u; + v[n + 12 >> 2] = D; + v[n + 8 >> 2] = N; + if (e >>> 0 > F >>> 0) { + f = -20; + break a; + } + if (d >>> 0 > H >>> 0) { + f = -20; + break a; + } + f = -20; + if (k >>> 0 > I >>> 0) { + break a; + } + m: { + n: { + o: { + p: { + if (h >>> 0 > 32) { + break p; + } + u = F - 3 | 0; + q: { + while (1) { + r: { + if ((j | 0) >= 10) { + m = h >>> 3 | 0; + r = 0; + f = h & 7; + break r; + } + if ((j | 0) == 6) { + f = h; + j = 6; + break q; + } + f = h >>> 3 | 0; + r = (j - f | 0) < 6; + m = r ? j - 6 | 0 : f; + f = h - (m << 3) | 0; + } + j = j - m | 0; + h = j + c | 0; + m = w[h | 0] | w[h + 1 | 0] << 8 | (w[h + 2 | 0] << 16 | w[h + 3 | 0] << 24); + if (!(r | e >>> 0 >= u >>> 0)) { + h = (m << f >>> p << 1) + o | 0; + r = w[h + 1 | 0]; + t[e | 0] = w[h | 0]; + f = f + r | 0; + h = (m << f >>> p << 1) + o | 0; + r = w[h + 1 | 0]; + t[e + 1 | 0] = w[h | 0]; + e = e + 2 | 0; + h = f + r | 0; + if (h >>> 0 <= 32) { + continue; + } + break p; + } + break; + } + if (f >>> 0 <= 32) { + break q; + } + h = f; + break p; + } + h = f; + while (1) { + s: { + if ((j | 0) >= 10) { + m = h >>> 3 | 0; + r = 0; + h = h & 7; + break s; + } + if ((j | 0) == 6) { + j = 6; + break p; + } + f = h >>> 3 | 0; + r = (j - f | 0) < 6; + m = r ? j - 6 | 0 : f; + h = h - (m << 3) | 0; + } + j = j - m | 0; + f = j + c | 0; + m = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + f = e >>> 0 >= F >>> 0; + if (r | f) { + break o; + } + f = (m << h >>> p << 1) + o | 0; + r = w[f + 1 | 0]; + t[e | 0] = w[f | 0]; + e = e + 1 | 0; + h = h + r | 0; + if (h >>> 0 <= 32) { + continue; + } + break; + } + } + if (e >>> 0 < F >>> 0) { + break n; + } + break m; + } + if (f) { + break m; + } + } + c = e + 1 | 0; + if (F - e & 1) { + f = (m << h >>> p << 1) + o | 0; + r = w[f + 1 | 0]; + t[e | 0] = w[f | 0]; + h = h + r | 0; + e = c; + } + if ((c | 0) == (F | 0)) { + break m; + } + while (1) { + c = (m << h >>> p << 1) + o | 0; + f = w[c + 1 | 0]; + t[e | 0] = w[c | 0]; + c = f + h | 0; + f = (m << c >>> p << 1) + o | 0; + h = w[f + 1 | 0]; + t[e + 1 | 0] = w[f | 0]; + h = c + h | 0; + e = e + 2 | 0; + if ((F | 0) != (e | 0)) { + continue; + } + break; + } + } + t: { + u: { + v: { + w: { + x: { + if (i >>> 0 <= 32) { + r = H - 3 | 0; + while (1) { + y: { + if ((q | 0) >= 4) { + f = i >>> 3 | 0; + e = 0; + c = i & 7; + break y; + } + if (!q) { + q = 0; + m = y; + c = i; + break w; + } + c = i >>> 3 | 0; + e = (q + y | 0) - c >>> 0 < y >>> 0; + f = e ? q : c; + c = i - (f << 3) | 0; + } + q = q - f | 0; + m = y + q | 0; + z = w[m | 0] | w[m + 1 | 0] << 8 | (w[m + 2 | 0] << 16 | w[m + 3 | 0] << 24); + if (e | d >>> 0 >= r >>> 0) { + break x; + } + e = (z << c >>> p << 1) + o | 0; + f = w[e + 1 | 0]; + t[d | 0] = w[e | 0]; + c = c + f | 0; + e = (z << c >>> p << 1) + o | 0; + f = w[e + 1 | 0]; + t[d + 1 | 0] = w[e | 0]; + d = d + 2 | 0; + i = c + f | 0; + if (i >>> 0 < 33) { + continue; + } + break; + } + } + m = q + y | 0; + break v; + } + if (c >>> 0 <= 32) { + break w; + } + i = c; + break v; + } + i = c; + while (1) { + z: { + if ((q | 0) >= 4) { + f = i >>> 3 | 0; + e = 0; + i = i & 7; + break z; + } + if (!q) { + break v; + } + c = i >>> 3 | 0; + e = m - c >>> 0 < y >>> 0; + f = e ? q : c; + i = i - (f << 3) | 0; + } + q = q - f | 0; + m = y + q | 0; + z = w[m | 0] | w[m + 1 | 0] << 8 | (w[m + 2 | 0] << 16 | w[m + 3 | 0] << 24); + c = d >>> 0 >= H >>> 0; + if (e ? 1 : c) { + if (c) { + break t; + } + break u; + } + c = (z << i >>> p << 1) + o | 0; + e = w[c + 1 | 0]; + t[d | 0] = w[c | 0]; + d = d + 1 | 0; + i = e + i | 0; + if (i >>> 0 <= 32) { + continue; + } + break; + } + } + if (d >>> 0 >= H >>> 0) { + break t; + } + } + c = d + 1 | 0; + if (H - d & 1) { + e = (z << i >>> p << 1) + o | 0; + f = w[e + 1 | 0]; + t[d | 0] = w[e | 0]; + i = f + i | 0; + d = c; + } + if ((c | 0) == ((L << 1) + a | 0)) { + break t; + } + while (1) { + c = (z << i >>> p << 1) + o | 0; + e = w[c + 1 | 0]; + t[d | 0] = w[c | 0]; + c = e + i | 0; + e = (z << c >>> p << 1) + o | 0; + f = w[e + 1 | 0]; + t[d + 1 | 0] = w[e | 0]; + i = c + f | 0; + d = d + 2 | 0; + if ((H | 0) != (d | 0)) { + continue; + } + break; + } + } + A: { + B: { + C: { + D: { + E: { + if (g >>> 0 <= 32) { + q = I - 3 | 0; + while (1) { + F: { + if ((l | 0) >= 4) { + f = g >>> 3 | 0; + e = 0; + c = g & 7; + break F; + } + if (!l) { + l = 0; + d = C; + c = g; + break D; + } + c = g >>> 3 | 0; + e = (l + C | 0) - c >>> 0 < C >>> 0; + f = e ? l : c; + c = g - (f << 3) | 0; + } + l = l - f | 0; + d = C + l | 0; + A = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + if (e | k >>> 0 >= q >>> 0) { + break E; + } + d = (A << c >>> p << 1) + o | 0; + e = w[d + 1 | 0]; + t[k | 0] = w[d | 0]; + c = c + e | 0; + d = (A << c >>> p << 1) + o | 0; + e = w[d + 1 | 0]; + t[k + 1 | 0] = w[d | 0]; + k = k + 2 | 0; + g = c + e | 0; + if (g >>> 0 < 33) { + continue; + } + break; + } + } + d = l + C | 0; + break C; + } + if (c >>> 0 <= 32) { + break D; + } + g = c; + break C; + } + g = c; + while (1) { + G: { + if ((l | 0) >= 4) { + f = g >>> 3 | 0; + e = 0; + g = g & 7; + break G; + } + if (!l) { + break C; + } + c = g >>> 3 | 0; + e = d - c >>> 0 < C >>> 0; + f = e ? l : c; + g = g - (f << 3) | 0; + } + l = l - f | 0; + d = C + l | 0; + A = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + c = k >>> 0 >= I >>> 0; + if (e ? 1 : c) { + if (c) { + break A; + } + break B; + } + c = (A << g >>> p << 1) + o | 0; + e = w[c + 1 | 0]; + t[k | 0] = w[c | 0]; + k = k + 1 | 0; + g = e + g | 0; + if (g >>> 0 <= 32) { + continue; + } + break; + } + } + if (k >>> 0 >= I >>> 0) { + break A; + } + } + c = k + 1 | 0; + if (I - k & 1) { + e = (A << g >>> p << 1) + o | 0; + f = w[e + 1 | 0]; + t[k | 0] = w[e | 0]; + k = c; + g = f + g | 0; + } + if ((c | 0) == (B(L, 3) + a | 0)) { + break A; + } + while (1) { + a = (A << g >>> p << 1) + o | 0; + c = w[a + 1 | 0]; + t[k | 0] = w[a | 0]; + a = c + g | 0; + c = (A << a >>> p << 1) + o | 0; + e = w[c + 1 | 0]; + t[k + 1 | 0] = w[c | 0]; + g = a + e | 0; + k = k + 2 | 0; + if ((I | 0) != (k | 0)) { + continue; + } + break; + } + } + c = v[n + 12 >> 2]; + H: { + I: { + J: { + if (c >>> 0 > 32) { + break J; + } + K: { + while (1) { + e = n; + G = e; + f = v[e + 16 >> 2]; + q = v[e + 24 >> 2]; + L: { + if (f >>> 0 >= q >>> 0) { + f = f - (c >>> 3 | 0) | 0; + v[n + 16 >> 2] = f; + a = 0; + c = c & 7; + break L; + } + k = v[n + 20 >> 2]; + a = f; + if ((k | 0) == (f | 0)) { + break K; + } + l = c >>> 3 | 0; + a = k >>> 0 > f - l >>> 0; + k = a ? f - k | 0 : l; + f = f - k | 0; + v[n + 16 >> 2] = f; + c = c - (k << 3) | 0; + } + v[G + 12 >> 2] = c; + e = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + v[n + 8 >> 2] = e; + if (!(a | s >>> 0 >= O >>> 0)) { + a = (e << c >>> p << 1) + o | 0; + f = w[a + 1 | 0]; + t[s | 0] = w[a | 0]; + a = c + f | 0; + c = (e << a >>> p << 1) + o | 0; + e = w[c | 0]; + c = a + w[c + 1 | 0] | 0; + v[n + 12 >> 2] = c; + t[s + 1 | 0] = e; + s = s + 2 | 0; + if (c >>> 0 <= 32) { + continue; + } + break J; + } + break; + } + if (c >>> 0 > 32) { + break J; + } + a = v[n + 20 >> 2]; + } + k = a; + while (1) { + e = n; + M: { + if (f >>> 0 >= q >>> 0) { + f = f - (c >>> 3 | 0) | 0; + v[n + 16 >> 2] = f; + a = 0; + c = c & 7; + break M; + } + if ((f | 0) == (k | 0)) { + break J; + } + l = c >>> 3 | 0; + a = k >>> 0 > f - l >>> 0; + l = a ? f - k | 0 : l; + f = f - l | 0; + v[n + 16 >> 2] = f; + c = c - (l << 3) | 0; + } + v[e + 12 >> 2] = c; + e = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + v[n + 8 >> 2] = e; + l = s >>> 0 >= K >>> 0; + if (a ? 1 : l) { + if (l) { + break H; + } + break I; + } + a = (e << c >>> p << 1) + o | 0; + e = w[a | 0]; + c = w[a + 1 | 0] + c | 0; + v[n + 12 >> 2] = c; + t[s | 0] = e; + s = s + 1 | 0; + if (c >>> 0 <= 32) { + continue; + } + break; + } + } + if (s >>> 0 >= K >>> 0) { + break H; + } + e = v[n + 8 >> 2]; + } + a = (e << c >>> p << 1) + o | 0; + e = w[a | 0]; + v[n + 12 >> 2] = w[a + 1 | 0] + c; + t[s | 0] = e; + if ((K - s | 0) == 1) { + break H; + } + a = K - 2 | 0; + if ((s ^ -1) + K & 1) { + c = v[n + 12 >> 2]; + e = (v[n + 8 >> 2] << c >>> p << 1) + o | 0; + f = w[e | 0]; + v[n + 12 >> 2] = c + w[e + 1 | 0]; + t[s + 1 | 0] = f; + c = s + 2 | 0; + } else { + c = s + 1 | 0; + } + if ((a | 0) == (s | 0)) { + break H; + } + while (1) { + a = v[n + 12 >> 2]; + e = (v[n + 8 >> 2] << a >>> p << 1) + o | 0; + f = w[e | 0]; + v[n + 12 >> 2] = a + w[e + 1 | 0]; + t[c | 0] = f; + a = v[n + 12 >> 2]; + e = (v[n + 8 >> 2] << a >>> p << 1) + o | 0; + f = w[e | 0]; + v[n + 12 >> 2] = a + w[e + 1 | 0]; + t[c + 1 | 0] = f; + c = c + 2 | 0; + if ((K | 0) != (c | 0)) { + continue; + } + break; + } + } + f = (j | 0) == 6 ? (h | 0) == 32 ? (m | 0) == (y | 0) ? (i | 0) == 32 ? (d | 0) == (C | 0) ? (g | 0) == 32 ? v[n + 16 >> 2] == v[n + 20 >> 2] ? v[n + 12 >> 2] == 32 ? b : -20 : -20 : -20 : -20 : -20 : -20 : -20 : -20; + } + Q = n + 32 | 0; + return f; + } + function ia(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0, + x = 0, + y = 0, + z = 0, + A = 0, + C = 0, + D = 0, + E = 0, + F = 0, + G = 0, + H = 0, + I = 0; + h = Q - 144 | 0; + Q = h; + f = -44; + a: { + if (e >>> 0 < 1500) { + break a; + } + e = v[a >> 2]; + m = _(d + 624 | 0, 0, 108); + s = e & 255; + if (s >>> 0 > 12) { + break a; + } + k = d + 1244 | 0; + D = na(k, m, h + 8 | 0, h + 12 | 0, b, c); + if (D >>> 0 <= 4294967176) { + q = v[h + 12 >> 2]; + if (q >>> 0 > s >>> 0) { + break a; + } + z = d + 732 | 0; + G = d + 676 | 0; + A = a + 4 | 0; + H = e & -16777216; + c = d + 680 | 0; + b = q; + while (1) { + e = b; + b = b - 1 | 0; + if (!v[m + (e << 2) >> 2]) { + continue; + } + break; + } + b = 1; + o = e + 1 | 0; + b: { + if (o >>> 0 < 2) { + break b; + } + i = e & 3; + if (e - 1 >>> 0 >= 3) { + f = e & -4; + while (1) { + g = b << 2; + l = v[g + m >> 2]; + v[c + g >> 2] = p; + n = g + 4 | 0; + r = v[n + m >> 2]; + p = l + p | 0; + v[c + n >> 2] = p; + l = g + 8 | 0; + n = v[l + m >> 2]; + p = p + r | 0; + v[c + l >> 2] = p; + g = g + 12 | 0; + l = v[g + m >> 2]; + j = c + g | 0; + g = p + n | 0; + v[j >> 2] = g; + p = g + l | 0; + b = b + 4 | 0; + f = f - 4 | 0; + if (f) { + continue; + } + break; + } + } + if (!i) { + break b; + } + while (1) { + f = b << 2; + g = v[f + m >> 2]; + v[c + f >> 2] = p; + b = b + 1 | 0; + p = g + p | 0; + i = i - 1 | 0; + if (i) { + continue; + } + break; + } + } + v[c >> 2] = p; + f = v[h + 8 >> 2]; + c: { + if (!f) { + break c; + } + b = 0; + if ((f | 0) != 1) { + g = f & -2; + while (1) { + l = w[b + k | 0]; + n = c + (l << 2) | 0; + i = v[n >> 2]; + v[n >> 2] = i + 1; + i = (i << 1) + z | 0; + t[i + 1 | 0] = l; + t[i | 0] = b; + l = b | 1; + n = w[l + k | 0]; + r = c + (n << 2) | 0; + i = v[r >> 2]; + v[r >> 2] = i + 1; + i = (i << 1) + z | 0; + t[i + 1 | 0] = n; + t[i | 0] = l; + b = b + 2 | 0; + g = g - 2 | 0; + if (g) { + continue; + } + break; + } + } + if (!(f & 1)) { + break c; + } + f = w[b + k | 0]; + g = c + (f << 2) | 0; + c = v[g >> 2]; + v[g >> 2] = c + 1; + c = (c << 1) + z | 0; + t[c + 1 | 0] = f; + t[c | 0] = b; + } + c = 0; + v[d + 680 >> 2] = 0; + d: { + if (o >>> 0 >= 2) { + b = 1; + n = e - 1 | 0; + if (n) { + f = (q ^ -1) + s | 0; + k = e & -2; + while (1) { + g = b << 2; + i = v[g + m >> 2]; + v[d + g >> 2] = c; + g = b + 1 | 0; + l = g << 2; + r = v[l + m >> 2]; + c = (i << b + f) + c | 0; + v[d + l >> 2] = c; + c = c + (r << f + g) | 0; + b = b + 2 | 0; + k = k - 2 | 0; + if (k) { + continue; + } + break; + } + } + if (e & 1) { + v[(b << 2) + d >> 2] = c; + } + l = q + 1 | 0; + q = l - e | 0; + i = (s - q | 0) + 1 | 0; + if (o >>> 0 < 2 | i >>> 0 <= q >>> 0) { + break d; + } + c = e & -4; + k = e & 3; + e = q; + while (1) { + f = 1; + g = c; + if (n >>> 0 >= 3) { + while (1) { + m = B(e, 52) + d | 0; + b = f << 2; + v[m + b >> 2] = v[b + d >> 2] >>> e; + o = b + 4 | 0; + v[o + m >> 2] = v[d + o >> 2] >>> e; + o = b + 8 | 0; + v[o + m >> 2] = v[d + o >> 2] >>> e; + b = b + 12 | 0; + v[b + m >> 2] = v[b + d >> 2] >>> e; + f = f + 4 | 0; + g = g - 4 | 0; + if (g) { + continue; + } + break; + } + } + b = k; + if (b) { + while (1) { + g = f << 2; + v[g + (B(e, 52) + d | 0) >> 2] = v[d + g >> 2] >>> e; + f = f + 1 | 0; + b = b - 1 | 0; + if (b) { + continue; + } + break; + } + } + e = e + 1 | 0; + if (i >>> 0 > e >>> 0) { + continue; + } + break; + } + break d; + } + l = q + 1 | 0; + q = l - e | 0; + } + v[h - -64 >> 2] = v[d + 48 >> 2]; + b = v[d + 44 >> 2]; + v[h + 56 >> 2] = v[d + 40 >> 2]; + v[h + 60 >> 2] = b; + b = v[d + 36 >> 2]; + v[h + 48 >> 2] = v[d + 32 >> 2]; + v[h + 52 >> 2] = b; + b = v[d + 28 >> 2]; + v[h + 40 >> 2] = v[d + 24 >> 2]; + v[h + 44 >> 2] = b; + b = v[d + 20 >> 2]; + v[h + 32 >> 2] = v[d + 16 >> 2]; + v[h + 36 >> 2] = b; + b = v[d + 4 >> 2]; + v[h + 16 >> 2] = v[d >> 2]; + v[h + 20 >> 2] = b; + b = v[d + 12 >> 2]; + v[h + 24 >> 2] = v[d + 8 >> 2]; + v[h + 28 >> 2] = b; + if (p) { + I = l - s | 0; + n = 0; + while (1) { + b = (n << 1) + z | 0; + c = w[b + 1 | 0]; + m = l - c | 0; + o = s - m | 0; + r = 1 << o; + C = w[b | 0]; + E = (h + 16 | 0) + (c << 2) | 0; + k = v[E >> 2]; + e: { + if (o >>> 0 >= q >>> 0) { + c = m + I | 0; + e = ((c | 0) > 1 ? c : 1) << 2; + x = v[e + G >> 2]; + b = B(m, 52) + d | 0; + v[h + 128 >> 2] = v[b + 48 >> 2]; + f = v[b + 44 >> 2]; + v[h + 120 >> 2] = v[b + 40 >> 2]; + v[h + 124 >> 2] = f; + f = v[b + 36 >> 2]; + v[h + 112 >> 2] = v[b + 32 >> 2]; + v[h + 116 >> 2] = f; + f = v[b + 28 >> 2]; + v[h + 104 >> 2] = v[b + 24 >> 2]; + v[h + 108 >> 2] = f; + f = v[b + 20 >> 2]; + v[h + 96 >> 2] = v[b + 16 >> 2]; + v[h + 100 >> 2] = f; + f = v[b + 12 >> 2]; + v[h + 88 >> 2] = v[b + 8 >> 2]; + v[h + 92 >> 2] = f; + f = v[b + 4 >> 2]; + v[h + 80 >> 2] = v[b >> 2]; + v[h + 84 >> 2] = f; + F = p - x | 0; + f = (k << 2) + A | 0; + f: { + if ((c | 0) < 2) { + break f; + } + e = v[e + (h + 80 | 0) >> 2]; + if (!e) { + break f; + } + b = m << 16 & 16711680 | C | 16777216; + g = e & 7; + c = 0; + if (e - 1 >>> 0 >= 7) { + i = e & -8; + while (1) { + e = c << 2; + j = e + f | 0; + u[j >> 1] = b; + y = b >>> 16 | 0; + u[j + 2 >> 1] = y; + j = f + (e | 4) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + j = f + (e | 8) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + j = f + (e | 12) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + j = f + (e | 16) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + j = f + (e | 20) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + j = f + (e | 24) | 0; + u[j >> 1] = b; + u[j + 2 >> 1] = y; + e = f + (e | 28) | 0; + u[e >> 1] = b; + u[e + 2 >> 1] = y; + c = c + 8 | 0; + i = i - 8 | 0; + if (i) { + continue; + } + break; + } + } + if (!g) { + break f; + } + while (1) { + e = f + (c << 2) | 0; + u[e >> 1] = b; + u[e + 2 >> 1] = b >>> 16; + c = c + 1 | 0; + g = g - 1 | 0; + if (g) { + continue; + } + break; + } + } + if (F) { + i = (x << 1) + z | 0; + g = 0; + while (1) { + x = i + (g << 1) | 0; + c = w[x + 1 | 0]; + b = l - c | 0; + j = (h + 80 | 0) + (c << 2) | 0; + e = v[j >> 2]; + c = e + (1 << o - b) | 0; + b = b + m << 16 & 16711680 | (w[x | 0] << 8 | C) | 33554432; + while (1) { + x = f + (e << 2) | 0; + u[x >> 1] = b; + u[x + 2 >> 1] = b >>> 16; + e = e + 1 | 0; + if (c >>> 0 > e >>> 0) { + continue; + } + break; + } + v[j >> 2] = c; + g = g + 1 | 0; + if ((F | 0) != (g | 0)) { + continue; + } + break; + } + } + b = k + r | 0; + break e; + } + b = k + r | 0; + if (k >>> 0 >= b >>> 0) { + break e; + } + c = m << 16 & 16711680 | C | 16777216; + if (o >>> 0 <= 2) { + f = r & 7; + while (1) { + e = (k << 2) + A | 0; + u[e >> 1] = c; + u[e + 2 >> 1] = c >>> 16; + k = k + 1 | 0; + f = f - 1 | 0; + if (f) { + continue; + } + break; + } + } + if (o >>> 0 < 3) { + break e; + } + while (1) { + e = (k << 2) + A | 0; + u[e >> 1] = c; + f = c >>> 16 | 0; + u[e + 2 >> 1] = f; + u[e + 28 >> 1] = c; + u[e + 30 >> 1] = f; + u[e + 24 >> 1] = c; + u[e + 26 >> 1] = f; + u[e + 20 >> 1] = c; + u[e + 22 >> 1] = f; + u[e + 16 >> 1] = c; + u[e + 18 >> 1] = f; + u[e + 12 >> 1] = c; + u[e + 14 >> 1] = f; + u[e + 8 >> 1] = c; + u[e + 10 >> 1] = f; + u[e + 4 >> 1] = c; + u[e + 6 >> 1] = f; + k = k + 8 | 0; + if ((k | 0) != (b | 0)) { + continue; + } + break; + } + } + v[E >> 2] = b; + n = n + 1 | 0; + if ((p | 0) != (n | 0)) { + continue; + } + break; + } + } + v[a >> 2] = s << 16 | H | s | 256; + } + f = D; + } + Q = h + 144 | 0; + return f; + } + function ha(a, b, c, d, e, f, g, h) { + var i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0; + n = -70; + l = v[c + 4 >> 2]; + j = v[c >> 2]; + p = l + j | 0; + a: { + if (p >>> 0 > b - a >>> 0) { + break a; + } + n = -20; + i = v[d >> 2]; + if (j >>> 0 > e - i >>> 0) { + break a; + } + e = b - 32 | 0; + q = i + j | 0; + b = a + j | 0; + o = v[c + 8 >> 2]; + b: { + if ((j | 0) <= 7) { + if ((j | 0) <= 0) { + break b; + } + while (1) { + t[a | 0] = w[i | 0]; + i = i + 1 | 0; + a = a + 1 | 0; + if (b >>> 0 > a >>> 0) { + continue; + } + break; + } + break b; + } + if (b >>> 0 <= e >>> 0) { + while (1) { + j = w[i + 4 | 0] | w[i + 5 | 0] << 8 | (w[i + 6 | 0] << 16 | w[i + 7 | 0] << 24); + k = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + t[a | 0] = k; + t[a + 1 | 0] = k >>> 8; + t[a + 2 | 0] = k >>> 16; + t[a + 3 | 0] = k >>> 24; + t[a + 4 | 0] = j; + t[a + 5 | 0] = j >>> 8; + t[a + 6 | 0] = j >>> 16; + t[a + 7 | 0] = j >>> 24; + j = w[i + 12 | 0] | w[i + 13 | 0] << 8 | (w[i + 14 | 0] << 16 | w[i + 15 | 0] << 24); + k = w[i + 8 | 0] | w[i + 9 | 0] << 8 | (w[i + 10 | 0] << 16 | w[i + 11 | 0] << 24); + t[a + 8 | 0] = k; + t[a + 9 | 0] = k >>> 8; + t[a + 10 | 0] = k >>> 16; + t[a + 11 | 0] = k >>> 24; + t[a + 12 | 0] = j; + t[a + 13 | 0] = j >>> 8; + t[a + 14 | 0] = j >>> 16; + t[a + 15 | 0] = j >>> 24; + i = i + 16 | 0; + a = a + 16 | 0; + if (b >>> 0 > a >>> 0) { + continue; + } + break b; + } + } + if (a >>> 0 <= e >>> 0) { + r = e - a | 0; + j = i; + while (1) { + k = w[j + 4 | 0] | w[j + 5 | 0] << 8 | (w[j + 6 | 0] << 16 | w[j + 7 | 0] << 24); + m = w[j | 0] | w[j + 1 | 0] << 8 | (w[j + 2 | 0] << 16 | w[j + 3 | 0] << 24); + t[a | 0] = m; + t[a + 1 | 0] = m >>> 8; + t[a + 2 | 0] = m >>> 16; + t[a + 3 | 0] = m >>> 24; + t[a + 4 | 0] = k; + t[a + 5 | 0] = k >>> 8; + t[a + 6 | 0] = k >>> 16; + t[a + 7 | 0] = k >>> 24; + k = w[j + 12 | 0] | w[j + 13 | 0] << 8 | (w[j + 14 | 0] << 16 | w[j + 15 | 0] << 24); + m = w[j + 8 | 0] | w[j + 9 | 0] << 8 | (w[j + 10 | 0] << 16 | w[j + 11 | 0] << 24); + t[a + 8 | 0] = m; + t[a + 9 | 0] = m >>> 8; + t[a + 10 | 0] = m >>> 16; + t[a + 11 | 0] = m >>> 24; + t[a + 12 | 0] = k; + t[a + 13 | 0] = k >>> 8; + t[a + 14 | 0] = k >>> 16; + t[a + 15 | 0] = k >>> 24; + j = j + 16 | 0; + a = a + 16 | 0; + if (e >>> 0 > a >>> 0) { + continue; + } + break; + } + i = i + r | 0; + a = e; + } + if (a >>> 0 >= b >>> 0) { + break b; + } + while (1) { + t[a | 0] = w[i | 0]; + i = i + 1 | 0; + a = a + 1 | 0; + if (b >>> 0 > a >>> 0) { + continue; + } + break; + } + } + a = b - o | 0; + v[d >> 2] = q; + c: { + d: { + if (b - f >>> 0 < o >>> 0) { + if (b - g >>> 0 < o >>> 0) { + break a; + } + a = a - f | 0; + d = a + h | 0; + if (d + l >>> 0 <= h >>> 0) { + Z(b, d, l); + break c; + } + b = Z(b, d, 0 - a | 0); + l = a + l | 0; + v[c + 4 >> 2] = l; + b = b - a | 0; + break d; + } + f = a; + } + c = b + l | 0; + if ((l | 0) <= 7) { + if ((l | 0) <= 0) { + break c; + } + while (1) { + t[b | 0] = w[f | 0]; + f = f + 1 | 0; + b = b + 1 | 0; + if (c >>> 0 > b >>> 0) { + continue; + } + break; + } + break c; + } + a = b - f | 0; + e: { + if (a >>> 0 <= 7) { + t[b | 0] = w[f | 0]; + t[b + 1 | 0] = w[f + 1 | 0]; + t[b + 2 | 0] = w[f + 2 | 0]; + t[b + 3 | 0] = w[f + 3 | 0]; + d = f; + f = a << 2; + a = d + v[f + 4752 >> 2] | 0; + d = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + t[b + 4 | 0] = d; + t[b + 5 | 0] = d >>> 8; + t[b + 6 | 0] = d >>> 16; + t[b + 7 | 0] = d >>> 24; + f = a - v[f + 4784 >> 2] | 0; + break e; + } + a = w[f + 4 | 0] | w[f + 5 | 0] << 8 | (w[f + 6 | 0] << 16 | w[f + 7 | 0] << 24); + d = w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24); + t[b | 0] = d; + t[b + 1 | 0] = d >>> 8; + t[b + 2 | 0] = d >>> 16; + t[b + 3 | 0] = d >>> 24; + t[b + 4 | 0] = a; + t[b + 5 | 0] = a >>> 8; + t[b + 6 | 0] = a >>> 16; + t[b + 7 | 0] = a >>> 24; + } + a = b + 8 | 0; + i = f + 8 | 0; + if (c >>> 0 <= e >>> 0) { + d = a + l | 0; + if ((a - i | 0) <= 15) { + while (1) { + b = w[i + 4 | 0] | w[i + 5 | 0] << 8 | (w[i + 6 | 0] << 16 | w[i + 7 | 0] << 24); + c = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + t[a | 0] = c; + t[a + 1 | 0] = c >>> 8; + t[a + 2 | 0] = c >>> 16; + t[a + 3 | 0] = c >>> 24; + t[a + 4 | 0] = b; + t[a + 5 | 0] = b >>> 8; + t[a + 6 | 0] = b >>> 16; + t[a + 7 | 0] = b >>> 24; + i = i + 8 | 0; + a = a + 8 | 0; + if (d >>> 0 > a >>> 0) { + continue; + } + break c; + } + } + while (1) { + b = w[i + 4 | 0] | w[i + 5 | 0] << 8 | (w[i + 6 | 0] << 16 | w[i + 7 | 0] << 24); + c = w[i | 0] | w[i + 1 | 0] << 8 | (w[i + 2 | 0] << 16 | w[i + 3 | 0] << 24); + t[a | 0] = c; + t[a + 1 | 0] = c >>> 8; + t[a + 2 | 0] = c >>> 16; + t[a + 3 | 0] = c >>> 24; + t[a + 4 | 0] = b; + t[a + 5 | 0] = b >>> 8; + t[a + 6 | 0] = b >>> 16; + t[a + 7 | 0] = b >>> 24; + b = w[i + 12 | 0] | w[i + 13 | 0] << 8 | (w[i + 14 | 0] << 16 | w[i + 15 | 0] << 24); + c = w[i + 8 | 0] | w[i + 9 | 0] << 8 | (w[i + 10 | 0] << 16 | w[i + 11 | 0] << 24); + t[a + 8 | 0] = c; + t[a + 9 | 0] = c >>> 8; + t[a + 10 | 0] = c >>> 16; + t[a + 11 | 0] = c >>> 24; + t[a + 12 | 0] = b; + t[a + 13 | 0] = b >>> 8; + t[a + 14 | 0] = b >>> 16; + t[a + 15 | 0] = b >>> 24; + i = i + 16 | 0; + a = a + 16 | 0; + if (d >>> 0 > a >>> 0) { + continue; + } + break; + } + break c; + } + f: { + if (a >>> 0 > e >>> 0) { + e = a; + break f; + } + g = e - a | 0; + g: { + if ((a - i | 0) <= 15) { + b = i; + while (1) { + d = w[b + 4 | 0] | w[b + 5 | 0] << 8 | (w[b + 6 | 0] << 16 | w[b + 7 | 0] << 24); + f = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + t[a | 0] = f; + t[a + 1 | 0] = f >>> 8; + t[a + 2 | 0] = f >>> 16; + t[a + 3 | 0] = f >>> 24; + t[a + 4 | 0] = d; + t[a + 5 | 0] = d >>> 8; + t[a + 6 | 0] = d >>> 16; + t[a + 7 | 0] = d >>> 24; + b = b + 8 | 0; + a = a + 8 | 0; + if (e >>> 0 > a >>> 0) { + continue; + } + break; + } + break g; + } + b = i; + while (1) { + d = w[b + 4 | 0] | w[b + 5 | 0] << 8 | (w[b + 6 | 0] << 16 | w[b + 7 | 0] << 24); + f = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + t[a | 0] = f; + t[a + 1 | 0] = f >>> 8; + t[a + 2 | 0] = f >>> 16; + t[a + 3 | 0] = f >>> 24; + t[a + 4 | 0] = d; + t[a + 5 | 0] = d >>> 8; + t[a + 6 | 0] = d >>> 16; + t[a + 7 | 0] = d >>> 24; + d = w[b + 12 | 0] | w[b + 13 | 0] << 8 | (w[b + 14 | 0] << 16 | w[b + 15 | 0] << 24); + f = w[b + 8 | 0] | w[b + 9 | 0] << 8 | (w[b + 10 | 0] << 16 | w[b + 11 | 0] << 24); + t[a + 8 | 0] = f; + t[a + 9 | 0] = f >>> 8; + t[a + 10 | 0] = f >>> 16; + t[a + 11 | 0] = f >>> 24; + t[a + 12 | 0] = d; + t[a + 13 | 0] = d >>> 8; + t[a + 14 | 0] = d >>> 16; + t[a + 15 | 0] = d >>> 24; + b = b + 16 | 0; + a = a + 16 | 0; + if (e >>> 0 > a >>> 0) { + continue; + } + break; + } + } + i = g + i | 0; + } + if (c >>> 0 <= e >>> 0) { + break c; + } + while (1) { + t[e | 0] = w[i | 0]; + i = i + 1 | 0; + e = e + 1 | 0; + if (c >>> 0 > e >>> 0) { + continue; + } + break; + } + } + n = p; + } + return n; + } + function ca(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0; + h = v[a + 28804 >> 2]; + g = v[a + 28744 >> 2]; + a: { + if (h - 3 >>> 0 >= 2) { + break a; + } + g = v[a + 28744 >> 2]; + if (v[a + 28800 >> 2]) { + break a; + } + f = e >>> 0 > 1 ? e : 1; + g = v[a + 28744 >> 2]; + g = f >>> 0 < g >>> 0 ? f : g; + } + f = -72; + b: { + c: { + d: { + if ((e | 0) != (g | 0)) { + break d; + } + e: { + if (!c) { + break e; + } + f = v[a + 28728 >> 2]; + if ((f | 0) == (b | 0)) { + break e; + } + v[a + 28740 >> 2] = f; + v[a + 28728 >> 2] = b; + g = v[a + 28732 >> 2]; + v[a + 28732 >> 2] = b; + v[a + 28736 >> 2] = (g - f | 0) + b; + } + f = -1; + f: { + g: { + h: { + i: { + j: { + switch (h | 0) { + case 0: + f = 1; + k: { + if (v[a + 28908 >> 2]) { + break k; + } + f = 5; + if (((w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24)) & -16) != 407710288) { + break k; + } + X(a + 160144 | 0, d, e); + v[a + 28804 >> 2] = 6; + v[a + 28744 >> 2] = 8 - e; + break b; + } + if (e >>> 0 < f >>> 0) { + v[a + 28904 >> 2] = -72; + return -72; + } + b = w[(d + f | 0) - 1 | 0]; + c = b & 32; + f = (!c + (v[(b >>> 4 & 12) + 4736 >> 2] + (v[((b & 3) << 2) + 4720 >> 2] + f | 0) | 0) | 0) + (c >>> 5 & b >>> 0 < 64) | 0; + v[a + 28904 >> 2] = f; + if (f >>> 0 > 4294967176) { + break d; + } + X(a + 160144 | 0, d, e); + v[a + 28804 >> 2] = 1; + v[a + 28744 >> 2] = f - e; + break b; + case 1: + b = a + 160144 | 0; + X(b + (v[a + 28904 >> 2] - e | 0) | 0, d, e); + b = aa(a + 28752 | 0, b, v[a + 28904 >> 2], v[a + 28908 >> 2]); + if (b >>> 0 > 4294967176) { + return b; + } + f = -72; + if (b) { + break d; + } + b = v[a + 28780 >> 2]; + if (b) { + f = -32; + if ((b | 0) != v[a + 28952 >> 2]) { + break d; + } + } + if (v[a + 28784 >> 2]) { + v[a + 28816 >> 2] = 0; + v[a + 28820 >> 2] = 0; + b = a + 28856 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + b = a + 28848 | 0; + v[b >> 2] = 2048144761; + v[b + 4 >> 2] = 1640531534; + b = a + 28840 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + b = a + 28832 | 0; + v[b >> 2] = 668265295; + v[b + 4 >> 2] = -1028477379; + b = a + 28824 | 0; + v[b >> 2] = -1379879466; + v[b + 4 >> 2] = 1625958382; + b = a + 28864 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + b = a + 28872 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + b = a + 28880 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + b = a + 28888 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + } + break c; + case 2: + c = w[d | 0] | w[d + 1 | 0] << 8; + e = c & 1; + d = c | w[d + 2 | 0] << 16; + b = d >>> 3 | 0; + f = -20; + l: { + m: { + n: { + o: { + c = c >>> 1 & 3; + switch (c - 1 | 0) { + case 0: + break o; + case 2: + break d; + default: + break n; + } + } + if (!v[a + 28768 >> 2]) { + break d; + } + v[a + 28932 >> 2] = b; + v[a + 28800 >> 2] = 1; + v[a + 28744 >> 2] = 1; + break m; + } + if (b >>> 0 > y[a + 28768 >> 2]) { + break d; + } + v[a + 28932 >> 2] = b; + v[a + 28800 >> 2] = c; + v[a + 28744 >> 2] = b; + if (d >>> 0 < 8) { + break l; + } + } + v[a + 28804 >> 2] = e ? 4 : 3; + break b; + } + if (e) { + if (!v[a + 28784 >> 2]) { + break i; + } + v[a + 28804 >> 2] = 5; + v[a + 28744 >> 2] = 4; + break b; + } + break c; + case 3: + case 4: + f = -20; + p: { + q: { + switch (v[a + 28800 >> 2]) { + case 2: + f = qa(a, b, c, d, e); + break p; + case 0: + if (!b) { + f = -74; + if (e) { + break d; + } + break g; + } + f = -70; + if (c >>> 0 < e >>> 0) { + break d; + } + X(b, d, e); + if (e >>> 0 <= 4294967176) { + break g; + } + return e; + case 1: + break q; + default: + break d; + } + } + e = v[a + 28932 >> 2]; + f = e ? -74 : 0; + if (!b) { + break p; + } + f = -70; + if (c >>> 0 < e >>> 0) { + break p; + } + _(b, w[d | 0], e); + f = e; + } + g = 0; + v[a + 28744 >> 2] = 0; + if (f >>> 0 > 4294967176) { + break d; + } + break f; + case 6: + break h; + case 7: + break i; + case 5: + break j; + default: + break d; + } + } + f = -22; + if ((w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24)) != (oa(a + 28816 | 0) | 0)) { + break d; + } + } + f = 0; + v[a + 28804 >> 2] = 0; + v[a + 28744 >> 2] = 0; + break d; + } + X((a - e | 0) + 160152 | 0, d, e); + v[a + 28804 >> 2] = 7; + b = a; + a = a + 160148 | 0; + v[b + 28744 >> 2] = w[a | 0] | w[a + 1 | 0] << 8 | (w[a + 2 | 0] << 16 | w[a + 3 | 0] << 24); + break b; + } + g = v[a + 28744 >> 2] - e | 0; + v[a + 28744 >> 2] = g; + f = e; + } + c = f; + if (c >>> 0 > y[a + 28768 >> 2]) { + return -20; + } + f = v[a + 28796 >> 2]; + e = c; + h = e + v[a + 28792 >> 2] | 0; + f = h >>> 0 < e >>> 0 ? f + 1 | 0 : f; + v[a + 28792 >> 2] = h; + v[a + 28796 >> 2] = f; + if (v[a + 28784 >> 2]) { + pa(a + 28816 | 0, b, c); + g = v[a + 28744 >> 2]; + } + v[a + 28728 >> 2] = b + c; + if (g) { + return c; + } + if (v[a + 28804 >> 2] == 4) { + b = v[a + 28756 >> 2]; + d = b; + e = v[a + 28752 >> 2]; + if ((e | 0) != -1 | (b | 0) != -1) { + f = -20; + if ((e | 0) != v[a + 28792 >> 2] | (d | 0) != v[a + 28796 >> 2]) { + break d; + } + } + if (v[a + 28784 >> 2]) { + v[a + 28804 >> 2] = 5; + v[a + 28744 >> 2] = 4; + return c; + } + v[a + 28804 >> 2] = 0; + v[a + 28744 >> 2] = 0; + return c; + } + v[a + 28744 >> 2] = 3; + v[a + 28804 >> 2] = 2; + return c; + } + return f; + } + v[a + 28804 >> 2] = 2; + v[a + 28744 >> 2] = 3; + } + return 0; + } + function pa(a, b, c) { + var d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0; + e = v[a + 4 >> 2]; + h = c + v[a >> 2] | 0; + v[a >> 2] = h; + v[a + 4 >> 2] = c >>> 0 > h >>> 0 ? e + 1 | 0 : e; + d = v[a + 72 >> 2]; + f = d + c | 0; + a: { + b: { + if (f >>> 0 <= 31) { + if (!b) { + break b; + } + X((a + d | 0) + 40 | 0, b, c); + f = v[a + 72 >> 2] + c | 0; + break b; + } + j = b + c | 0; + if (d) { + X(d + (a + 40 | 0) | 0, b, 32 - d | 0); + h = v[a + 72 >> 2]; + v[a + 72 >> 2] = 0; + f = v[a + 12 >> 2]; + c = v[a + 8 >> 2]; + i = Ga(w[a + 40 | 0] | w[a + 41 | 0] << 8 | (w[a + 42 | 0] << 16 | w[a + 43 | 0] << 24), w[a + 44 | 0] | w[a + 45 | 0] << 8 | (w[a + 46 | 0] << 16 | w[a + 47 | 0] << 24), 668265295, -1028477379); + d = c + i | 0; + e = R + f | 0; + v[a + 8 >> 2] = Ga(Ha(d, d >>> 0 < i >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + v[a + 12 >> 2] = R; + d = v[a + 20 >> 2]; + c = v[a + 16 >> 2]; + e = Ga(w[a + 48 | 0] | w[a + 49 | 0] << 8 | (w[a + 50 | 0] << 16 | w[a + 51 | 0] << 24), w[a + 52 | 0] | w[a + 53 | 0] << 8 | (w[a + 54 | 0] << 16 | w[a + 55 | 0] << 24), 668265295, -1028477379); + f = c + e | 0; + d = R + d | 0; + v[a + 16 >> 2] = Ga(Ha(f, e >>> 0 > f >>> 0 ? d + 1 | 0 : d, 31), R, -2048144761, -1640531535); + v[a + 20 >> 2] = R; + d = v[a + 28 >> 2]; + c = v[a + 24 >> 2]; + e = Ga(w[a + 56 | 0] | w[a + 57 | 0] << 8 | (w[a + 58 | 0] << 16 | w[a + 59 | 0] << 24), w[a + 60 | 0] | w[a + 61 | 0] << 8 | (w[a + 62 | 0] << 16 | w[a + 63 | 0] << 24), 668265295, -1028477379); + f = c + e | 0; + d = R + d | 0; + v[a + 24 >> 2] = Ga(Ha(f, e >>> 0 > f >>> 0 ? d + 1 | 0 : d, 31), R, -2048144761, -1640531535); + v[a + 28 >> 2] = R; + f = v[a + 36 >> 2]; + c = v[a + 32 >> 2]; + d = a - -64 | 0; + i = Ga(w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24), w[d + 4 | 0] | w[d + 5 | 0] << 8 | (w[d + 6 | 0] << 16 | w[d + 7 | 0] << 24), 668265295, -1028477379); + d = c + i | 0; + e = R + f | 0; + v[a + 32 >> 2] = Ga(Ha(d, d >>> 0 < i >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + v[a + 36 >> 2] = R; + b = (b - h | 0) + 32 | 0; + } + if (j >>> 0 >= b + 32 >>> 0) { + n = j - 32 | 0; + c = v[a + 32 >> 2]; + i = v[a + 36 >> 2]; + d = v[a + 24 >> 2]; + k = v[a + 28 >> 2]; + f = v[a + 16 >> 2]; + l = v[a + 20 >> 2]; + h = v[a + 8 >> 2]; + m = v[a + 12 >> 2]; + while (1) { + g = Ga(w[b + 24 | 0] | w[b + 25 | 0] << 8 | (w[b + 26 | 0] << 16 | w[b + 27 | 0] << 24), w[b + 28 | 0] | w[b + 29 | 0] << 8 | (w[b + 30 | 0] << 16 | w[b + 31 | 0] << 24), 668265295, -1028477379) + c | 0; + e = i + R | 0; + c = Ga(Ha(g, c >>> 0 > g >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + i = R; + g = Ga(w[b + 16 | 0] | w[b + 17 | 0] << 8 | (w[b + 18 | 0] << 16 | w[b + 19 | 0] << 24), w[b + 20 | 0] | w[b + 21 | 0] << 8 | (w[b + 22 | 0] << 16 | w[b + 23 | 0] << 24), 668265295, -1028477379) + d | 0; + e = k + R | 0; + d = Ga(Ha(g, d >>> 0 > g >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + k = R; + g = Ga(w[b + 8 | 0] | w[b + 9 | 0] << 8 | (w[b + 10 | 0] << 16 | w[b + 11 | 0] << 24), w[b + 12 | 0] | w[b + 13 | 0] << 8 | (w[b + 14 | 0] << 16 | w[b + 15 | 0] << 24), 668265295, -1028477379) + f | 0; + e = l + R | 0; + f = Ga(Ha(g, f >>> 0 > g >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + l = R; + g = Ga(w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24), w[b + 4 | 0] | w[b + 5 | 0] << 8 | (w[b + 6 | 0] << 16 | w[b + 7 | 0] << 24), 668265295, -1028477379) + h | 0; + e = m + R | 0; + h = Ga(Ha(g, g >>> 0 < h >>> 0 ? e + 1 | 0 : e, 31), R, -2048144761, -1640531535); + m = R; + b = b + 32 | 0; + if (n >>> 0 >= b >>> 0) { + continue; + } + break; + } + v[a + 32 >> 2] = c; + v[a + 36 >> 2] = i; + v[a + 24 >> 2] = d; + v[a + 28 >> 2] = k; + v[a + 16 >> 2] = f; + v[a + 20 >> 2] = l; + v[a + 8 >> 2] = h; + v[a + 12 >> 2] = m; + } + if (b >>> 0 >= j >>> 0) { + break a; + } + f = j - b | 0; + X(a + 40 | 0, b, f); + } + v[a + 72 >> 2] = f; + } + } + function oa(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0; + f = a + 40 | 0; + i = v[a + 72 >> 2]; + g = f + i | 0; + b = v[a + 4 >> 2]; + n = b; + e = v[a >> 2]; + a: { + if (!b & e >>> 0 >= 32 | b) { + b = v[a + 20 >> 2]; + o = b; + j = v[a + 16 >> 2]; + b = Ha(j, b, 7); + c = R; + d = v[a + 12 >> 2]; + p = d; + k = v[a + 8 >> 2]; + d = Ha(k, d, 1); + b = d + b | 0; + c = R + c | 0; + c = b >>> 0 < d >>> 0 ? c + 1 | 0 : c; + d = v[a + 28 >> 2]; + q = d; + l = v[a + 24 >> 2]; + h = Ha(l, d, 12); + d = h + b | 0; + b = R + c | 0; + b = d >>> 0 < h >>> 0 ? b + 1 | 0 : b; + c = d; + d = v[a + 36 >> 2]; + h = d; + m = v[a + 32 >> 2]; + d = Ha(m, d, 18); + c = d + c | 0; + b = R + b | 0; + b = Ga(Ga(Ha(Ga(k, p, 668265295, -1028477379), R, 31), R, -2048144761, -1640531535) ^ c, R ^ (c >>> 0 < d >>> 0 ? b + 1 | 0 : b), -2048144761, -1640531535); + c = b - 1028477341 | 0; + b = R - ((b >>> 0 < 1028477341) + 2048144776 | 0) | 0; + b = Ga(Ga(Ha(Ga(j, o, 668265295, -1028477379), R, 31), R, -2048144761, -1640531535) ^ c, R ^ b, -2048144761, -1640531535); + c = b - 1028477341 | 0; + b = R - ((b >>> 0 < 1028477341) + 2048144776 | 0) | 0; + b = Ga(Ga(Ha(Ga(l, q, 668265295, -1028477379), R, 31), R, -2048144761, -1640531535) ^ c, R ^ b, -2048144761, -1640531535); + c = b - 1028477341 | 0; + b = R - ((b >>> 0 < 1028477341) + 2048144776 | 0) | 0; + b = Ga(Ga(Ha(Ga(m, h, 668265295, -1028477379), R, 31), R, -2048144761, -1640531535) ^ c, R ^ b, -2048144761, -1640531535); + c = b - 1028477341 | 0; + b = R - ((b >>> 0 < 1028477341) + 2048144776 | 0) | 0; + break a; + } + b = v[a + 28 >> 2] + 668265263 | 0; + c = v[a + 24 >> 2] + 374761413 | 0; + b = c >>> 0 < 374761413 ? b + 1 | 0 : b; + } + d = c + e | 0; + c = b + n | 0; + c = d >>> 0 < e >>> 0 ? c + 1 | 0 : c; + e = a + 48 | 0; + b: { + if (g >>> 0 < e >>> 0) { + b = f; + break b; + } + while (1) { + b = Ga(Ha(Ga(Ha(Ga(w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24), w[f + 4 | 0] | w[f + 5 | 0] << 8 | (w[f + 6 | 0] << 16 | w[f + 7 | 0] << 24), 668265295, -1028477379), R, 31), R, -2048144761, -1640531535) ^ d, c ^ R, 27), R, -2048144761, -1640531535); + d = b - 1028477341 | 0; + c = R - ((b >>> 0 < 1028477341) + 2048144776 | 0) | 0; + b = e; + f = b; + e = b + 8 | 0; + if (g >>> 0 >= e >>> 0) { + continue; + } + break; + } + } + e = b + 4 | 0; + c: { + if (g >>> 0 < e >>> 0) { + e = b; + break c; + } + c = Ga(Ha(Ga(w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24), 0, -2048144761, -1640531535) ^ d, c ^ R, 23), R, 668265295, -1028477379) - 1640531463 | 0; + b = R + 374761393 | 0; + d = c; + c = c >>> 0 < 2654435833 ? b + 1 | 0 : b; + } + d: { + if (e >>> 0 >= g >>> 0) { + break d; + } + a = a + i | 0; + f = a + 39 | 0; + a = a + 40 | 0; + if (a - e & 1) { + d = Ga(Ha(Ga(w[e | 0], 0, 374761413, 668265263) ^ d, c ^ R, 11), R, -2048144761, -1640531535); + c = R; + b = e + 1 | 0; + } else { + b = e; + } + if ((e | 0) == (f | 0)) { + break d; + } + while (1) { + e = Ga(w[b + 1 | 0], 0, 374761413, 668265263); + f = R; + d = Ga(Ha(Ga(Ha(Ga(w[b | 0], 0, 374761413, 668265263) ^ d, c ^ R, 11), R, -2048144761, -1640531535) ^ e, R ^ f, 11), R, -2048144761, -1640531535); + c = R; + b = b + 2 | 0; + if ((a | 0) != (b | 0)) { + continue; + } + break; + } + } + a = Ga(d ^ c >>> 1, c, 668265295, -1028477379); + c = R; + b = a; + a = Ga(((c & 536870911) << 3 | b >>> 29) ^ b, c ^ c >>> 29, -1640531463, 374761393); + b = R; + R = b; + return a ^ b; + } + function aa(a, b, c, d) { + var e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0; + v[a >> 2] = 0; + v[a + 4 >> 2] = 0; + v[a + 32 >> 2] = 0; + v[a + 36 >> 2] = 0; + v[a + 24 >> 2] = 0; + v[a + 28 >> 2] = 0; + v[a + 16 >> 2] = 0; + v[a + 20 >> 2] = 0; + v[a + 8 >> 2] = 0; + v[a + 12 >> 2] = 0; + f = d ? 1 : 5; + if (f >>> 0 > c >>> 0) { + return f; + } + if (!b) { + return -1; + } + e = 1; + a: { + b: { + c: { + d: { + e: { + f: { + g: { + h: { + if ((d | 0) == 1) { + d = b; + if (c) { + break h; + } + d = -72; + break g; + } + e = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + if ((e | 0) != -47205080) { + break f; + } + e = f; + d = (b + f | 0) - 1 | 0; + } + g = w[d | 0]; + d = g & 32; + d = (!d + (v[(g >>> 4 & 12) + 4736 >> 2] + (v[((g & 3) << 2) + 4720 >> 2] + e | 0) | 0) | 0) + (d >>> 5 & g >>> 0 < 64) | 0; + } + if (d >>> 0 > c >>> 0) { + break a; + } + v[a + 24 >> 2] = d; + d = -14; + c = b + f | 0; + g = w[c - 1 | 0]; + if (g & 8) { + break a; + } + i = g & 32; + if (!i) { + d = -16; + c = w[c | 0]; + if (c >>> 0 > 167) { + break a; + } + d = c & 7; + c = (c >>> 3 | 0) + 10 | 0; + h = c & 31; + if ((c & 63) >>> 0 >= 32) { + e = 1 << h; + c = 0; + } else { + c = 1 << h; + e = c - 1 & 1 >>> 32 - h; + } + d = Ga(d, 0, (e & 7) << 29 | c >>> 3, e >>> 3 | 0) + c | 0; + h = e + R | 0; + h = c >>> 0 > d >>> 0 ? h + 1 | 0 : h; + j = d; + f = f + 1 | 0; + } + k = g >>> 6 | 0; + e = g >>> 2 | 0; + d = 0; + switch ((g & 3) - 1 | 0) { + case 2: + break c; + case 1: + break d; + case 0: + break e; + default: + break b; + } + } + d = -10; + if ((e & -16) != 407710288) { + break a; + } + d = 8; + if (c >>> 0 < 8) { + break a; + } + b = w[b + 4 | 0] | w[b + 5 | 0] << 8 | (w[b + 6 | 0] << 16 | w[b + 7 | 0] << 24); + v[a + 20 >> 2] = 1; + v[a >> 2] = b; + v[a + 4 >> 2] = 0; + return 0; + } + d = w[b + f | 0]; + f = f + 1 | 0; + break b; + } + c = b + f | 0; + d = w[c | 0] | w[c + 1 | 0] << 8; + f = f + 2 | 0; + break b; + } + c = b + f | 0; + d = w[c | 0] | w[c + 1 | 0] << 8 | (w[c + 2 | 0] << 16 | w[c + 3 | 0] << 24); + f = f + 4 | 0; + } + g = e & 1; + i: { + j: { + switch (k - 1 | 0) { + default: + e = -1; + c = -1; + if (!i) { + break i; + } + e = w[b + f | 0]; + c = 0; + break i; + case 0: + c = 0; + b = b + f | 0; + b = (w[b | 0] | w[b + 1 | 0] << 8) + 256 | 0; + c = b >>> 0 < 256 ? 1 : c; + e = b; + break i; + case 1: + b = b + f | 0; + e = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + c = 0; + break i; + case 2: + break j; + } + } + b = b + f | 0; + e = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + c = w[b + 4 | 0] | w[b + 5 | 0] << 8 | (w[b + 6 | 0] << 16 | w[b + 7 | 0] << 24); + } + v[a + 32 >> 2] = g; + v[a + 28 >> 2] = d; + b = e; + v[a >> 2] = b; + v[a + 4 >> 2] = c; + d = 0; + v[a + 20 >> 2] = 0; + e = i ? b : j; + v[a + 8 >> 2] = e; + b = i ? c : h; + v[a + 12 >> 2] = b; + v[a + 16 >> 2] = !b & e >>> 0 < 131072 ? e : 131072; + } + return d; + } + function la(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0; + if (!d) { + return -72; + } + i = x[e + 2 >> 1]; + a: { + b: { + c: { + if (d >>> 0 >= 4) { + g = w[(c + d | 0) - 1 | 0]; + f = -1; + if (!g) { + break a; + } + if (d >>> 0 <= 4294967176) { + break c; + } + return d; + } + h = w[c | 0]; + d: { + switch (d - 2 | 0) { + case 1: + h = w[c + 2 | 0] << 16 | h; + case 0: + h = (w[c + 1 | 0] << 8) + h | 0; + break; + default: + break d; + } + } + f = w[(c + d | 0) - 1 | 0]; + if (!f) { + return -20; + } + f = (E(f) - (d << 3) | 0) + 9 | 0; + d = 0; + break b; + } + f = E(g) - 23 | 0; + d = d - 4 | 0; + g = d + c | 0; + h = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + } + k = e + 4 | 0; + l = a + b | 0; + i = 0 - i & 31; + e: { + f: { + g: { + h: { + i: { + if (f >>> 0 > 32) { + break i; + } + j = l - 3 | 0; + while (1) { + j: { + if ((d | 0) >= 4) { + e = f & 7; + h = f >>> 3 | 0; + f = 0; + break j; + } + if (!d) { + d = 0; + g = c; + break h; + } + e = f; + g = f >>> 3 | 0; + f = (c + d | 0) - g >>> 0 < c >>> 0; + h = f ? d : g; + e = e - (h << 3) | 0; + } + d = d - h | 0; + g = d + c | 0; + h = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + if (!(f ? 0 : a >>> 0 < j >>> 0)) { + f = e; + break i; + } + f = (h << e >>> i << 1) + k | 0; + m = w[f + 1 | 0]; + t[a | 0] = w[f | 0]; + e = e + m | 0; + f = (h << e >>> i << 1) + k | 0; + m = w[f + 1 | 0]; + t[a + 1 | 0] = w[f | 0]; + a = a + 2 | 0; + f = e + m | 0; + if (f >>> 0 <= 32) { + continue; + } + break; + } + break g; + } + g = c + d | 0; + if (f >>> 0 > 32) { + break g; + } + } + while (1) { + k: { + if ((d | 0) >= 4) { + e = f & 7; + h = f >>> 3 | 0; + f = 0; + break k; + } + if (!d) { + break g; + } + e = f; + h = g; + g = f >>> 3 | 0; + f = h - g >>> 0 < c >>> 0; + h = f ? d : g; + e = e - (h << 3) | 0; + } + d = d - h | 0; + g = d + c | 0; + h = w[g | 0] | w[g + 1 | 0] << 8 | (w[g + 2 | 0] << 16 | w[g + 3 | 0] << 24); + j = a >>> 0 >= l >>> 0; + if (f ? 1 : j) { + f = e; + if (!j) { + break f; + } + break e; + } + f = (h << e >>> i << 1) + k | 0; + j = w[f + 1 | 0]; + t[a | 0] = w[f | 0]; + a = a + 1 | 0; + f = e + j | 0; + if (f >>> 0 <= 32) { + continue; + } + break; + } + } + if (a >>> 0 >= l >>> 0) { + break e; + } + } + d = a + 1 | 0; + if (l - a & 1) { + e = (h << f >>> i << 1) + k | 0; + j = w[e + 1 | 0]; + t[a | 0] = w[e | 0]; + f = f + j | 0; + a = d; + } + if ((d | 0) == (l | 0)) { + break e; + } + while (1) { + d = (h << f >>> i << 1) + k | 0; + e = w[d + 1 | 0]; + t[a | 0] = w[d | 0]; + d = e + f | 0; + e = (h << d >>> i << 1) + k | 0; + f = w[e + 1 | 0]; + t[a + 1 | 0] = w[e | 0]; + f = d + f | 0; + a = a + 2 | 0; + if ((l | 0) != (a | 0)) { + continue; + } + break; + } + } + f = (c | 0) != (g | 0) ? -20 : (f | 0) != 32 ? -20 : b; + } + return f; + } + function ea(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0; + i = 8; + a: { + b: { + if (a >>> 0 > 4294967239) { + break b; + } + while (1) { + i = i >>> 0 > 8 ? i : 8; + b = v[1467]; + h = b; + e = v[1466]; + g = e; + a = a >>> 0 > 8 ? a + 3 & -4 : 8; + c: { + if (a >>> 0 <= 127) { + f = (a >>> 3 | 0) - 1 | 0; + break c; + } + c = E(a); + f = ((a >>> 29 - c ^ 4) - (c << 2) | 0) + 110 | 0; + if (a >>> 0 <= 4095) { + break c; + } + c = ((a >>> 30 - c ^ 2) - (c << 1) | 0) + 71 | 0; + f = c >>> 0 < 63 ? c : 63; + } + d = f; + c = d & 31; + if ((d & 63) >>> 0 >= 32) { + d = 0; + b = b >>> c | 0; + } else { + d = b >>> c | 0; + b = ((1 << c) - 1 & b) << 32 - c | g >>> c; + } + c = d; + if (b | c) { + while (1) { + h = b; + d = c; + d: { + if (c | b) { + e = d - 1 | 0; + j = e + 1 | 0; + g = e; + e = b - 1 | 0; + g = (e | 0) != -1 ? j : g; + e = E(b ^ e) + 32 | 0; + b = E(d ^ g); + b = (b | 0) == 32 ? e : b; + d = 63 - b | 0; + R = 0 - (b >>> 0 > 63) | 0; + break d; + } + R = 0; + d = 64; + } + e = d; + d = e; + b = d & 31; + if ((d & 63) >>> 0 >= 32) { + d = 0; + h = c >>> b | 0; + } else { + d = c >>> b | 0; + h = ((1 << b) - 1 & c) << 32 - b | h >>> b; + } + c = d; + f = e + f | 0; + e = f << 4; + d = v[e + 4840 >> 2]; + g = e + 4832 | 0; + e: { + if ((d | 0) != (g | 0)) { + b = da(d, i, a); + if (b) { + break b; + } + b = v[d + 4 >> 2]; + v[b + 8 >> 2] = v[d + 8 >> 2]; + v[v[d + 8 >> 2] + 4 >> 2] = b; + v[d + 8 >> 2] = g; + b = e + 4836 | 0; + v[d + 4 >> 2] = v[b >> 2]; + v[b >> 2] = d; + v[v[d + 4 >> 2] + 8 >> 2] = d; + f = f + 1 | 0; + b = (c & 1) << 31 | h >>> 1; + c = c >>> 1 | 0; + break e; + } + b = v[1467]; + v[1466] = v[1466] & Ha(-2, -1, f); + v[1467] = R & b; + b = h ^ 1; + } + if (b | c) { + continue; + } + break; + } + e = v[1466]; + h = v[1467]; + } + f: { + if (e | h) { + c = E(h); + g = 63 - ((c | 0) == 32 ? E(e) + 32 | 0 : c) | 0; + b = g << 4; + c = v[b + 4840 >> 2]; + g: { + if (!h & e >>> 0 < 1073741824) { + break g; + } + f = 99; + d = b + 4832 | 0; + if ((d | 0) == (c | 0)) { + break g; + } + while (1) { + if (!f) { + break g; + } + b = da(c, i, a); + if (b) { + break b; + } + f = f - 1 | 0; + c = v[c + 8 >> 2]; + if ((d | 0) != (c | 0)) { + continue; + } + break; + } + c = d; + } + if (fa(a + 48 | 0)) { + break f; + } + if (!c) { + break a; + } + d = (g << 4) + 4832 | 0; + if ((d | 0) == (c | 0)) { + break a; + } + while (1) { + b = da(c, i, a); + if (b) { + break b; + } + c = v[c + 8 >> 2]; + if ((d | 0) != (c | 0)) { + continue; + } + break; + } + break a; + } + if (!fa(a + 48 | 0)) { + break a; + } + } + b = 0; + if (i - 1 & i) { + break b; + } + if (a >>> 0 <= 4294967239) { + continue; + } + break; + } + } + return b; + } + return 0; + } + function $(a, b, c, d, e) { + var f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0; + l = Q - 16 | 0; + Q = l; + a: { + if (e >>> 0 <= 3) { + v[l + 12 >> 2] = 0; + f = l + 12 | 0; + X(f, d, e); + a = $(a, b, c, f, 4); + i = a >>> 0 < 4294967177 ? a >>> 0 > e >>> 0 ? -20 : a : a; + break a; + } + o = _(a, 0, (v[b >> 2] << 1) + 2 | 0); + g = w[d | 0] | w[d + 1 | 0] << 8 | (w[d + 2 | 0] << 16 | w[d + 3 | 0] << 24); + f = g & 15; + i = -44; + if (f >>> 0 > 10) { + break a; + } + v[c >> 2] = f + 5; + c = 4; + a = g >>> 4 | 0; + m = f + 6 | 0; + e = d + e | 0; + n = e - 4 | 0; + p = e - 7 | 0; + r = e - 5 | 0; + j = 32 << f; + k = j | 1; + q = v[b >> 2]; + f = d; + e = 0; + g = 0; + while (1) { + b: { + c: { + if (!e) { + h = g; + break c; + } + e = g; + if ((a & 65535) == 65535) { + while (1) { + d: { + if (f >>> 0 < r >>> 0) { + a = (w[f + 2 | 0] | w[f + 3 | 0] << 8 | (w[f + 4 | 0] << 16 | w[f + 5 | 0] << 24)) >>> c | 0; + f = f + 2 | 0; + break d; + } + c = c + 16 | 0; + a = a >>> 16 | 0; + } + e = e + 24 | 0; + if ((a & 65535) == 65535) { + continue; + } + break; + } + } + h = a & 3; + if ((h | 0) == 3) { + while (1) { + c = c + 2 | 0; + e = e + 3 | 0; + a = a >>> 2 | 0; + h = a & 3; + if ((h | 0) == 3) { + continue; + } + break; + } + } + h = e + h | 0; + i = -48; + if (q >>> 0 < h >>> 0) { + break a; + } + c = c + 2 | 0; + e: { + if (g >>> 0 >= h >>> 0) { + h = g; + break e; + } + _((g << 1) + o | 0, 0, h - g << 1); + } + e = (c >> 3) + f | 0; + if (!(n >>> 0 < e >>> 0 & f >>> 0 > p >>> 0)) { + c = c & 7; + a = (w[e | 0] | w[e + 1 | 0] << 8 | (w[e + 2 | 0] << 16 | w[e + 3 | 0] << 24)) >>> c | 0; + break b; + } + a = a >>> 2 | 0; + } + e = f; + } + f = j - 1 & a; + g = (j << 1) - 1 | 0; + i = g - k | 0; + if (f >>> 0 < i >>> 0) { + a = m - 1 | 0; + } else { + a = a & g; + f = a - ((a | 0) < (j | 0) ? 0 : i) | 0; + a = m; + } + g = f - 1 | 0; + u[(h << 1) + o >> 1] = g; + k = k - ((f | 0) <= 0 ? 1 - f | 0 : g) | 0; + if ((k | 0) < (j | 0)) { + while (1) { + m = m - 1 | 0; + j = j >> 1; + if ((k | 0) < (j | 0)) { + continue; + } + break; + } + } + a = a + c | 0; + f = (a >> 3) + e | 0; + f: { + if (!(n >>> 0 < f >>> 0 & e >>> 0 > p >>> 0)) { + c = a & 7; + break f; + } + f = n; + c = a + (e - f << 3) | 0; + } + if ((k | 0) >= 2) { + e = !g; + a = (w[f | 0] | w[f + 1 | 0] << 8 | (w[f + 2 | 0] << 16 | w[f + 3 | 0] << 24)) >>> c | 0; + g = h + 1 | 0; + if (q >>> 0 >= g >>> 0) { + continue; + } + } + break; + } + i = -20; + if ((k | 0) != 1 | (c | 0) > 32) { + break a; + } + v[b >> 2] = h; + i = ((c + 7 >> 3) + f | 0) - d | 0; + } + a = i; + Q = l + 16 | 0; + return a; + } + function ba(a, b, c, d, e, f) { + var g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0, + q = 0, + r = 0, + s = 0; + q = Q - 112 | 0; + m = a + 8 | 0; + n = 1; + p = 1 << f; + a: { + b: { + if ((c | 0) != -1) { + j = p - 1 | 0; + r = 65536 << f - 1 >> 16; + g = c + 1 | 0; + s = g & 1; + if (!c) { + g = j; + break b; + } + k = g & -2; + g = j; + while (1) { + l = h << 1; + i = x[l + b >> 1]; + c: { + if ((i | 0) == 65535) { + v[((g << 3) + m | 0) + 4 >> 2] = h; + g = g - 1 | 0; + i = 1; + break c; + } + n = i << 16 >> 16 < (r | 0) ? n : 0; + } + u[l + q >> 1] = i; + o = h | 1; + l = o << 1; + i = x[l + b >> 1]; + d: { + if ((i | 0) != 65535) { + n = i << 16 >> 16 < (r | 0) ? n : 0; + break d; + } + v[((g << 3) + m | 0) + 4 >> 2] = o; + g = g - 1 | 0; + i = 1; + } + u[l + q >> 1] = i; + h = h + 2 | 0; + k = k - 2 | 0; + if (k) { + continue; + } + break; + } + break b; + } + v[a + 4 >> 2] = f; + v[a >> 2] = 1; + break a; + } + if (s) { + i = x[(h << 1) + b >> 1]; + e: { + if ((i | 0) != 65535) { + n = i << 16 >> 16 < (r | 0) ? n : 0; + break e; + } + v[((g << 3) + m | 0) + 4 >> 2] = h; + g = g - 1 | 0; + i = 1; + } + u[(h << 1) + q >> 1] = i; + } + v[a + 4 >> 2] = f; + v[a >> 2] = n; + if ((c | 0) == -1) { + break a; + } + o = ((p >>> 3) + (p >>> 1) | 0) + 3 | 0; + h = 0; + k = 0; + while (1) { + a = k; + l = u[(a << 1) + b >> 1]; + f: { + if ((l | 0) <= 0) { + break f; + } + if ((l | 0) != 1) { + k = l & -2; + while (1) { + v[((h << 3) + m | 0) + 4 >> 2] = a; + while (1) { + h = j & h + o; + if (h >>> 0 > g >>> 0) { + continue; + } + break; + } + v[((h << 3) + m | 0) + 4 >> 2] = a; + while (1) { + h = j & h + o; + if (h >>> 0 > g >>> 0) { + continue; + } + break; + } + k = k - 2 | 0; + if (k) { + continue; + } + break; + } + } + if (!(l & 1)) { + break f; + } + v[((h << 3) + m | 0) + 4 >> 2] = a; + while (1) { + h = j & h + o; + if (h >>> 0 > g >>> 0) { + continue; + } + break; + } + } + k = a + 1 | 0; + if ((a | 0) != (c | 0)) { + continue; + } + break; + } + } + c = f + 1 | 0; + g = 0; + while (1) { + j = (g << 3) + m | 0; + b = v[j + 4 >> 2]; + a = (b << 1) + q | 0; + f = x[a >> 1]; + u[a >> 1] = f + 1; + a = c + (E(f) ^ -32) | 0; + t[j + 3 | 0] = a; + u[j >> 1] = (f << a) - p; + a = b << 2; + t[j + 2 | 0] = v[a + e >> 2]; + v[j + 4 >> 2] = v[a + d >> 2]; + g = g + 1 | 0; + if ((p | 0) != (g | 0)) { + continue; + } + break; + } + } + function ma(a, b, c, d) { + var e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0, + k = 0, + l = 0, + m = 0, + n = 0, + o = 0, + p = 0; + j = Q - 16 | 0; + Q = j; + v[j + 12 >> 2] = 0; + v[j + 8 >> 2] = 0; + e = -44; + n = d - -64 | 0; + b = na(n, d, j + 8 | 0, j + 12 | 0, b, c); + a: { + b: { + if (b >>> 0 > 4294967176) { + break b; + } + g = v[j + 12 >> 2]; + c = v[a >> 2]; + if (g >>> 0 > (c & 255) + 1 >>> 0) { + break a; + } + v[a >> 2] = c & -16776961 | g << 16 & 16711680; + c: { + if (g + 1 >>> 0 < 2) { + break c; + } + c = g & 3; + d: { + if (g - 1 >>> 0 < 3) { + e = 1; + break d; + } + i = g & -4; + e = 1; + while (1) { + h = (e << 2) + d | 0; + k = v[h >> 2]; + v[h >> 2] = f; + m = e + 1 | 0; + l = (m << 2) + d | 0; + o = v[l >> 2]; + f = (k << e - 1) + f | 0; + v[l >> 2] = f; + k = e + 2 | 0; + l = (k << 2) + d | 0; + p = v[l >> 2]; + f = f + (o << e) | 0; + v[l >> 2] = f; + l = v[h + 12 >> 2]; + f = f + (p << m) | 0; + v[h + 12 >> 2] = f; + f = f + (l << k) | 0; + e = e + 4 | 0; + i = i - 4 | 0; + if (i) { + continue; + } + break; + } + } + if (!c) { + break c; + } + while (1) { + h = (e << 2) + d | 0; + i = v[h >> 2]; + v[h >> 2] = f; + f = (i << e - 1) + f | 0; + e = e + 1 | 0; + c = c - 1 | 0; + if (c) { + continue; + } + break; + } + } + k = v[j + 8 >> 2]; + if (!k) { + break b; + } + h = a + 4 | 0; + m = g + 1 | 0; + f = 0; + while (1) { + g = w[f + n | 0]; + a = (g << 2) + d | 0; + c = v[a >> 2]; + e = 1 << g >> 1; + i = c + e | 0; + v[a >> 2] = i; + a = m - g | 0; + e: { + if (e >>> 0 >= 4) { + if (c >>> 0 >= i >>> 0) { + break e; + } + while (1) { + e = h + (c << 1) | 0; + t[e + 1 | 0] = a; + t[e | 0] = f; + t[e + 3 | 0] = a; + t[e + 2 | 0] = f; + t[e + 5 | 0] = a; + t[e + 4 | 0] = f; + t[e + 7 | 0] = a; + t[e + 6 | 0] = f; + c = c + 4 | 0; + if (i >>> 0 > c >>> 0) { + continue; + } + break; + } + break e; + } + if (!g) { + break e; + } + c = h + (c << 1) | 0; + t[c + 1 | 0] = a; + t[c | 0] = f; + if (e >>> 0 < 2) { + break e; + } + t[c + 3 | 0] = a; + t[c + 2 | 0] = f; + if (((e >>> 0 > 1 ? e : 1) | 0) == 2) { + break e; + } + t[c + 5 | 0] = a; + t[c + 4 | 0] = f; + } + f = f + 1 | 0; + if ((k | 0) != (f | 0)) { + continue; + } + break; + } + } + e = b; + } + Q = j + 16 | 0; + return e; + } + function X(a, b, c) { + var d = 0, + e = 0, + f = 0; + if (c >>> 0 >= 512) { + O(a | 0, b | 0, c | 0) | 0; + return a; + } + e = a + c | 0; + a: { + if (!((a ^ b) & 3)) { + b: { + if (!(a & 3)) { + c = a; + break b; + } + if (!c) { + c = a; + break b; + } + c = a; + while (1) { + t[c | 0] = w[b | 0]; + b = b + 1 | 0; + c = c + 1 | 0; + if (!(c & 3)) { + break b; + } + if (c >>> 0 < e >>> 0) { + continue; + } + break; + } + } + d = e & -4; + c: { + if (d >>> 0 < 64) { + break c; + } + f = d + -64 | 0; + if (f >>> 0 < c >>> 0) { + break c; + } + while (1) { + v[c >> 2] = v[b >> 2]; + v[c + 4 >> 2] = v[b + 4 >> 2]; + v[c + 8 >> 2] = v[b + 8 >> 2]; + v[c + 12 >> 2] = v[b + 12 >> 2]; + v[c + 16 >> 2] = v[b + 16 >> 2]; + v[c + 20 >> 2] = v[b + 20 >> 2]; + v[c + 24 >> 2] = v[b + 24 >> 2]; + v[c + 28 >> 2] = v[b + 28 >> 2]; + v[c + 32 >> 2] = v[b + 32 >> 2]; + v[c + 36 >> 2] = v[b + 36 >> 2]; + v[c + 40 >> 2] = v[b + 40 >> 2]; + v[c + 44 >> 2] = v[b + 44 >> 2]; + v[c + 48 >> 2] = v[b + 48 >> 2]; + v[c + 52 >> 2] = v[b + 52 >> 2]; + v[c + 56 >> 2] = v[b + 56 >> 2]; + v[c + 60 >> 2] = v[b + 60 >> 2]; + b = b - -64 | 0; + c = c - -64 | 0; + if (f >>> 0 >= c >>> 0) { + continue; + } + break; + } + } + if (c >>> 0 >= d >>> 0) { + break a; + } + while (1) { + v[c >> 2] = v[b >> 2]; + b = b + 4 | 0; + c = c + 4 | 0; + if (d >>> 0 > c >>> 0) { + continue; + } + break; + } + break a; + } + if (e >>> 0 < 4) { + c = a; + break a; + } + d = e - 4 | 0; + if (d >>> 0 < a >>> 0) { + c = a; + break a; + } + c = a; + while (1) { + t[c | 0] = w[b | 0]; + t[c + 1 | 0] = w[b + 1 | 0]; + t[c + 2 | 0] = w[b + 2 | 0]; + t[c + 3 | 0] = w[b + 3 | 0]; + b = b + 4 | 0; + c = c + 4 | 0; + if (d >>> 0 >= c >>> 0) { + continue; + } + break; + } + } + if (c >>> 0 < e >>> 0) { + while (1) { + t[c | 0] = w[b | 0]; + b = b + 1 | 0; + c = c + 1 | 0; + if ((e | 0) != (c | 0)) { + continue; + } + break; + } + } + return a; + } + function fa(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0; + e = v[1204]; + c = a + 3 & -4; + b = e + c | 0; + a: { + b: { + if (b >>> 0 <= e >>> 0 ? c : 0) { + break b; + } + if (b >>> 0 > T() << 16 >>> 0) { + if (!(P(b | 0) | 0)) { + break b; + } + } + v[1204] = b; + break a; + } + v[1468] = 48; + e = -1; + } + if ((e | 0) != -1) { + c = a + e | 0; + b = c - 16 | 0; + v[b + 12 >> 2] = 16; + v[b >> 2] = 16; + a = v[1464]; + if (a) { + d = v[a + 8 >> 2]; + } else { + d = 0; + } + c: { + d: { + if ((d | 0) == (e | 0)) { + d = e - (v[e - 4 >> 2] & -2) | 0; + f = v[d - 4 >> 2]; + v[a + 8 >> 2] = c; + a = d - (f & -2) | 0; + c = -16; + if (!(t[(a + v[a >> 2] | 0) - 4 | 0] & 1)) { + break d; + } + c = v[a + 4 >> 2]; + v[c + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = c; + b = b - a | 0; + v[a >> 2] = b; + break c; + } + v[e + 12 >> 2] = 16; + v[e >> 2] = 16; + v[e + 8 >> 2] = c; + v[e + 4 >> 2] = a; + v[1464] = e; + c = 16; + } + a = e + c | 0; + b = b - a | 0; + v[a >> 2] = b; + } + v[((b & -4) + a | 0) - 4 >> 2] = b | 1; + g = a; + d = v[a >> 2] - 8 | 0; + e: { + if (d >>> 0 <= 127) { + b = (d >>> 3 | 0) - 1 | 0; + break e; + } + f = E(d); + b = ((d >>> 29 - f ^ 4) - (f << 2) | 0) + 110 | 0; + if (d >>> 0 <= 4095) { + break e; + } + b = ((d >>> 30 - f ^ 2) - (f << 1) | 0) + 71 | 0; + b = b >>> 0 < 63 ? b : 63; + } + c = b << 4; + v[g + 4 >> 2] = c + 4832; + c = c + 4840 | 0; + v[a + 8 >> 2] = v[c >> 2]; + v[c >> 2] = a; + v[v[a + 8 >> 2] + 4 >> 2] = a; + c = v[1467]; + a = b & 31; + if ((b & 63) >>> 0 >= 32) { + b = 1 << a; + d = 0; + } else { + d = 1 << a; + b = d - 1 & 1 >>> 32 - a; + } + v[1466] = d | v[1466]; + v[1467] = b | c; + } + return (e | 0) != -1; + } + function da(a, b, c) { + var d = 0, + e = 0, + f = 0, + g = 0; + d = a + 4 | 0; + e = (d + b | 0) - 1 & 0 - b; + b = v[a >> 2]; + if (e + c >>> 0 <= (b + a | 0) - 4 >>> 0) { + f = v[a + 4 >> 2]; + v[f + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = f; + if ((d | 0) != (e | 0)) { + e = e - d | 0; + f = a - (v[a - 4 >> 2] & -2) | 0; + d = e + v[f >> 2] | 0; + v[f >> 2] = d; + v[(f + (d & -4) | 0) - 4 >> 2] = d; + a = a + e | 0; + b = b - e | 0; + v[a >> 2] = b; + } + a: { + if (c + 24 >>> 0 <= b >>> 0) { + d = (a + c | 0) + 8 | 0; + b = (b - c | 0) - 8 | 0; + v[d >> 2] = b; + v[(d + (b & -4) | 0) - 4 >> 2] = b | 1; + g = d; + f = v[d >> 2] - 8 | 0; + b: { + if (f >>> 0 <= 127) { + e = (f >>> 3 | 0) - 1 | 0; + break b; + } + b = E(f); + e = ((f >>> 29 - b ^ 4) - (b << 2) | 0) + 110 | 0; + if (f >>> 0 <= 4095) { + break b; + } + b = ((f >>> 30 - b ^ 2) - (b << 1) | 0) + 71 | 0; + e = b >>> 0 < 63 ? b : 63; + } + b = e; + e = b << 4; + v[g + 4 >> 2] = e + 4832; + e = e + 4840 | 0; + v[d + 8 >> 2] = v[e >> 2]; + v[e >> 2] = d; + v[v[d + 8 >> 2] + 4 >> 2] = d; + e = v[1467]; + d = b & 31; + if ((b & 63) >>> 0 >= 32) { + b = 1 << d; + f = 0; + } else { + f = 1 << d; + b = f - 1 & 1 >>> 32 - d; + } + v[1466] = f | v[1466]; + v[1467] = b | e; + b = c + 8 | 0; + v[a >> 2] = b; + v[((b & -4) + a | 0) - 4 >> 2] = b; + break a; + } + v[(a + b | 0) - 4 >> 2] = b; + } + a = a + 4 | 0; + } else { + a = 0; + } + return a; + } + function Z(a, b, c) { + var d = 0, + e = 0; + a: { + if ((a | 0) == (b | 0)) { + break a; + } + e = a + c | 0; + if (b - e >>> 0 <= 0 - (c << 1) >>> 0) { + return X(a, b, c); + } + d = (a ^ b) & 3; + b: { + c: { + if (a >>> 0 < b >>> 0) { + if (d) { + d = a; + break b; + } + if (!(a & 3)) { + d = a; + break c; + } + d = a; + while (1) { + if (!c) { + break a; + } + t[d | 0] = w[b | 0]; + b = b + 1 | 0; + c = c - 1 | 0; + d = d + 1 | 0; + if (d & 3) { + continue; + } + break; + } + break c; + } + d: { + if (d) { + break d; + } + if (e & 3) { + while (1) { + if (!c) { + break a; + } + c = c - 1 | 0; + d = c + a | 0; + t[d | 0] = w[b + c | 0]; + if (d & 3) { + continue; + } + break; + } + } + if (c >>> 0 <= 3) { + break d; + } + while (1) { + c = c - 4 | 0; + v[c + a >> 2] = v[b + c >> 2]; + if (c >>> 0 > 3) { + continue; + } + break; + } + } + if (!c) { + break a; + } + while (1) { + c = c - 1 | 0; + t[c + a | 0] = w[b + c | 0]; + if (c) { + continue; + } + break; + } + break a; + } + if (c >>> 0 <= 3) { + break b; + } + while (1) { + v[d >> 2] = v[b >> 2]; + b = b + 4 | 0; + d = d + 4 | 0; + c = c - 4 | 0; + if (c >>> 0 > 3) { + continue; + } + break; + } + } + if (!c) { + break a; + } + while (1) { + t[d | 0] = w[b | 0]; + d = d + 1 | 0; + b = b + 1 | 0; + c = c - 1 | 0; + if (c) { + continue; + } + break; + } + } + return a; + } + function _(a, b, c) { + var d = 0, + e = 0, + f = 0; + a: { + if (!c) { + break a; + } + f = a + c | 0; + t[f - 1 | 0] = b; + t[a | 0] = b; + if (c >>> 0 < 3) { + break a; + } + t[f - 2 | 0] = b; + t[a + 1 | 0] = b; + t[f - 3 | 0] = b; + t[a + 2 | 0] = b; + if (c >>> 0 < 7) { + break a; + } + t[f - 4 | 0] = b; + t[a + 3 | 0] = b; + if (c >>> 0 < 9) { + break a; + } + f = 0 - a & 3; + e = f + a | 0; + d = B(b & 255, 16843009); + v[e >> 2] = d; + b = c - f & -4; + c = b + e | 0; + v[c - 4 >> 2] = d; + if (b >>> 0 < 9) { + break a; + } + v[e + 8 >> 2] = d; + v[e + 4 >> 2] = d; + v[c - 8 >> 2] = d; + v[c - 12 >> 2] = d; + if (b >>> 0 < 25) { + break a; + } + v[e + 24 >> 2] = d; + v[e + 20 >> 2] = d; + v[e + 16 >> 2] = d; + v[e + 12 >> 2] = d; + v[c - 16 >> 2] = d; + v[c - 20 >> 2] = d; + v[c - 24 >> 2] = d; + v[c - 28 >> 2] = d; + c = b; + b = e & 4 | 24; + c = c - b | 0; + if (c >>> 0 < 32) { + break a; + } + d = Ga(d, 0, 1, 1); + f = R; + b = b + e | 0; + while (1) { + v[b + 24 >> 2] = d; + e = f; + v[b + 28 >> 2] = e; + v[b + 16 >> 2] = d; + v[b + 20 >> 2] = e; + v[b + 8 >> 2] = d; + v[b + 12 >> 2] = e; + v[b >> 2] = d; + v[b + 4 >> 2] = e; + b = b + 32 | 0; + c = c - 32 | 0; + if (c >>> 0 > 31) { + continue; + } + break; + } + } + return a; + } + function ta(a) { + a = a | 0; + var b = 0; + b = 1812; + a: { + b: { + switch ((a >>> 0 < 4294967177 ? 0 : 0 - a | 0) | 0) { + case 1: + b = 1855; + break a; + case 10: + b = 1159; + break a; + case 12: + b = 1766; + break a; + case 14: + b = 1184; + break a; + case 16: + b = 1506; + break a; + case 20: + b = 1830; + break a; + case 22: + b = 1271; + break a; + case 40: + b = 1212; + break a; + case 42: + b = 1692; + break a; + case 62: + b = 1061; + break a; + case 64: + b = 1024; + break a; + case 66: + b = 1378; + break a; + case 60: + b = 1616; + break a; + case 44: + b = 1718; + break a; + case 46: + b = 1575; + break a; + case 48: + b = 1340; + break a; + case 30: + b = 1788; + break a; + case 32: + b = 1415; + break a; + case 34: + b = 1112; + break a; + case 70: + b = 1308; + break a; + case 72: + b = 1090; + break a; + case 74: + b = 1234; + break a; + case 100: + b = 1550; + break a; + case 102: + b = 1463; + break a; + case 104: + b = 1435; + break a; + case 0: + break a; + default: + break b; + } + } + b = 1669; + } + return b | 0; + } + function Y(a) { + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0; + if (a) { + c = a - 4 | 0; + e = v[c >> 2]; + b = e; + d = c; + f = v[a - 8 >> 2]; + a = f & -2; + if ((a | 0) != (f | 0)) { + d = c - a | 0; + b = v[d + 4 >> 2]; + v[b + 8 >> 2] = v[d + 8 >> 2]; + v[v[d + 8 >> 2] + 4 >> 2] = b; + b = a + e | 0; + } + a = c + e | 0; + c = v[a >> 2]; + if ((c | 0) != v[(a + c | 0) - 4 >> 2]) { + e = v[a + 4 >> 2]; + v[e + 8 >> 2] = v[a + 8 >> 2]; + v[v[a + 8 >> 2] + 4 >> 2] = e; + b = b + c | 0; + } + v[d >> 2] = b; + v[((b & -4) + d | 0) - 4 >> 2] = b | 1; + f = d; + b = v[d >> 2] - 8 | 0; + a: { + if (b >>> 0 <= 127) { + a = (b >>> 3 | 0) - 1 | 0; + break a; + } + e = E(b); + a = ((b >>> 29 - e ^ 4) - (e << 2) | 0) + 110 | 0; + if (b >>> 0 <= 4095) { + break a; + } + a = ((b >>> 30 - e ^ 2) - (e << 1) | 0) + 71 | 0; + a = a >>> 0 < 63 ? a : 63; + } + c = a << 4; + v[f + 4 >> 2] = c + 4832; + c = c + 4840 | 0; + v[d + 8 >> 2] = v[c >> 2]; + v[c >> 2] = d; + v[v[d + 8 >> 2] + 4 >> 2] = d; + c = v[1467]; + d = a & 31; + if ((a & 63) >>> 0 >= 32) { + a = 1 << d; + b = 0; + } else { + b = 1 << d; + a = b - 1 & 1 >>> 32 - d; + } + v[1466] = b | v[1466]; + v[1467] = a | c; + } + } + function ga(a, b, c, d, e, f, g, h, i, j, k, l, m) { + var n = 0, + o = 0; + n = Q - 128 | 0; + Q = n; + v[n + 124 >> 2] = d; + o = -1; + a: { + b: { + switch (c | 0) { + case 1: + if (!g) { + o = -72; + break a; + } + o = -20; + c = w[f | 0]; + if (c >>> 0 > d >>> 0) { + break a; + } + c = c << 2; + d = v[c + i >> 2]; + c = v[c + h >> 2]; + t[a + 11 | 0] = 0; + v[a >> 2] = 0; + v[a + 4 >> 2] = 0; + v[a + 12 >> 2] = c; + t[a + 10 | 0] = d; + u[a + 8 >> 1] = 0; + v[b >> 2] = a; + o = 1; + break a; + case 0: + v[b >> 2] = j; + o = 0; + break a; + case 3: + if (!k) { + o = -20; + break a; + } + o = 0; + if (!l | (m | 0) < 25) { + break a; + } + a = (8 << e) + 8 | 0; + if (!a) { + break a; + } + d = 0; + while (1) { + d = d - -64 | 0; + if (a >>> 0 > d >>> 0) { + continue; + } + break; + } + break a; + case 2: + break b; + default: + break a; + } + } + o = -20; + c = $(n, n + 124 | 0, n + 120 | 0, f, g); + if (c >>> 0 > 4294967176) { + break a; + } + d = v[n + 120 >> 2]; + if (d >>> 0 > e >>> 0) { + break a; + } + ba(a, n, v[n + 124 >> 2], h, i, d); + v[b >> 2] = a; + o = c; + } + Q = n + 128 | 0; + return o; + } + function Ea(a) { + a = a | 0; + var b = 0, + c = 0, + d = 0, + e = 0, + f = 0, + g = 0; + a: { + b: { + if (!a) { + break b; + } + b = -64; + if (v[a + 28936 >> 2]) { + break a; + } + e = v[a + 28924 >> 2]; + c = v[a + 28920 >> 2]; + b = v[a + 28944 >> 2]; + c: { + if (!b) { + break c; + } + f = v[b + 26692 >> 2]; + d = v[b + 26688 >> 2]; + d: { + e: { + g = v[b >> 2]; + if (g) { + if (!d) { + break e; + } + S[d | 0](f, g); + S[d | 0](f, b); + break c; + } + if (!d) { + break d; + } + S[d | 0](f, b); + break c; + } + Y(g); + } + Y(b); + } + v[a + 28960 >> 2] = 0; + v[a + 28944 >> 2] = 0; + v[a + 28948 >> 2] = 0; + f: { + g: { + b = v[a + 28968 >> 2]; + if (b) { + if (!c) { + break g; + } + S[c | 0](e, b); + v[a + 28968 >> 2] = 0; + S[c | 0](e, a); + break b; + } + v[a + 28968 >> 2] = 0; + if (!c) { + break f; + } + S[c | 0](e, a); + break b; + } + Y(b); + } + Y(a); + } + b = 0; + } + return b | 0; + } + function ja(a, b, c) { + var d = 0; + if (!c) { + v[a >> 2] = 0; + v[a + 4 >> 2] = 0; + v[a + 16 >> 2] = 0; + v[a + 8 >> 2] = 0; + v[a + 12 >> 2] = 0; + return -72; + } + v[a + 12 >> 2] = b; + v[a + 16 >> 2] = b + 4; + if (c >>> 0 >= 4) { + d = b + c | 0; + b = d - 4 | 0; + v[a + 8 >> 2] = b; + v[a >> 2] = w[b | 0] | w[b + 1 | 0] << 8 | (w[b + 2 | 0] << 16 | w[b + 3 | 0] << 24); + b = w[d - 1 | 0]; + if (!b) { + v[a + 4 >> 2] = 0; + return -1; + } + v[a + 4 >> 2] = E(b) - 23; + return c; + } + v[a + 8 >> 2] = b; + d = w[b | 0]; + v[a >> 2] = d; + a: { + switch (c - 2 | 0) { + case 1: + d = w[b + 2 | 0] << 16 | d; + v[a >> 2] = d; + case 0: + v[a >> 2] = (w[b + 1 | 0] << 8) + d; + break; + default: + break a; + } + } + b = w[(b + c | 0) - 1 | 0]; + if (!b) { + v[a + 4 >> 2] = 0; + return -20; + } + v[a + 4 >> 2] = (E(b) - (c << 3) | 0) + 9; + return c; + } + function Fa() { + var a = 0, + b = 0; + a = ea(160168); + if (!a) { + return 0; + } + v[a + 28924 >> 2] = 0; + v[a + 28916 >> 2] = 0; + v[a + 28920 >> 2] = 0; + v[a + 28980 >> 2] = 134217729; + v[a + 28936 >> 2] = 0; + v[a + 28908 >> 2] = 0; + v[a + 28948 >> 2] = 0; + v[a + 160164 >> 2] = 0; + v[a + 29004 >> 2] = 0; + v[a + 29008 >> 2] = 0; + v[a + 28988 >> 2] = 0; + v[a + 28740 >> 2] = 0; + v[a + 29020 >> 2] = 0; + v[a + 29024 >> 2] = 0; + v[a + 28940 >> 2] = 0; + v[a + 28944 >> 2] = 0; + v[a + 28956 >> 2] = 0; + v[a + 28960 >> 2] = 0; + b = a + 28964 | 0; + v[b >> 2] = 0; + v[b + 4 >> 2] = 0; + v[a + 28972 >> 2] = 0; + return a | 0; + } + function Ha(a, b, c) { + var d = 0, + e = 0, + f = 0, + g = 0; + g = c & 63; + f = g; + e = f & 31; + if (f >>> 0 >= 32) { + f = -1 >>> e | 0; + } else { + f = -1 >>> e | 0; + d = f; + f = d | (1 << e) - 1 << 32 - e; + } + f = f & a; + d = b & d; + e = g & 31; + if (g >>> 0 >= 32) { + d = f << e; + g = 0; + } else { + d = (1 << e) - 1 & f >>> 32 - e | d << e; + g = f << e; + } + f = d; + e = 0 - c & 63; + d = e & 31; + if (e >>> 0 >= 32) { + d = -1 << d; + c = 0; + } else { + c = -1 << d; + d = c | (1 << d) - 1 & -1 >>> 32 - d; + } + a = c & a; + b = b & d; + d = e & 31; + if (e >>> 0 >= 32) { + c = 0; + a = b >>> d | 0; + } else { + c = b >>> d | 0; + a = ((1 << d) - 1 & b) << 32 - d | a >>> d; + } + a = a | g; + R = c | f; + return a; + } + function Ba(a) { + a = a | 0; + var b = 0, + c = 0, + d = 0, + e = 0; + v[a + 29020 >> 2] = 0; + v[a + 28964 >> 2] = 0; + b = v[a + 28944 >> 2]; + a: { + if (!b) { + break a; + } + d = v[b + 26692 >> 2]; + c = v[b + 26688 >> 2]; + b: { + c: { + e = v[b >> 2]; + if (e) { + if (!c) { + break c; + } + S[c | 0](d, e); + S[c | 0](d, b); + break a; + } + if (!c) { + break b; + } + S[c | 0](d, b); + break a; + } + Y(e); + } + Y(b); + } + v[a + 28960 >> 2] = 0; + v[a + 28944 >> 2] = 0; + v[a + 28948 >> 2] = 0; + return (v[a + 28908 >> 2] ? 1 : 5) | 0; + } + function Ga(a, b, c, d) { + var e = 0, + f = 0, + g = 0, + h = 0, + i = 0, + j = 0; + e = c >>> 16 | 0; + f = a >>> 16 | 0; + j = B(e, f); + g = c & 65535; + h = a & 65535; + i = B(g, h); + f = (i >>> 16 | 0) + B(f, g) | 0; + e = (f & 65535) + B(e, h) | 0; + R = (B(b, c) + j | 0) + B(a, d) + (f >>> 16) + (e >>> 16) | 0; + return i & 65535 | e << 16; + } + function sa() { + var a = 0, + b = 0, + c = 0; + while (1) { + b = a << 4; + c = b + 4832 | 0; + v[b + 4836 >> 2] = c; + v[b + 4840 >> 2] = c; + a = a + 1 | 0; + if ((a | 0) != 64) { + continue; + } + break; + } + fa(48); + } + function ya(a) { + a = a | 0; + return a >>> 0 > 4294967176 | 0; + } + function ua(a) { + a = a | 0; + a = Q - a & -16; + Q = a; + return a | 0; + } + function za(a) { + a = a | 0; + return ea(a) | 0; + } + function Da() { + return 131075; + } + function Ca() { + return 131072; + } + function xa(a) { + a = a | 0; + Y(a); + } + function wa() { + return Q | 0; + } + function va(a) { + a = a | 0; + Q = a; + } + // EMSCRIPTEN_END_FUNCS + e = w; + p(); + var S = c([]); + function T() { + return s.byteLength / 65536 | 0; + } + return { + "d": sa, + "e": za, + "f": xa, + "g": ya, + "h": ta, + "i": Fa, + "j": Ea, + "k": Da, + "l": Ca, + "m": Ba, + "n": Aa, + "o": S, + "p": wa, + "q": va, + "r": ua + }; + } + return U(W); + } + // EMSCRIPTEN_END_ASM + (E); + } + function ca() { + return { + then: function then(c) { + c({ + instance: new ba() + }); + } + }; + } + var da = Error, + WebAssembly = {}; + B = []; + "object" !== _typeof(WebAssembly) && F("no native wasm support detected"); + var G, + H = !1; + function J(c) { + var f = a["_" + c]; + f || F("Assertion failed: Cannot call unknown function " + (c + ", make sure it is exported")); + return f; + } + function ea(c, f, d, n) { + var l = { + string: function string(b) { + var e = 0; + if (null !== b && void 0 !== b && 0 !== b) { + var g = (b.length << 2) + 1; + e = K(g); + var h = e, + k = L; + if (0 < g) { + g = h + g - 1; + for (var u = 0; u < b.length; ++u) { + var p = b.charCodeAt(u); + if (55296 <= p && 57343 >= p) { + var I = b.charCodeAt(++u); + p = 65536 + ((p & 1023) << 10) | I & 1023; + } + if (127 >= p) { + if (h >= g) break; + k[h++] = p; + } else { + if (2047 >= p) { + if (h + 1 >= g) break; + k[h++] = 192 | p >> 6; + } else { + if (65535 >= p) { + if (h + 2 >= g) break; + k[h++] = 224 | p >> 12; + } else { + if (h + 3 >= g) break; + k[h++] = 240 | p >> 18; + k[h++] = 128 | p >> 12 & 63; + } + k[h++] = 128 | p >> 6 & 63; + } + k[h++] = 128 | p & 63; + } + } + k[h] = 0; + } + } + return e; + }, + array: function array(b) { + var e = K(b.length); + N.set(b, e); + return e; + } + }; + c = J(c); + var m = [], + q = 0; + if (n) for (var r = 0; r < n.length; r++) { + var C = l[d[r]]; + C ? (0 === q && (q = fa()), m[r] = C(n[r])) : m[r] = n[r]; + } + d = c.apply(null, m); + return d = function (b) { + 0 !== q && ha(q); + if ("string" === f) { + if (b) { + for (var e = L, g = b + NaN, h = b; e[h] && !(h >= g);) ++h; + if (16 < h - b && e.subarray && ia) b = ia.decode(e.subarray(b, h));else { + for (g = ""; b < h;) { + var k = e[b++]; + if (k & 128) { + var u = e[b++] & 63; + if (192 == (k & 224)) g += String.fromCharCode((k & 31) << 6 | u);else { + var p = e[b++] & 63; + k = 224 == (k & 240) ? (k & 15) << 12 | u << 6 | p : (k & 7) << 18 | u << 12 | p << 6 | e[b++] & 63; + 65536 > k ? g += String.fromCharCode(k) : (k -= 65536, g += String.fromCharCode(55296 | k >> 10, 56320 | k & 1023)); + } + } else g += String.fromCharCode(k); + } + b = g; + } + } else b = ""; + } else b = "boolean" === f ? !!b : b; + return b; + }(d); + } + var ia = "undefined" !== typeof TextDecoder ? new TextDecoder("utf8") : void 0, + O, + N, + L, + D = a.INITIAL_MEMORY || 150994944; + a.wasmMemory ? G = a.wasmMemory : G = new aa(); + G && (O = G.buffer); + D = O.byteLength; + var P = O; + O = P; + a.HEAP8 = N = new Int8Array(P); + a.HEAP16 = new Int16Array(P); + a.HEAP32 = new Int32Array(P); + a.HEAPU8 = L = new Uint8Array(P); + a.HEAPU16 = new Uint16Array(P); + a.HEAPU32 = new Uint32Array(P); + a.HEAPF32 = new Float32Array(P); + a.HEAPF64 = new Float64Array(P); + var ja, + ka = [], + la = [], + ma = []; + function na() { + var c = a.preRun.shift(); + ka.unshift(c); + } + Math.imul || (Math.imul = function (c, f) { + var d = c & 65535, + n = f & 65535; + return d * n + ((c >>> 16) * n + d * (f >>> 16) << 16) | 0; + }); + if (!Math.fround) { + var oa = new Float32Array(1); + Math.fround = function (c) { + oa[0] = c; + return oa[0]; + }; + } + Math.clz32 || (Math.clz32 = function (c) { + var f = 32, + d = c >> 16; + d && (f -= 16, c = d); + if (d = c >> 8) f -= 8, c = d; + if (d = c >> 4) f -= 4, c = d; + if (d = c >> 2) f -= 2, c = d; + return c >> 1 ? f - 2 : f - c; + }); + Math.trunc || (Math.trunc = function (c) { + return 0 > c ? Math.ceil(c) : Math.floor(c); + }); + var Q = 0, + S = null; + a.preloadedImages = {}; + a.preloadedAudios = {}; + function F(c) { + if (a.onAbort) a.onAbort(c); + c = "Aborted(" + c + ")"; + A(c); + H = !0; + c = new da(c + ". Build with -s ASSERTIONS=1 for more info."); + v(c); + throw c; + } + function U(c) { + return c.startsWith("data:application/octet-stream;base64,"); + } + var V; + if (a.locateFile) { + if (V = "zstddec-asm.wasm", !U(V)) { + var pa = V; + V = a.locateFile ? a.locateFile(pa, y) : y + pa; + } + } else V = new URL("zstddec-asm.wasm", (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href)).toString(); + function qa() { + var c = V; + try { + if (c == V && B) return new Uint8Array(B); + if (U(c)) try { + var f = ra(c.slice(37)), + d = new Uint8Array(f.length); + for (c = 0; c < f.length; ++c) d[c] = f.charCodeAt(c); + var n = d; + } catch (m) { + throw Error("Converting base64 string to bytes failed."); + } else n = void 0; + var l = n; + if (l) return l; + throw "both async and sync fetching of the wasm failed"; + } catch (m) { + F(m); + } + } + function sa() { + return B || "function" !== typeof fetch ? Promise.resolve().then(function () { + return qa(); + }) : fetch(V, { + credentials: "same-origin" + }).then(function (c) { + if (!c.ok) throw "failed to load wasm binary file at '" + V + "'"; + return c.arrayBuffer(); + }).catch(function () { + return qa(); + }); + } + function W(c) { + for (; 0 < c.length;) { + var f = c.shift(); + if ("function" == typeof f) f(a);else { + var d = f.H; + "number" === typeof d ? void 0 === f.A ? ta(d)() : ta(d)(f.A) : d(void 0 === f.A ? null : f.A); + } + } + } + var X = []; + function ta(c) { + var f = X[c]; + f || (c >= X.length && (X.length = c + 1), X[c] = f = ja.get(c)); + return f; + } + var ra = "function" === typeof atob ? atob : function (c) { + var f = "", + d = 0; + c = c.replace(/[^A-Za-z0-9\+\/=]/g, ""); + do { + var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(d++)); + var l = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(d++)); + var m = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(d++)); + var q = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(c.charAt(d++)); + n = n << 2 | l >> 4; + l = (l & 15) << 4 | m >> 2; + var r = (m & 3) << 6 | q; + f += String.fromCharCode(n); + 64 !== m && (f += String.fromCharCode(l)); + 64 !== q && (f += String.fromCharCode(r)); + } while (d < c.length); + return f; + }, + E = { + b: Uint8Array.prototype.copyWithin ? function (c, f, d) { + L.copyWithin(c, f, f + d); + } : function (c, f, d) { + L.set(L.subarray(f, f + d), c); + }, + c: function c() { + F("OOM"); + }, + a: G + }; + (function () { + function c(l) { + a.asm = l.exports; + ja = a.asm.o; + la.unshift(a.asm.d); + Q--; + a.monitorRunDependencies && a.monitorRunDependencies(Q); + 0 == Q && (S && (l = S, S = null, l())); + } + function f(l) { + c(l.instance); + } + function d(l) { + return sa().then(function () { + return ca(); + }).then(function (m) { + return m; + }).then(l, function (m) { + A("failed to asynchronously prepare wasm: " + m); + F(m); + }); + } + var n = { + a: E + }; + Q++; + a.monitorRunDependencies && a.monitorRunDependencies(Q); + if (a.instantiateWasm) try { + return a.instantiateWasm(n, c); + } catch (l) { + return A("Module.instantiateWasm callback failed with error: " + l), !1; + } + (function () { + return B || "function" !== typeof WebAssembly.instantiateStreaming || U(V) || "function" !== typeof fetch ? d(f) : fetch(V, { + credentials: "same-origin" + }).then(function (l) { + return WebAssembly.instantiateStreaming(l, n).then(f, function (m) { + A("wasm streaming compile failed: " + m); + A("falling back to ArrayBuffer instantiation"); + return d(f); + }); + }); + })().catch(v); + return {}; + })(); + a.___wasm_call_ctors = function () { + return (a.___wasm_call_ctors = a.asm.d).apply(null, arguments); + }; + a._malloc = function () { + return (a._malloc = a.asm.e).apply(null, arguments); + }; + a._free = function () { + return (a._free = a.asm.f).apply(null, arguments); + }; + a._ZSTD_isError = function () { + return (a._ZSTD_isError = a.asm.g).apply(null, arguments); + }; + a._ZSTD_getErrorName = function () { + return (a._ZSTD_getErrorName = a.asm.h).apply(null, arguments); + }; + a._ZSTD_createDStream = function () { + return (a._ZSTD_createDStream = a.asm.i).apply(null, arguments); + }; + a._ZSTD_freeDStream = function () { + return (a._ZSTD_freeDStream = a.asm.j).apply(null, arguments); + }; + a._ZSTD_DStreamInSize = function () { + return (a._ZSTD_DStreamInSize = a.asm.k).apply(null, arguments); + }; + a._ZSTD_DStreamOutSize = function () { + return (a._ZSTD_DStreamOutSize = a.asm.l).apply(null, arguments); + }; + a._ZSTD_initDStream = function () { + return (a._ZSTD_initDStream = a.asm.m).apply(null, arguments); + }; + a._ZSTD_decompressStream = function () { + return (a._ZSTD_decompressStream = a.asm.n).apply(null, arguments); + }; + var fa = a.stackSave = function () { + return (fa = a.stackSave = a.asm.p).apply(null, arguments); + }, + ha = a.stackRestore = function () { + return (ha = a.stackRestore = a.asm.q).apply(null, arguments); + }, + K = a.stackAlloc = function () { + return (K = a.stackAlloc = a.asm.r).apply(null, arguments); + }; + a.cwrap = function (c, f, d, n) { + d = d || []; + var l = d.every(function (m) { + return "number" === m; + }); + return "string" !== f && l && !n ? J(c) : function () { + return ea(c, f, d, arguments); + }; + }; + var Y; + S = function ua() { + Y || Z(); + Y || (S = ua); + }; + function Z() { + function c() { + if (!Y && (Y = !0, a.calledRun = !0, !H)) { + W(la); + t(a); + if (a.onRuntimeInitialized) a.onRuntimeInitialized(); + if (a.postRun) for ("function" == typeof a.postRun && (a.postRun = [a.postRun]); a.postRun.length;) { + var f = a.postRun.shift(); + ma.unshift(f); + } + W(ma); + } + } + if (!(0 < Q)) { + if (a.preRun) for ("function" == typeof a.preRun && (a.preRun = [a.preRun]); a.preRun.length;) na(); + W(ka); + 0 < Q || (a.setStatus ? (a.setStatus("Running..."), setTimeout(function () { + setTimeout(function () { + a.setStatus(""); + }, 1); + c(); + }, 1)) : c()); + } + } + a.run = Z; + if (a.preInit) for ("function" == typeof a.preInit && (a.preInit = [a.preInit]); 0 < a.preInit.length;) a.preInit.pop()(); + Z(); + return ZD.ready; + }; + }(); + + var ZD = function () { + var _scriptDir = (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href); + return function (ZD) { + ZD = ZD || {}; + var a; + a || (a = typeof ZD !== 'undefined' ? ZD : {}); + var q, r; + a.ready = new Promise(function (b, c) { + q = b; + r = c; + }); + var t = {}, + w; + for (w in a) a.hasOwnProperty(w) && (t[w] = a[w]); + var x = ""; + "undefined" !== typeof document && document.currentScript && (x = document.currentScript.src); + _scriptDir && (x = _scriptDir); + 0 !== x.indexOf("blob:") ? x = x.substr(0, x.replace(/[?#].*/, "").lastIndexOf("/") + 1) : x = ""; + var y = a.printErr || console.warn.bind(console); + for (w in t) t.hasOwnProperty(w) && (a[w] = t[w]); + t = null; + var z; + a.wasmBinary && (z = a.wasmBinary); + a.noExitRuntime || !0; + "object" !== (typeof WebAssembly === "undefined" ? "undefined" : _typeof(WebAssembly)) && A("no native wasm support detected"); + var B, + C = !1; + function E(b) { + var c = a["_" + b]; + c || A("Assertion failed: Cannot call unknown function " + (b + ", make sure it is exported")); + return c; + } + function aa(b, c, h, p) { + var e = { + string: function string(d) { + var m = 0; + if (null !== d && void 0 !== d && 0 !== d) { + var l = (d.length << 2) + 1; + m = F(l); + var g = m, + f = G; + if (0 < l) { + l = g + l - 1; + for (var u = 0; u < d.length; ++u) { + var k = d.charCodeAt(u); + if (55296 <= k && 57343 >= k) { + var da = d.charCodeAt(++u); + k = 65536 + ((k & 1023) << 10) | da & 1023; + } + if (127 >= k) { + if (g >= l) break; + f[g++] = k; + } else { + if (2047 >= k) { + if (g + 1 >= l) break; + f[g++] = 192 | k >> 6; + } else { + if (65535 >= k) { + if (g + 2 >= l) break; + f[g++] = 224 | k >> 12; + } else { + if (g + 3 >= l) break; + f[g++] = 240 | k >> 18; + f[g++] = 128 | k >> 12 & 63; + } + f[g++] = 128 | k >> 6 & 63; + } + f[g++] = 128 | k & 63; + } + } + f[g] = 0; + } + } + return m; + }, + array: function array(d) { + var m = F(d.length); + H.set(d, m); + return m; + } + }; + b = E(b); + var n = [], + D = 0; + if (p) for (var v = 0; v < p.length; v++) { + var Q = e[h[v]]; + Q ? (0 === D && (D = I()), n[v] = Q(p[v])) : n[v] = p[v]; + } + h = b.apply(null, n); + return h = function (d) { + 0 !== D && J(D); + if ("string" === c) { + if (d) { + for (var m = G, l = d + NaN, g = d; m[g] && !(g >= l);) ++g; + if (16 < g - d && m.subarray && K) d = K.decode(m.subarray(d, g));else { + for (l = ""; d < g;) { + var f = m[d++]; + if (f & 128) { + var u = m[d++] & 63; + if (192 == (f & 224)) l += String.fromCharCode((f & 31) << 6 | u);else { + var k = m[d++] & 63; + f = 224 == (f & 240) ? (f & 15) << 12 | u << 6 | k : (f & 7) << 18 | u << 12 | k << 6 | m[d++] & 63; + 65536 > f ? l += String.fromCharCode(f) : (f -= 65536, l += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023)); + } + } else l += String.fromCharCode(f); + } + d = l; + } + } else d = ""; + } else d = "boolean" === c ? !!d : d; + return d; + }(h); + } + var K = "undefined" !== typeof TextDecoder ? new TextDecoder("utf8") : void 0, + H, + G, + L, + M = [], + N = [], + O = []; + function ba() { + var b = a.preRun.shift(); + M.unshift(b); + } + var P = 0, + S = null; + a.preloadedImages = {}; + a.preloadedAudios = {}; + function A(b) { + if (a.onAbort) a.onAbort(b); + b = "Aborted(" + b + ")"; + y(b); + C = !0; + b = new WebAssembly.RuntimeError(b + ". Build with -s ASSERTIONS=1 for more info."); + r(b); + throw b; + } + function T() { + return U.startsWith("data:application/octet-stream;base64,"); + } + var U; + if (a.locateFile) { + if (U = "zstddec-wasm.wasm", !T()) { + var V = U; + U = a.locateFile ? a.locateFile(V, x) : x + V; + } + } else U = new URL("zstddec-wasm.wasm", (document.currentScript && document.currentScript.src || new URL('bundle.js', document.location.href.replace(/[^/]*$/, '')).href)).toString(); + function ca() { + var b = U; + try { + if (b == U && z) return new Uint8Array(z); + throw "both async and sync fetching of the wasm failed"; + } catch (c) { + A(c); + } + } + function ea() { + return z || "function" !== typeof fetch ? Promise.resolve().then(function () { + return ca(); + }) : fetch(U, { + credentials: "same-origin" + }).then(function (b) { + if (!b.ok) throw "failed to load wasm binary file at '" + U + "'"; + return b.arrayBuffer(); + }).catch(function () { + return ca(); + }); + } + function W(b) { + for (; 0 < b.length;) { + var c = b.shift(); + if ("function" == typeof c) c(a);else { + var h = c.u; + "number" === typeof h ? void 0 === c.s ? fa(h)() : fa(h)(c.s) : h(void 0 === c.s ? null : c.s); + } + } + } + var X = []; + function fa(b) { + var c = X[b]; + c || (b >= X.length && (X.length = b + 1), X[b] = c = L.get(b)); + return c; + } + var ha = { + a: function a(b, c, h) { + G.copyWithin(b, c, c + h); + }, + b: function b() { + A("OOM"); + } + }; + (function () { + function b(e) { + a.asm = e.exports; + B = a.asm.c; + e = B.buffer; + a.HEAP8 = H = new Int8Array(e); + a.HEAP16 = new Int16Array(e); + a.HEAP32 = new Int32Array(e); + a.HEAPU8 = G = new Uint8Array(e); + a.HEAPU16 = new Uint16Array(e); + a.HEAPU32 = new Uint32Array(e); + a.HEAPF32 = new Float32Array(e); + a.HEAPF64 = new Float64Array(e); + L = a.asm.o; + N.unshift(a.asm.d); + P--; + a.monitorRunDependencies && a.monitorRunDependencies(P); + 0 == P && (S && (e = S, S = null, e())); + } + function c(e) { + b(e.instance); + } + function h(e) { + return ea().then(function (n) { + return WebAssembly.instantiate(n, p); + }).then(function (n) { + return n; + }).then(e, function (n) { + y("failed to asynchronously prepare wasm: " + n); + A(n); + }); + } + var p = { + a: ha + }; + P++; + a.monitorRunDependencies && a.monitorRunDependencies(P); + if (a.instantiateWasm) try { + return a.instantiateWasm(p, b); + } catch (e) { + return y("Module.instantiateWasm callback failed with error: " + e), !1; + } + (function () { + return z || "function" !== typeof WebAssembly.instantiateStreaming || T() || "function" !== typeof fetch ? h(c) : fetch(U, { + credentials: "same-origin" + }).then(function (e) { + return WebAssembly.instantiateStreaming(e, p).then(c, function (n) { + y("wasm streaming compile failed: " + n); + y("falling back to ArrayBuffer instantiation"); + return h(c); + }); + }); + })().catch(r); + return {}; + })(); + a.___wasm_call_ctors = function () { + return (a.___wasm_call_ctors = a.asm.d).apply(null, arguments); + }; + a._malloc = function () { + return (a._malloc = a.asm.e).apply(null, arguments); + }; + a._free = function () { + return (a._free = a.asm.f).apply(null, arguments); + }; + a._ZSTD_isError = function () { + return (a._ZSTD_isError = a.asm.g).apply(null, arguments); + }; + a._ZSTD_getErrorName = function () { + return (a._ZSTD_getErrorName = a.asm.h).apply(null, arguments); + }; + a._ZSTD_createDStream = function () { + return (a._ZSTD_createDStream = a.asm.i).apply(null, arguments); + }; + a._ZSTD_freeDStream = function () { + return (a._ZSTD_freeDStream = a.asm.j).apply(null, arguments); + }; + a._ZSTD_DStreamInSize = function () { + return (a._ZSTD_DStreamInSize = a.asm.k).apply(null, arguments); + }; + a._ZSTD_DStreamOutSize = function () { + return (a._ZSTD_DStreamOutSize = a.asm.l).apply(null, arguments); + }; + a._ZSTD_initDStream = function () { + return (a._ZSTD_initDStream = a.asm.m).apply(null, arguments); + }; + a._ZSTD_decompressStream = function () { + return (a._ZSTD_decompressStream = a.asm.n).apply(null, arguments); + }; + var I = a.stackSave = function () { + return (I = a.stackSave = a.asm.p).apply(null, arguments); + }, + J = a.stackRestore = function () { + return (J = a.stackRestore = a.asm.q).apply(null, arguments); + }, + F = a.stackAlloc = function () { + return (F = a.stackAlloc = a.asm.r).apply(null, arguments); + }; + a.cwrap = function (b, c, h, p) { + h = h || []; + var e = h.every(function (n) { + return "number" === n; + }); + return "string" !== c && e && !p ? E(b) : function () { + return aa(b, c, h, arguments); + }; + }; + var Y; + S = function ia() { + Y || Z(); + Y || (S = ia); + }; + function Z() { + function b() { + if (!Y && (Y = !0, a.calledRun = !0, !C)) { + W(N); + q(a); + if (a.onRuntimeInitialized) a.onRuntimeInitialized(); + if (a.postRun) for ("function" == typeof a.postRun && (a.postRun = [a.postRun]); a.postRun.length;) { + var c = a.postRun.shift(); + O.unshift(c); + } + W(O); + } + } + if (!(0 < P)) { + if (a.preRun) for ("function" == typeof a.preRun && (a.preRun = [a.preRun]); a.preRun.length;) ba(); + W(M); + 0 < P || (a.setStatus ? (a.setStatus("Running..."), setTimeout(function () { + setTimeout(function () { + a.setStatus(""); + }, 1); + b(); + }, 1)) : b()); + } + } + a.run = Z; + if (a.preInit) for ("function" == typeof a.preInit && (a.preInit = [a.preInit]); 0 < a.preInit.length;) a.preInit.pop()(); + Z(); + return ZD.ready; + }; + }(); + + /** + * zstddec_wrapper.js: Javascript wrapper around compiled zstd decompressor. + * + * Copyright 2023 Jaifroid, Mossroy and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + + + // Variable specific to this decompressor (will be used to populate global variable) + var ZSTDMachineType = null; + + // DEV: zstddec.js has been compiled with `-s EXPORT_NAME="ZD" -s MODULARIZE=1` to avoid a clash with xzdec.js + // For explanation of loading method below to avoid conflicts, see https://github.com/emscripten-core/emscripten/blob/master/src/settings.js + + /** + * @typedef EMSInstanceExt An object type representing an Emscripten instance with extended properties + * @property {Integer} _decHandle The decoder stream context object in asm memory (to be re-used for each decoder operation) + * @property {Object} _inBuffer A JS copy of the inBuffer structure to be set in asm memory (malloc) + * @property {Object} _outBuffer A JS copy of the outBuffer structure to be set in asm memory (malloc) + * @property {Integer} _chunkSize The number of compressed bytes to feed to the decompressor in any one read loop + */ + + /** + * The ZSTD Decoder instance + * @type EMSInstanceExt + */ + var zd; + var instantiateDecoder = function instantiateDecoder(instance) { + // Instantiate the zd object + zd = instance; + // Create JS API by wrapping C++ functions + // DEV: Functions with simple types (integers, pointers) do not need to be wrapped + zd.getErrorString = zd.cwrap('ZSTD_getErrorName', 'string', ['number']); + // Get a permanent decoder handle (pointer to control structure) + // NB there is no need to change this handle even between ZIM loads: zstddeclib encourages re-using assigned structures + zd._decHandle = zd._ZSTD_createDStream(); + // In-built function below provides a max recommended chunk size + zd._chunkSize = zd._ZSTD_DStreamInSize(); + // Change _chunkSize if you need a more conservative memory environment, but you may need to experiment with INITIAL_MEMORY + // in zstddec.js (see below) for this to make any difference + // zd._chunkSize = 5 * 1024; + + // Initialize inBuffer + zd._inBuffer = { + ptr: null, + /* pointer to this inBuffer structure in w/asm memory */ + src: null, + /* void* src < start of input buffer */ + size: zd._chunkSize, + /* size_t size < size of input buffer */ + pos: 0 /* size_t pos; < position where reading stopped. Will be updated. Necessarily 0 <= pos <= size */ + }; + // Reserve w/asm memory for the inBuffer structure (we will populate assigned memory later) + zd._inBuffer.ptr = mallocOrDie(3 << 2); // 3 x 32bit bytes + // Reserve w/asm memory for the inBuffer data stream + zd._inBuffer.src = mallocOrDie(zd._inBuffer.size); + + // DEV: Size of outBuffer is currently set as recommended by zd._ZSTD_DStreamOutSize() below; if you are running into + // memory issues, it may be possible to reduce memory consumption by setting a smaller outBuffer size here and + // reompiling zstddec.js with lower TOTAL_MEMORY (or just search for INITIAL_MEMORY in zstddec.js and change it) + var outBufSize = zd._ZSTD_DStreamOutSize(); + + // Initialize outBuffer + zd._outBuffer = { + ptr: null, + /* pointer to this outBuffer structure in asm/wasm memory */ + dst: null, + /* void* dst < start of output buffer (pointer) */ + size: outBufSize, + /* size_t size < size of output buffer */ + pos: 0 /* size_t pos < position where writing stopped. Will be updated. Necessarily 0 <= pos <= size */ + }; + // Reserve w/asm memory for the outBuffer structure + zd._outBuffer.ptr = mallocOrDie(3 << 2); // 3 x 32bit bytes + // Reserve w/asm memory for the outBuffer data steam + zd._outBuffer.dst = mallocOrDie(zd._outBuffer.size); + }; + + // Select asm or wasm conditionally + if ('WebAssembly' in self) { + console.debug('Instantiating WASM zstandard decoder'); + ZSTDMachineType = 'WASM'; + } else { + console.debug('Instantiating ASM zstandard decoder'); + ZSTDMachineType = 'ASM'; + } + var loadASM = function loadASM() { + ZD$1().then(function (inst) { + params.decompressorAPI.assemblerMachineType = ZSTDMachineType; + instantiateDecoder(inst); + }).catch(function (err) { + uiUtil.reportAssemblerErrorToAPIStatusPanel('ZSTD', err, ZSTDMachineType); + }); + }; + if (ZSTDMachineType === 'WASM') { + ZD().then(function (inst) { + params.decompressorAPI.assemblerMachineType = ZSTDMachineType; + instantiateDecoder(inst); + }).catch(function (err) { + ZSTDMachineType = 'ASM'; + loadASM(); + }); + } else { + loadASM(); + } + + /** + * Number of milliseconds to wait for the decompressor to be available for another chunk + * @type Integer + */ + var DELAY_WAITING_IDLE_DECOMPRESSOR = 50; + + /** + * Is the decompressor already working? + * @type Boolean + */ + var busy = false; + + /** + * @typedef Decompressor + * @property {FileReader} _reader The filereader to use (uses plain blob reader defined in zimfile.js) + * @property {Integer} _inStreamPos The current known position in the steam of compressed bytes + * @property {Integer} _inStreamChunkedPos The position once the currently loaded chunk will have been consumed + * @property {Integer} _outStreamPos The position in the decoded byte stream (offset from start of cluster) + * @property {Array} _outDataBuf The buffer that stores decoded bytes (it is set to the requested blob's length, and when full, the data are returned) + * @property {Integer} _outDataBufPos The number of bytes of the requested blob decoded so far + */ + + /** + * @constructor + * @param {FileReader} reader The reader used to extract file slices (defined in zimfile.js) + */ + function Decompressor(reader) { + params.decompressorAPI.decompressorLastUsed = 'ZSTD'; + this._reader = reader; + } + + /** + * Set up the decompression stream, and initiate a read loop to decompress from the beginning of the cluster + * until we reach in the decompressed byte stream + * @param {Integer} offset Cluster offset (in decompressed stream) from which to start reading + * @param {Integer} length Number of decompressed bytes to read + * @returns {Promise} Promise for an ArrayBuffer with decoded data + */ + Decompressor.prototype.readSlice = function (offset, length) { + busy = true; + this._inStreamPos = 0; + this._inStreamChunkedPos = 0; + this._outStreamPos = 0; + this._outDataBuf = new Int8Array(new ArrayBuffer(length)); + this._outDataBufPos = 0; + var ret = zd._ZSTD_initDStream(zd._decHandle); + if (zd._ZSTD_isError(ret)) { + return Promise.reject('Failed to initialize ZSTD decompression'); + } + return this._readLoop(offset, length).then(function (data) { + // DEV: We are re-using all the allocated w/asm memory, so we do not need to free any of structures assigned wiht _malloc + // However, should you need to free assigned structures use, e.g., zd._free(zd._inBuffer.src); + // Additionally, freeing zd._decHandle is not needed, and actually increases memory consumption (crashing zstddeclib) + // Should you need to free the decoder stream handle, use command below, but be sure to create a new stream control object + // before attempting further decompression + // zd._ZSTD_freeDStream(zd._decHandle); + busy = false; + return data; + }); + }; + + /** + * This function ensures that only one decompression runs at a time, launching readSlice() only when + * the decompressor is no longer busy + * @param {Integer} offset The cluster offset (in decompressed stream) at which the requested blob resides + * @param {Integer} length The number of decompressed bytes to read + * @returns {Promise} A Promise for the readSlice() function + */ + Decompressor.prototype.readSliceSingleThread = function (offset, length) { + // Tests whether the decompressor is ready (initiated) and not busy + if (zd && !busy) { + return this.readSlice(offset, length); + } else { + // The decompressor is already in progress. + // To avoid using too much memory, we wait until it has finished + // before using it for another decompression + var that = this; + return new Promise(function (resolve, reject) { + setTimeout(function () { + that.readSliceSingleThread(offset, length).then(resolve, reject); + }, DELAY_WAITING_IDLE_DECOMPRESSOR); + }); + } + }; + + /** + * The main loop for sending compressed data to the decompressor and retrieving decompressed bytes + * Consecutive calls to readLoop may only advance in the stream and may not overlap + * @param {Integer} offset The offset in the *decompressed* byte stream at which the requested blob resides + * @returns {Promise} A Promise for an Int8Array containing the requested blob's decompressed bytes + */ + Decompressor.prototype._readLoop = function (offset) { + var that = this; + return this._fillInBuffer().then(function () { + var finished = false; + var ret = zd._ZSTD_decompressStream(zd._decHandle, zd._outBuffer.ptr, zd._inBuffer.ptr); + if (zd._ZSTD_isError(ret)) { + var errorMessage = "Failed to decompress data stream!\n" + zd.getErrorString(ret); + return Promise.reject(errorMessage); + } + // Get updated outbuffer values + var obxPtr32Bit = zd._outBuffer.ptr >> 2; + var outPos = zd.HEAP32[obxPtr32Bit + 2]; + + // If data have been decompressed, check to see whether the data are in the offset range we need + if (outPos > 0 && that._outStreamPos + outPos >= offset) { + var copyStart = offset - that._outStreamPos; + if (copyStart < 0) copyStart = 0; + for (var i = copyStart; i < outPos && that._outDataBufPos < that._outDataBuf.length; i++) that._outDataBuf[that._outDataBufPos++] = zd.HEAP8[zd._outBuffer.dst + i]; + } + if (that._outDataBufPos === that._outDataBuf.length) finished = true; + // Return without further processing if decompressor has finished + if (finished) return that._outDataBuf; + + // Get updated inbuffer values for processing on the JS sice + // NB the zd.Decoder will read these values from its own buffers + var ibxPtr32Bit = zd._inBuffer.ptr >> 2; + zd._inBuffer.pos = zd.HEAP32[ibxPtr32Bit + 2]; + + // Increment the byte stream positions + that._inStreamPos += zd._inBuffer.pos; + that._outStreamPos += outPos; + // DEV: if outPos is > 0, then we have either copied all data from outBuffer, or we can now throw those data away + // because they are before our required offset + // Se we can now reset the asm outBuffer.pos field to 0 + // Testing outPos is not strictly necessary, but there may be an overhead in writing to HEAP32 + if (!outPos) zd.HEAP32[obxPtr32Bit + 2] = 0; + return that._readLoop(offset); + }).catch(function (err) { + console.error(err); + }); + }; + + /** + * Fills in the instream buffer + * @returns {Promise<0>} A Promise for 0 when all data have been added to the stream + */ + Decompressor.prototype._fillInBuffer = function () { + var that = this; + return this._reader(this._inStreamPos, zd._chunkSize).then(function (data) { + // Populate inBuffer and assign asm/wasm memory if not already assigned + zd._inBuffer.size = data.length; + // Reset inBuffer + zd._inBuffer.pos = 0; + var inBufferStruct = new Int32Array([zd._inBuffer.src, zd._inBuffer.size, zd._inBuffer.pos]); + // Write inBuffer structure to previously assigned w/asm memory + zd.HEAP32.set(inBufferStruct, zd._inBuffer.ptr >> 2); + var outBufferStruct = new Int32Array([zd._outBuffer.dst, zd._outBuffer.size, zd._outBuffer.pos]); + // Write outBuffer structure to w/asm memory + zd.HEAP32.set(outBufferStruct, zd._outBuffer.ptr >> 2); + + // Transfer the (new) data to be read to the inBuffer + zd.HEAPU8.set(data, zd._inBuffer.src); + that._inStreamChunkedPos += data.length; + return 0; + }); + }; + + /** + * Provision asm/wasm data block and get a pointer to the assigned location + * Code used from excellent WASM tutorial here: https://marcoselvatici.github.io/WASM_tutorial/ + * @param {Integer} sizeOfData The number of bytes to be allocated + * @returns {Integer} Pointer to the assigned data block + */ + function mallocOrDie(sizeOfData) { + var dataPointer = zd._malloc(sizeOfData); + if (dataPointer === 0) { + // error allocating memory + var errorMessage = 'Failed allocation of ' + sizeOfData + ' bytes.'; + console.error(errorMessage); + throw new Error(errorMessage); + } + return dataPointer; + } + var zstd = { + Decompressor: Decompressor + }; + + /** + * utf8.js : UTF8 conversion functions + * Original code from http://stackoverflow.com/users/553542/kadm , taken from + * http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string + * + * Copyright 2013-2023 Mossroy and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + + var utf8 = {}; + + /** + * Convert a String into a byte Array, with UTF8 encoding + * @param {String} str + * @returns {Array} + */ + utf8.toByteArray = function (str) { + var byteArray = []; + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) <= 0x7F) { + byteArray.push(str.charCodeAt(i)); + } else { + var h = encodeURIComponent(str.charAt(i)).substr(1).split('%'); + for (var j = 0; j < h.length; j++) { + byteArray.push(parseInt(h[j], 16)); + } + } + } + return byteArray; + }; + + /** + * Convert a byte Array into a String, with UTF8 encoding + * @param {Array} data + * @param {Boolean} zeroTerminated + * @returns {String} + */ + utf8.parse = function (data, zeroTerminated) { + var u0, u1, u2, u3, u4, u5; + var str = ''; + for (var idx = 0; idx < data.length;) { + u0 = data[idx++]; + if (u0 === 0 && zeroTerminated) { + break; + } + if (!(u0 & 0x80)) { + str += String.fromCharCode(u0); + continue; + } + u1 = data[idx++] & 63; + if ((u0 & 0xe0) == 0xc0) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + u2 = data[idx++] & 63; + if ((u0 & 0xf0) == 0xe0) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u3 = data[idx++] & 63; + if ((u0 & 0xF8) == 0xF0) { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3; + } else { + u4 = data[idx++] & 63; + if ((u0 & 0xFC) == 0xF8) { + u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4; + } else { + u5 = data[idx++] & 63; + u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5; + } + } + } + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | ch >> 10, 0xDC00 | ch & 0x3FF); + } + } + return str; + }; + var utf8$1 = { + toByteArray: utf8.toByteArray, + parse: utf8.parse + }; + + /** + * zimDirEntry.js: Container to hold data of a ZIM directory entry. + * + * Copyright 2015 Mossroy and contributors + * License 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 License as published by + * the Free Software Foundation, either version 3 of the License, 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 License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kiwix (file LICENSE-GPLv3.txt). If not, see + */ + + function DirEntry(zimfile, dirEntryData) { + this._zimfile = zimfile; + this.redirect = dirEntryData.redirect; + this.offset = dirEntryData.offset; + this.mimetypeInteger = dirEntryData.mimetypeInteger; + this.namespace = dirEntryData.namespace; + this.redirectTarget = dirEntryData.redirectTarget; + this.cluster = dirEntryData.cluster; + this.blob = dirEntryData.blob; + this.url = dirEntryData.url; + this.title = dirEntryData.title; + } + + /** + * Serialize some attributes of a DirEntry, to be able to store them in a HTML tag attribute, + * and retrieve them later. + * + * @returns {String} + */ + DirEntry.prototype.toStringId = function () { + // @todo also store isRedirect and redirectTarget + return this.offset + '|' + this.mimetypeInteger + '|' + this.namespace + '|' + this.cluster + '|' + this.blob + '|' + this.url + '|' + this.title + '|' + this.redirect + '|' + this.redirectTarget; + }; + + /** + * + * @returns {Boolean} + */ + DirEntry.prototype.isRedirect = function () { + return this.redirect; + }; + + /** + * + * @returns {Promise} + */ + DirEntry.prototype.readData = function () { + return this._zimfile.blob(this.cluster, this.blob); + }; + + /** + * + * @param {File} zimfile + * @param {String} stringId + * @returns {DirEntry} + */ + DirEntry.fromStringId = function (zimfile, stringId) { + var data = {}; + var idParts = stringId.split('|'); + data.offset = parseInt(idParts[0], 10); + data.mimetypeInteger = parseInt(idParts[1], 10); + data.namespace = idParts[2]; + data.cluster = parseInt(idParts[3], 10); + data.blob = parseInt(idParts[4], 10); + data.url = idParts[5]; + data.title = idParts[6]; + data.redirect = idParts[7] === 'true'; + data.redirectTarget = idParts[8]; + return new DirEntry(zimfile, data); + }; + + /** + * Defines a function that returns the URL if the title is empty, as per the specification + * See https://wiki.openzim.org/wiki/ZIM_file_format#Directory_Entries + * + * @returns {String} The dirEntry's title or, if empty, the dirEntry's (unescaped) URL + */ + DirEntry.prototype.getTitleOrUrl = function () { + return this.title ? this.title : this.url; + }; + + /** + * Looks up the dirEntry's mimetype number in the ZIM file's MIME type list, and returns the corresponding MIME type + * + * @return {String} The MIME type corresponding to mimetypeInteger in the ZIM file's MIME type list + */ + DirEntry.prototype.getMimetype = function () { + return this._zimfile.mimeTypes.get(this.mimetypeInteger); + }; + var zimDirEntry = { + DirEntry: DirEntry + }; + + /** + * filecache.js: Generic cache for small, frequently read file slices. + * It discards cached blocks according to a least-recently-used algorithm. + * It is used primarily for fast Directory Entry lookup, speeding up binary search. + * + * Copyright 2020 Mossroy, peter-x, jaifroid and contributors + * License GPL v3: + * + * This file is part of Kiwix. + * + * Kiwix JS 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. + * + * Kiwix JS 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 Kiwix JS (file LICENSE). If not, see + */ + + var MAX_CACHE_SIZE = 4000; + + /** + * The maximum blocksize to read or store via the block cache (bytes) + * @constant + * @type {Number} + */ + var BLOCK_SIZE = 4096; + + /** + * A Block Cache employing a Least Recently Used caching strategy + * @typedef {Object} BlockCache + * @property {Number} capacity The maximum number of entries in the cache + * @property {Map} cache A map to store the cache keys and data + */ + + /** + * Creates a new cache with max size limit of MAX_CACHE_SIZE blocks + * LRUCache implemnentation with Map adapted from https://markmurray.co/blog/lru-cache/ + */ + function LRUCache() { + /** CACHE TUNING **/ + // console.log('Creating cache of size ' + MAX_CACHE_SIZE + ' * ' + BLOCK_SIZE + ' bytes'); + // Initialize persistent Cache properties + this.capacity = MAX_CACHE_SIZE; + this.cache = new Map(); + } + + /** + * Tries to retrieve an element by its id. If it is not present in the cache, returns undefined; if it is present, + * then the value is returned and the entry is moved to the bottom of the cache + * @param {String} key The block cache entry key (file.id + ':' + byte offset) + * @returns {Uint8Array | undefined} The requested cache data or undefined + */ + LRUCache.prototype.get = function (key) { + var entry = this.cache.get(key); + // If the key does not exist, return + if (!entry) return entry; + // Remove the key and re-insert it (this moves the key to the bottom of the Map: bottom = most recent) + this.cache.delete(key); + this.cache.set(key, entry); + // Return the cached data + return entry; + }; + + /** + * Stores a value in the cache by id and prunes the least recently used entry if the cache is larger than MAX_CACHE_SIZE + * @param {String} key The key under which to store the value (file.id + ':' + byte offset from start of ZIM archive) + * @param {Uint8Array} value The value to store in the cache + */ + LRUCache.prototype.store = function (key, value) { + // We get the existing entry's object for memory-management purposes; if it exists, it will contain identical data + // to , but is strongly referenced by the Map. (It should be rare that two async Promises attempt to + // store the same data in the Cache, once the Cache is sufficiently populated.) + var entry = this.cache.get(key); + // If the key already exists, delete it and re-insert it, so that it will be added + // to the bottom of the Map (bottom = most recent) + if (entry) this.cache.delete(key);else entry = value; + this.cache.set(key, entry); + // If we've exceeded the cache capacity, then delete the least recently accessed value, + // which will be the item at the top of the Map, i.e the first position + if (this.cache.size > this.capacity) { + if (this.cache.keys) { + var firstKey = this.cache.keys().next().value; + this.cache.delete(firstKey); + } else { + // IE11 doesn't support the keys iterator, so we have to do a forEach loop through all 4000 entries + // to get the oldest values. To prevent excessive iterations, we delete 25% at a time. + var q = Math.floor(0.25 * this.capacity); + var c = 0; + // console.log('Deleteing ' + q + ' cache entries'); + this.cache.forEach(function (v, k, map) { + if (c > q) return; + map.delete(k); + c++; + }); + } + } + }; + + /** + * A new Block Cache + * @type {BlockCache} + */ + var cache$1 = new LRUCache(); + + /** CACHE TUNING **/ + // DEV: Uncomment this block and blocks below marked 'CACHE TUNING' to measure Cache hit and miss rates for different Cache sizes + // var hits = 0; + // var misses = 0; + + /** + * Read a certain byte range in the given file, breaking the range into chunks that go through the cache + * If a read of more than BLOCK_SIZE * 2 (bytes) is requested, do not use the cache + * @param {Object} file The requested ZIM archive to read from + * @param {Number} begin The byte from which to start reading + * @param {Number} end The byte at which to stop reading (end will not be read) + * @return {Promise} A Promise that resolves to the correctly concatenated data from the cache + * or from the ZIM archive + */ + var read = function read(file, begin, end) { + // Read large chunks bypassing the block cache because we would have to + // stitch together too many blocks and would clog the cache + if (end - begin > BLOCK_SIZE * 2) return file._readSplitSlice(begin, end); + var readRequests = []; + var blocks = {}; + // Look for the requested data in the blocks: we may need to stitch together data from two or more blocks + for (var id = Math.floor(begin / BLOCK_SIZE) * BLOCK_SIZE; id < end; id += BLOCK_SIZE) { + var block = cache$1.get(file.id + ':' + id); + if (block === undefined) { + // Data not in cache, so read from archive + /** CACHE TUNING **/ + // misses++; + // DEV: This is a self-calling function, i.e. the function is called with an argument of which then + // becomes the parameter + readRequests.push(function (offset) { + return file._readSplitSlice(offset, offset + BLOCK_SIZE).then(function (result) { + cache$1.store(file.id + ':' + offset, result); + blocks[offset] = result; + }); + }(id)); + } else { + /** CACHE TUNING **/ + // hits++; + blocks[id] = block; + } + } + /** CACHE TUNING **/ + // if (misses + hits > 2000) { + // console.log('** Block cache hit rate: ' + Math.round(hits / (hits + misses) * 1000) / 10 + '% [ hits:' + hits + + // ' / misses:' + misses + ' ] Size: ' + cache.cache.size); + // hits = 0; + // misses = 0; + // } + // Wait for all the blocks to be read either from the cache or from the archive + return Promise.all(readRequests).then(function () { + var result = new Uint8Array(end - begin); + var pos = 0; + // Stitch together the data parts in the right order + for (var i = Math.floor(begin / BLOCK_SIZE) * BLOCK_SIZE; i < end; i += BLOCK_SIZE) { + var b = Math.max(i, begin) - i; + var e = Math.min(end, i + BLOCK_SIZE) - i; + if (blocks[i].subarray) result.set(blocks[i].subarray(b, e), pos); + pos += e - b; + } + return result; + }); + }; + var FileCache = { + read: read + }; + + /** + * zimfile.js: Low-level ZIM file reader. + * + * Copyright 2015 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 + */ + + + /** + * This code makes an assumption that no Directory Entry will be larger that MAX_SUPPORTED_DIRENTRY_SIZE bytes. + * If a larger dirEntry is encountered, a warning will display in console. Increase this value if necessary. + * See https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers to understand + * why 5120 has been chosen here (maximum that IE11 can deal with in code). + */ + var MAX_SUPPORTED_DIRENTRY_SIZE = 5120; + + /** + * Add Polyfill currently required by IE11 to run zstddec-asm and xzdec-asm + * See https://github.com/emscripten-core/emscripten/issues/14700 + * If this is resolved upstream, remove this polyfill + * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + */ + if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { + value: function value(search, rawPos) { + var pos = rawPos > 0 ? rawPos | 0 : 0; + return this.substring(pos, pos + search.length) === search; + } + }); + } + + /** + * A global variable to track the assembler machine type and the last used decompressor (for reporting to the API panel) + * This is populated in the Emscripten wrappers + * @type {Object} + * @property {String} assemblerMachineType The assembler machine type supported and/or loaded by this app: 'ASM' or 'WASM' + * @property {String} decompressorLastUsed The decompressor that was last used to decode a compressed cluster (currently 'XZ' or 'ZSTD') + * @property {String} errorStatus A description of any detected error in loading a decompressor + */ + params.decompressorAPI = { + assemblerMachineType: null, + decompressorLastUsed: null, + errorStatus: null + }; + + /** + * A variable to keep track of the currently loaded ZIM archive, e.g., for labelling cache entries + * The ID is temporary and is reset to 0 at each session start; it is incremented by 1 each time a new ZIM is loaded + * @type {Integer} + */ + var tempFileId = 0; + + /** + * A Map to keep track of temporary File IDs + * @type {Map} + */ + var fileIDs = new Map(); + var readInt = function readInt(data, offset, size) { + var r = 0; + for (var i = 0; i < size; i++) { + var c = data[offset + i] + 256 & 0xff; + r += util.leftShift(c, 8 * i); + } + return r; + }; + + /** + * A ZIM File + * + * See https://wiki.openzim.org/wiki/ZIM_file_format#Header + * Some properties below are extended and are not part of the official OpenZIM specification + * + * @typedef {Object} ZIMFile + * @property {Array} _files Array of ZIM files + * @property {String} name Abstract archive name for file set + * @property {Integer} id Arbitrary numeric ZIM id used to track the currently loaded archive + * @property {Integer} entryCount Total number of entries in the URL pointerlist + * @property {Integer} articleCount Total number of article titles in the v1 article-only pointerlist (async calculated entry) + * @property {Integer} clusterCount Total number of clusters + * @property {Integer} urlPtrPos Position of the directory pointerlist ordered by URL + * @property {Integer} titlePtrPos Position of the legacy v0 pointerlist ordered by title + * @property {Integer} articlePtrPos Position of the v1 article-only pointerlist ordered by title (async calculated entry) + * @property {Integer|String} fullTextIndex Extended property: position of the full text index, or its path if it exists but has no metadata + * @property {Integer} fullTextIndexSize Extended property: the size of the full text index as indicated in the metadata, or null if not specified + * @property {Integer} clusterPtrPos Position of the cluster pointer list + * @property {Integer} mimeListPos Position of the MIME type list (also header size) + * @property {Integer} mainPage Main page or 0xffffffff if no main page + * @property {Integer} layoutPage Layout page or 0xffffffffff if no layout page + * @property {Map} mimeTypes Extended property: the ZIM file's MIME type table rendered as a Map (calculated entry) + */ + + /** + * Abstract an array of one or more (split) ZIM archives + * @param {Array} abstractFileArray An array of ZIM file parts + */ + function ZIMFile(abstractFileArray) { + this._files = abstractFileArray; + } + + /** + * Read and decode an integer value from the ZIM archive + * @param {Integer} offset The offset at which the integer is found + * @param {Integer} size The size of data to read + * @returns {Promise} A Promise for the returned value + */ + ZIMFile.prototype._readInteger = function (offset, size) { + return this._readSlice(offset, size).then(function (data) { + return readInt(data, 0, size); + }); + }; + + /** + * Read a slice from the FileCache or ZIM set, starting at offset for size of bytes + * @param {Integer} offset The absolute offset from the start of the ZIM file or file set at which to start reading + * @param {Integer} size The number of bytes to read + * @returns {Promise} A Promise for a Uint8Array containing the requested data + */ + ZIMFile.prototype._readSlice = function (offset, size) { + return FileCache.read(this, offset, offset + size); + }; + + /** + * Read a slice from a set of one or more ZIM files constituting a single archive, and concatenate the data parts + * @param {Integer} begin The absolute byte offset from which to start reading + * @param {Integer} end The absolute byte offset where reading should stop (the end byte is not read) + * @returns {Promise} A Promise for a Uint8Array containing the concatenated data + */ + ZIMFile.prototype._readSplitSlice = function (begin, end) { + var file = this; + var readRequests = []; + var currentOffset = 0; + for (var i = 0; i < file._files.length; currentOffset += file._files[i].size, ++i) { + var currentSize = file._files[i].size; + if (begin < currentOffset + currentSize && currentOffset < end) { + // DEV: Math.max is used below because we could be reading the last part of a blob split across two files, + // in which case (begin - currentOffset) could be negative! + var readStart = Math.max(0, begin - currentOffset); + var readEnd = Math.min(currentSize, end - currentOffset); + readRequests.push(util.readFileSlice(file._files[i], readStart, readEnd)); + } + } + if (readRequests.length === 0) { + return Promise.resolve(new Uint8Array(0).buffer); + } else if (readRequests.length === 1) { + return readRequests[0]; + } else { + // Wait until all are resolved and concatenate. + return Promise.all(readRequests).then(function (arrays) { + var concatenated = new Uint8Array(end - begin); + var offset = 0; + arrays.forEach(function (item) { + concatenated.set(new Uint8Array(item), offset); + offset += item.byteLength; + }); + return concatenated; + }); + } + }; + + /** + * Read and parse a Directory Entry at the given archive offset + * @param {Integer} offset The offset at which the DirEntry is located + * @returns {Promise} A Promise for the requested DirEntry + */ + ZIMFile.prototype.dirEntry = function (offset) { + var that = this; + return this._readSlice(offset, MAX_SUPPORTED_DIRENTRY_SIZE).then(function (data) { + var dirEntry = { + offset: offset, + mimetypeInteger: readInt(data, 0, 2), + namespace: String.fromCharCode(data[3]) + }; + dirEntry.redirect = dirEntry.mimetypeInteger === 0xffff; + if (dirEntry.redirect) { + dirEntry.redirectTarget = readInt(data, 8, 4); + } else { + dirEntry.cluster = readInt(data, 8, 4); + dirEntry.blob = readInt(data, 12, 4); + } + var pos = dirEntry.redirect ? 12 : 16; + if (data.subarray) { + dirEntry.url = utf8$1.parse(data.subarray(pos), true); + for (pos; pos <= MAX_SUPPORTED_DIRENTRY_SIZE; pos++) { + if (data[pos] === 0) break; + } + if (data[pos] === 0) { + dirEntry.title = utf8$1.parse(data.subarray(pos + 1), true); + } else { + // DEV: If you encounter this warning in console, it means that a very large dirEntry.url has exceeded the maximum supported + // dirEntry size. Consider increasing MAX_SUPPORTED_DIRENTRY_SIZE if such warnings are encountered regularly with a ZIM. + console.warn('WARNING! A Directory Entry URL larger than ' + MAX_SUPPORTED_DIRENTRY_SIZE + ' bytes was encountered! ' + 'The dirEntry.url is likely to be invalid.', dirEntry.url); + } + return new zimDirEntry.DirEntry(that, dirEntry); + } + }); + }; + + /** + * Find a Directory Entry based on its URL Pointer index + * @param {Integer} index The URL Pointer index to the DirEntry + * @returns {Promise} A Promise for the requested DirEntry + */ + ZIMFile.prototype.dirEntryByUrlIndex = function (index) { + var that = appstate.selectedArchive.file; + if (!that) return Promise.resolve(null); + return that._readInteger(that.urlPtrPos + index * 8, 8).then(function (dirEntryPos) { + return that.dirEntry(dirEntryPos); + }); + }; + + /** + * Find a Directory Entry based on its Title Pointer index + * @param {Integer} index The Title Pointer index to the DirEntry + * @returns {Promise} A Promise for the requested DirEntry + */ + ZIMFile.prototype.dirEntryByTitleIndex = function (index) { + var that = appstate.selectedArchive.file; + // Use v1 title pointerlist if available, or fall back to legacy v0 list + var ptrList = that.articlePtrPos || that.titlePtrPos; + return that._readInteger(ptrList + index * 4, 4).then(function (urlIndex) { + return that.dirEntryByUrlIndex(urlIndex); + }); + }; + + /** + * Read and if necessary decompress a BLOB based on its cluster number and blob number + * @param {Integer} cluster The cluster number where the blob is to be found + * @param {Integer} blob The blob number within the cluster + * @param {Boolean} meta If true, and if the cluster is uncompressed, the function will return only the blob's metadata + * (its archive offset and its size), otherwise return null + * @returns {Promise} A Promise for the BLOB's data + */ + ZIMFile.prototype.blob = function (cluster, blob, meta) { + var that = this; + return this._readSlice(this.clusterPtrPos + cluster * 8, 16).then(function (clusterOffsets) { + var clusterOffset = readInt(clusterOffsets, 0, 8); + var nextCluster = readInt(clusterOffsets, 8, 8); + // DEV: The method below of calculating cluster size is not safe: see https://github.com/openzim/libzim/issues/84#issuecomment-612962250 + // var thisClusterLength = nextCluster - clusterOffset - 1; + return that._readSlice(clusterOffset, 1).then(function (compressionType) { + var decompressor; + var plainBlobReader = function plainBlobReader(offset, size, dataPass) { + // Check that we are not reading beyond the end of the cluster + var offsetStart = clusterOffset + 1 + offset; + if (offsetStart < nextCluster) { + // Gratuitous parentheses added for legibility + size = offsetStart + size <= nextCluster ? size : nextCluster - offsetStart; + // DEV: This blob reader is called twice: on the first pass it reads the cluster's blob list, + // and on the second pass ("dataPass") it is ready to read the blob's data + if (meta && dataPass) { + // If only metadata were requested and we are on the data pass, we should now have them + return { + ptr: offsetStart, + size: size + }; + } else { + return that._readSlice(offsetStart, size); + } + } else { + return Promise.resolve(new Uint8Array(0).buffer); + } + }; + // If only metadata were requested and the cluster is compressed, return null (this is probably a ZIM format error) + // DEV: This is because metadata are only requested for finding absolute offsets into uncompressed clusters, + // principally for finding the start and size of a title pointer listing + if (meta && compressionType[0] > 1) return null; + if (compressionType[0] === 0 || compressionType[0] === 1) { + // uncompressed + decompressor = { + readSliceSingleThread: plainBlobReader + }; + } else if (compressionType[0] === 4) { + decompressor = new xz.Decompressor(plainBlobReader); + } else if (compressionType[0] === 5) { + decompressor = new zstd.Decompressor(plainBlobReader); + } else { + return new Uint8Array(); // unsupported compression type + } + + return decompressor.readSliceSingleThread(blob * 4, 8, false).then(function (data) { + var blobOffset = readInt(data, 0, 4); + var nextBlobOffset = readInt(data, 4, 4); + return decompressor.readSliceSingleThread(blobOffset, nextBlobOffset - blobOffset, true); + }); + }); + }); + }; + + /** + * A Directory Listing object + * @typedef {Object} DirListing A list of pointers to directory entries (via the URL pointerlist) + * @property {String} path The path (url) to the directory entry for the Listing + * @property {String} ptrName The name of the pointer to the Listing's data that will be added to the ZIMFile obect + * @property {String} countName The name of the key that will contain the number of entries in the Listing, to be added to the ZIMFile object + */ + + /** + * Read the metadata (archive offset pointer, and number of entiries) of one or more ZIM directory Listings. + * This supports reading a subset of user content that might be ordered differently from the main URL pointerlist. + * In particular, it supports the v1 article pointerlist, which contains articles sorted by title, superseding the article + * namespace ('A') in legazy ZIM archives. + * @param {Array} listings An array of DirListing objects (see zimArchive.js for examples) + * @returns {Promise} A promise that populates calculated entries in the ZIM file header + */ + ZIMFile.prototype.setListings = function (listings) { + var that = this; + // If we are in a legacy ZIM archive, we need to calculate the true article count (of entries in the A namespace) + // This effectively emulates the v1 article pointerlist + if (this.minorVersion === 0) { + // Initiate a binary search for the first or last article + var getArticleIndexByOrdinal = function getArticleIndexByOrdinal(ordinal) { + return util.binarySearch(0, that.entryCount, function (i) { + return that.dirEntryByTitleIndex(i).then(function (dirEntry) { + var ns = dirEntry.namespace; + var url = ns + '/' + dirEntry.getTitleOrUrl(); + var prefix = ordinal === 'first' ? 'A' : 'B'; + if (prefix < ns) return -1;else if (prefix > ns) return 1; + return prefix < url ? -1 : 1; + }); + }, true).then(function (index) { + return index; + }); + }; + getArticleIndexByOrdinal('first').then(function (idxFirstArticle) { + return getArticleIndexByOrdinal('last').then(function (idxLastArticle) { + // Technically idxLastArticle points to the entry after the last article in the 'A' namespace, + // We subtract the first from the last to get the number of entries in the 'A' namespace + that.articlePtrPos = that.titlePtrPos + idxFirstArticle * 4; + that.articleCount = idxLastArticle - idxFirstArticle; + console.debug('Calculated article count is: ' + that.articleCount); + }); + }); + } + var highestListingVersion = 0; + var listingAccessor = function listingAccessor(listing) { + if (!listing) { + // No more listings, so exit + console.debug('ZIM DirListing version: ' + highestListingVersion + (highestListingVersion ? '' : ' (legacy)'), that); + console.debug('Article count is: ' + that.articleCount); + if (that.fullTextIndex) console.debug('ZIM has fullTextIndex with listed size: ' + that.fullTextIndexSize); + return null; + } + // Check if we already have this listing's values, so we don't do redundant binary searches + if (that[listing.ptrName] && that[listing.countName]) { + highestListingVersion = Math.max(~~listing.path.replace(/.+(\d)$/, '$1'), highestListingVersion); + // Get the next listing + return listingAccessor(listings.pop()); + } + // Initiate a binary search for the listing URL + return util.binarySearch(0, that.entryCount, function (i) { + return that.dirEntryByUrlIndex(i).then(function (dirEntry) { + var url = dirEntry.namespace + '/' + dirEntry.url; + if (listing.path < url) { + return -1; + } else if (listing.path > url) { + return 1; + } else { + return 0; + } + }); + }).then(function (index) { + if (index === null) return null; + return that.dirEntryByUrlIndex(index); + }).then(function (dirEntry) { + if (!dirEntry) return null; + // Detect a full text index + if (/fulltext\//.test(dirEntry.url)) { + that[listing.ptrName] = dirEntry.namespace + '/' + dirEntry.url; + } + // Request the metadata for the blob represented by the dirEntry + return that.blob(dirEntry.cluster, dirEntry.blob, true); + }).then(function (metadata) { + // Note that we do not accept a listing if its size is 0, i.e. if it contains no data + // (although this should not occur, we have been asked to handle it - see kiwix-js #708) + if (metadata && metadata.size) { + that[listing.ptrName] = metadata.ptr; + that[listing.countName] = metadata.size / 4; // Each entry uses 4 bytes + highestListingVersion = Math.max(~~listing.path.replace(/.+(\d)$/, '$1'), highestListingVersion); + } + // Get the next Listing + return listingAccessor(listings.pop()); + }).catch(function (err) { + console.warn('There was an error accessing a Directory Listing', err); + }); + }; + return listingAccessor(listings.pop()); + }; + + /** + * Reads the whole MIME type list and returns it as a populated Map + * The mimeTypeMap is extracted once after the user has picked the ZIM file + * and is stored as ZIMFile.mimeTypes + * @param {File} file The ZIM file (or first file in array of files) from which the MIME type list + * is to be extracted + * @param {Integer} mimeListPos The offset in at which the MIME type list is found + * @param {Integer} urlPtrPos The offset of URL Pointer List in the archive + * @returns {Promise} A promise for the MIME Type list as a Map + */ + function readMimetypeMap(file, mimeListPos, urlPtrPos) { + var typeMap = new Map(); + var size = urlPtrPos - mimeListPos; + // ZIM archives produced since May 2020 relocate the URL Pointer List to the end of the archive + // so we limit the slice size to max 1024 bytes in order to prevent reading the entire archive into an array buffer + // See https://github.com/openzim/libzim/issues/353 + size = size > 1024 ? 1024 : size; + return util.readFileSlice(file, mimeListPos, mimeListPos + size).then(function (data) { + if (data.subarray) { + var i = 0; + var pos = -1; + var mimeString; + while (pos < size) { + pos++; + mimeString = utf8$1.parse(data.subarray(pos), true); + // If the parsed data is an empty string, we have reached the end of the MIME type list, so break + if (!mimeString) break; + // Store the parsed string in the Map + typeMap.set(i, mimeString); + i++; + while (data[pos]) { + pos++; + } + } + } + return typeMap; + }).catch(function (err) { + console.error('Unable to read MIME type list', err); + return new Map(); + }); + } + var zimfile = { + /** + * @param {Array} fileArray An array of picked archive files + * @returns {Promise} A Promise for the ZimFile Object + */ + fromFileArray: function fromFileArray(fileArray) { + // Array of blob objects should be sorted by their name property + fileArray.sort(function (a, b) { + var nameA = a.name.toUpperCase(); + var nameB = b.name.toUpperCase(); + if (nameA < nameB) return -1; + if (nameA > nameB) return 1; + return 0; + }); + return util.readFileSlice(fileArray[0], 0, 80).then(function (header) { + var mimeListPos = readInt(header, 56, 8); + var urlPtrPos = readInt(header, 32, 8); + return readMimetypeMap(fileArray[0], mimeListPos, urlPtrPos).then(function (mapData) { + var zf = new ZIMFile(fileArray); + // Add an abstract archive name (ignoring split file extensions) + zf.name = fileArray[0].name.replace(/(\.zim)\w\w$/i, '$1'); + // Provide a temporary, per-session numeric ZIM ID used in filecache.js + zf.id = fileIDs.get(zf.name); + if (zf.id === undefined) { + zf.id = tempFileId++; + fileIDs.set(zf.name, zf.id); + } + // For a description of these values, see https://wiki.openzim.org/wiki/ZIM_file_format + zf.majorVersion = readInt(header, 4, 2); // Not currently used by this implementation + zf.minorVersion = readInt(header, 6, 2); // Used to determine the User Content namespace + zf.entryCount = readInt(header, 24, 4); + zf.articleCount = null; // Calculated async by setListings() called from zimArchive.js + zf.clusterCount = readInt(header, 28, 4); + zf.urlPtrPos = urlPtrPos; + zf.titlePtrPos = readInt(header, 40, 8); + zf.articlePtrPos = null; // Calculated async by setListings() + zf.fullTextIndex = null; // Calculated async by setListings() + zf.fullTextIndexSize = null; // Calbulated async by setListings() + zf.clusterPtrPos = readInt(header, 48, 8); + zf.mimeListPos = mimeListPos; + zf.mainPage = readInt(header, 64, 4); + zf.layoutPage = readInt(header, 68, 4); + zf.mimeTypes = mapData; + return zf; + }); + }); + } + }; + + /** + * transformZimit.js: Functions to enable reading of Zimit ZIM format. + * + * Copyright 2022 Jaifroid, 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 . + */ + /** + * transformZimit.js: Functions to enable reading of Zimit ZIM format. + * + * Copyright 2022 Jaifroid, 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 appstate, params */ + + /** + * Filters out the Replay system files (since these cannot be loaded alongside a Service Worker without error) + * In the case of the H prefix or the landing page, an 'inspect' property is added to the dirEntry, so that we can discover + * the underlying Zimit landing page below + * @param {dirEntry} dirEntry The directory entry to modify or anull + * @returns {dirEntry} The modified directory entry + */ + function filterReplayFiles(dirEntry) { + if (!(dirEntry && dirEntry.url)) return null; + if (dirEntry.namespace === 'H' || dirEntry.namespace === 'C' && /^H\//.test(dirEntry.url) || params.isLandingPage && /^(A\/)?index\.html(?:[?#]|$)/.test(dirEntry.url)) { + dirEntry.inspect = true; + } + if (/(?:\bload\.js|\bsw\.js|analytics.*\.js|update\.googleapis|play\.google.*(?:stats|logs)|youtube\.com.*\/stats|google\.internal|syndication|survey\.js|yuiloader\.js|doubleclick|play\.google\.|developer\.mozilla\.org\/static\/js\/main\..+\.js)(?:[?#]|$)/i.test(dirEntry.url)) { + dirEntry.nullify = true; + } + return dirEntry; + } + + /** + * Inspects the HTML of the ZIM archive's landing page or of the requested Header to discover the URL to redirect to + * adds a custom redirect to the dirEntry + * @param {dirEntry} dirEntry The directory entry of the landing page or H-prefixed header to process + * @param {String} data The decoded data which the dirEntry points to + * @param {String} cns The Content Name Space of the ZIM (usually 'C' or 'A') + * @returns {dirEntry} The modified directory entry + */ + function getZimitRedirect(dirEntry, data, cns) { + var redirect; + // Type 1 ZIMs don't use the H namespace, and instead use H as prefix to the URL + if (dirEntry.namespace === 'H' || cns === 'C' && /^H\//.test(dirEntry.url)) { + // We are dealing with a Header redirect, so we need to find the Location: field + redirect = data.match(/^Location:\s*https?:\/\/([^/]+)(.*)$/m); + if (!redirect) redirect = data.match(/^WARC-Target-URI:\s*https?:\/\/([^/]+)(.*)$/m); + if (redirect && redirect[1]) { + // Type 1 Zimit ZIMs need intermediary 'A' prefix, since there is no longer any A namespace + params.zimitPrefix = (cns === 'C' ? 'A/' : '') + redirect[1]; + dirEntry.zimitRedirect = cns + '/' + params.zimitPrefix + redirect[2]; + } else { + dirEntry.zimitRedirect = null; + } + } else if (/301\s*moved\s+permanently/i.test(data)) { + redirect = data.match(/moved\s+permanently(?:[^<]|<(?!a\s))+]*?[\s;])(?:src\b|href|url)\s*(=\s*(["']))(?=[./]+|https?)((?:[^>](?!\3|\?|#))+[^>])([^>]*>)/ig; + var regexpZimitJavascriptLinks = /['"(]((?=[^'"?#)]+\.(?:com?\b|net\b|org\b))|(?:(?:https?:)?\/\/)[^'"?#)]*)['"?#)]/ig; + var regexpZimitCssLinks = /\burl\s*\(['"\s]*([^)'"\s]+)['"\s]*\)/ig; + var regexpGetZimitPrefix = /link\s+rel=["']canonical["']\s+href="https?:\/\/([^/"]+)/i; + var regexpRemoveAnalytics1 = /))+?(?:google.*?analytics|adsbygoogle|googleads|doubleclick|pubads|syndication)([^<]|<(?!\/script>))+<\/script>\s*/ig; + var regexpRemoveAnalytics2 = /))+?adsbygoogle(?:[^<]|<(?!\/ins>))+<\/ins>\s*/ig; + var regexpInlineScriptsNotMaths = /<(script\b(?![^>]+type\s*=\s*["'](?:math\/|text\/html|[^"']*?math))(?:[^<]|<(?!\/script>))+<\/script)>/ig; + + /** + * The main function for transforming Zimit URLs into standard ZIM URLs. + * @param {dirEntry} dirEntry The directory entry that points to the extracted data + * @param {String} data The deocmpressed and extracted textual data that the dirEntry points to + * @param {String} mimetype The reported mimetype of the data (this is also in the dirEntry) + * @returns {String} The transformed data string + */ + function transformReplayUrls(dirEntry, data, mimetype, callback) { + /** + * Transform URL links in HTML files + * Note that some Zimit ZIMs have mimeteypes like 'text/html;raw=true', so we can't simply match 'text/html' + * Other ZIMs have a mimetype like 'html' (with no 'text/'), so we have to match as generically as possible + */ + var indexRoot = window.location.pathname.replace(/[^/]+$/, '') + encodeURI(appstate.selectedArchive.file.name); + if (/\bx?html\b/i.test(mimetype)) { + var zimitPrefix = data.match(regexpGetZimitPrefix); + // If the URL is the same as the URL with everything after the first / removed, then we are in the root directory + // We use this to decide whether to remove any relative link prefixes like ../ + var rootDirectory = dirEntry.url === dirEntry.url.replace(/^((?:A\/)?[^/]+\/?).*/, '$1'); + params.zimitPrefix = zimitPrefix ? (dirEntry.namespace === 'C' ? 'A/' : '') + zimitPrefix[1] : params.zimitPrefix; + // Remove lazyimgage system and noscript tags that comment out images + // DEV: Check if this is still necessary + data = data.replace(/