{"version":3,"file":"main.js","sources":["../../../node_modules/iconify-icon/dist/iconify-icon.mjs","../../../node_modules/bootstrap/js/dist/dom/data.js","../../../node_modules/bootstrap/js/dist/util/index.js","../../../node_modules/bootstrap/js/dist/dom/event-handler.js","../../../node_modules/bootstrap/js/dist/dom/manipulator.js","../../../node_modules/bootstrap/js/dist/util/config.js","../../../node_modules/bootstrap/js/dist/base-component.js","../../../node_modules/bootstrap/js/dist/dom/selector-engine.js","../../../node_modules/bootstrap/js/dist/util/swipe.js","../../../node_modules/bootstrap/js/dist/carousel.js","../../frontend/js/components/advantageCarousel.js","../../frontend/js/components/revealEffect.js","../../../node_modules/bootstrap/js/dist/collapse.js","../../frontend/js/components/bonusLineScroll.js","../../frontend/js/components/stickyNavbar.js","../../frontend/js/components/successPopup.js","../../frontend/js/components/friendlyCaptchaCallback.js","../../frontend/js/components/jobList.js","../../../node_modules/swiper/shared/ssr-window.esm.mjs","../../../node_modules/swiper/shared/utils.mjs","../../../node_modules/swiper/shared/swiper-core.mjs","../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../node_modules/swiper/modules/navigation.mjs","../../frontend/js/components/swiper.js","../../../node_modules/friendly-challenge/widget.js","../../frontend/js/main.js"],"sourcesContent":["/**\n* (c) Iconify\n*\n* For the full copyright and license information, please view the license.txt\n* files at https://github.com/iconify/iconify\n*\n* Licensed under MIT.\n*\n* @license MIT\n* @version 3.0.2\n*/\n/** Default values for dimensions */\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/** Default values for transformations */\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/** Default values for all optional IconifyIcon properties */\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/** Default values for all properties used in ExtendedIconifyIcon */\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\n/**\n* Get rotation value\n*/\nfunction rotateFromString(value, defaultValue = 0) {\n\tconst units = value.replace(/^-?[0-9.]*/, \"\");\n\tfunction cleanup(value$1) {\n\t\twhile (value$1 < 0) value$1 += 4;\n\t\treturn value$1 % 4;\n\t}\n\tif (units === \"\") {\n\t\tconst num = parseInt(value);\n\t\treturn isNaN(num) ? 0 : cleanup(num);\n\t} else if (units !== value) {\n\t\tlet split = 0;\n\t\tswitch (units) {\n\t\t\tcase \"%\":\n\t\t\t\tsplit = 25;\n\t\t\t\tbreak;\n\t\t\tcase \"deg\": split = 90;\n\t\t}\n\t\tif (split) {\n\t\t\tlet num = parseFloat(value.slice(0, value.length - units.length));\n\t\t\tif (isNaN(num)) return 0;\n\t\t\tnum = num / split;\n\t\t\treturn num % 1 === 0 ? cleanup(num) : 0;\n\t\t}\n\t}\n\treturn defaultValue;\n}\n\nconst separator = /[\\s,]+/;\n/**\n* Apply \"flip\" string to icon customisations\n*/\nfunction flipFromString(custom, flip) {\n\tflip.split(separator).forEach((str) => {\n\t\tswitch (str.trim()) {\n\t\t\tcase \"horizontal\":\n\t\t\t\tcustom.hFlip = true;\n\t\t\t\tbreak;\n\t\t\tcase \"vertical\":\n\t\t\t\tcustom.vFlip = true;\n\t\t\t\tbreak;\n\t\t}\n\t});\n}\n\nconst defaultCustomisations = {\n    ...defaultIconCustomisations,\n    preserveAspectRatio: '',\n};\n/**\n * Get customisations\n */\nfunction getCustomisations(node) {\n    const customisations = {\n        ...defaultCustomisations,\n    };\n    const attr = (key, def) => node.getAttribute(key) || def;\n    // Dimensions\n    customisations.width = attr('width', null);\n    customisations.height = attr('height', null);\n    // Rotation\n    customisations.rotate = rotateFromString(attr('rotate', ''));\n    // Flip\n    flipFromString(customisations, attr('flip', ''));\n    // SVG attributes\n    customisations.preserveAspectRatio = attr('preserveAspectRatio', attr('preserveaspectratio', ''));\n    return customisations;\n}\n/**\n * Check if customisations have been updated\n */\nfunction haveCustomisationsChanged(value1, value2) {\n    for (const key in defaultCustomisations) {\n        if (value1[key] !== value2[key]) {\n            return true;\n        }\n    }\n    return false;\n}\n\n/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\n/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\n/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n\n/**\n* Extract icons from an icon set\n*\n* Returns list of icons that were found in icon set\n*/\nfunction parseIconSet(data, callback) {\n\tconst names = [];\n\tif (typeof data !== \"object\" || typeof data.icons !== \"object\") return names;\n\tif (data.not_found instanceof Array) data.not_found.forEach((name) => {\n\t\tcallback(name, null);\n\t\tnames.push(name);\n\t});\n\tconst tree = getIconsTree(data);\n\tfor (const name in tree) {\n\t\tconst item = tree[name];\n\t\tif (item) {\n\t\t\tcallback(name, internalGetIconData(data, name, item));\n\t\t\tnames.push(name);\n\t\t}\n\t}\n\treturn names;\n}\n\n/**\n* Optional properties\n*/\nconst optionalPropertyDefaults = {\n\tprovider: \"\",\n\taliases: {},\n\tnot_found: {},\n\t...defaultIconDimensions\n};\n/**\n* Check props\n*/\nfunction checkOptionalProps(item, defaults) {\n\tfor (const prop in defaults) if (prop in item && typeof item[prop] !== typeof defaults[prop]) return false;\n\treturn true;\n}\n/**\n* Validate icon set, return it as IconifyJSON on success, null on failure\n*\n* Unlike validateIconSet(), this function is very basic.\n* It does not throw exceptions, it does not check metadata, it does not fix stuff.\n*/\nfunction quicklyValidateIconSet(obj) {\n\tif (typeof obj !== \"object\" || obj === null) return null;\n\tconst data = obj;\n\tif (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") return null;\n\tif (!checkOptionalProps(obj, optionalPropertyDefaults)) return null;\n\tconst icons = data.icons;\n\tfor (const name in icons) {\n\t\tconst icon = icons[name];\n\t\tif (!name || typeof icon.body !== \"string\" || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\tconst aliases = data.aliases || Object.create(null);\n\tfor (const name in aliases) {\n\t\tconst icon = aliases[name];\n\t\tconst parent = icon.parent;\n\t\tif (!name || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\treturn data;\n}\n\n/**\n* Storage by provider and prefix\n*/\nconst dataStorage = Object.create(null);\n/**\n* Create new storage\n*/\nfunction newStorage(provider, prefix) {\n\treturn {\n\t\tprovider,\n\t\tprefix,\n\t\ticons: Object.create(null),\n\t\tmissing: /* @__PURE__ */ new Set()\n\t};\n}\n/**\n* Get storage for provider and prefix\n*/\nfunction getStorage(provider, prefix) {\n\tconst providerStorage = dataStorage[provider] || (dataStorage[provider] = Object.create(null));\n\treturn providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\n/**\n* Add icon set to storage\n*\n* Returns array of added icons\n*/\nfunction addIconSet(storage, data) {\n\tif (!quicklyValidateIconSet(data)) return [];\n\treturn parseIconSet(data, (name, icon) => {\n\t\tif (icon) storage.icons[name] = icon;\n\t\telse storage.missing.add(name);\n\t});\n}\n/**\n* Add icon to storage\n*/\nfunction addIconToStorage(storage, name, icon) {\n\ttry {\n\t\tif (typeof icon.body === \"string\") {\n\t\t\tstorage.icons[name] = { ...icon };\n\t\t\treturn true;\n\t\t}\n\t} catch (err) {}\n\treturn false;\n}\n/**\n* List available icons\n*/\nfunction listIcons$1(provider, prefix) {\n\tlet allIcons = [];\n\t(typeof provider === \"string\" ? [provider] : Object.keys(dataStorage)).forEach((provider$1) => {\n\t\t(typeof provider$1 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider$1] || {})).forEach((prefix$1) => {\n\t\t\tconst storage = getStorage(provider$1, prefix$1);\n\t\t\tallIcons = allIcons.concat(Object.keys(storage.icons).map((name) => (provider$1 !== \"\" ? \"@\" + provider$1 + \":\" : \"\") + prefix$1 + \":\" + name));\n\t\t});\n\t});\n\treturn allIcons;\n}\n\n/**\n* Allow storing icons without provider or prefix, making it possible to store icons like \"home\"\n*/\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n\tif (typeof allow === \"boolean\") simpleNames = allow;\n\treturn simpleNames;\n}\n/**\n* Get icon data\n*\n* Returns:\n* - IconifyIcon on success, object directly from storage so don't modify it\n* - null if icon is marked as missing (returned in `not_found` property from API, so don't bother sending API requests)\n* - undefined if icon is missing in storage\n*/\nfunction getIconData(name) {\n\tconst icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n\tif (icon) {\n\t\tconst storage = getStorage(icon.provider, icon.prefix);\n\t\tconst iconName = icon.name;\n\t\treturn storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n\t}\n}\n/**\n* Add one icon\n*/\nfunction addIcon$1(name, data) {\n\tconst icon = stringToIcon(name, true, simpleNames);\n\tif (!icon) return false;\n\tconst storage = getStorage(icon.provider, icon.prefix);\n\tif (data) return addIconToStorage(storage, icon.name, data);\n\telse {\n\t\tstorage.missing.add(icon.name);\n\t\treturn true;\n\t}\n}\n/**\n* Add icon set\n*/\nfunction addCollection$1(data, provider) {\n\tif (typeof data !== \"object\") return false;\n\tif (typeof provider !== \"string\") provider = data.provider || \"\";\n\tif (simpleNames && !provider && !data.prefix) {\n\t\tlet added = false;\n\t\tif (quicklyValidateIconSet(data)) {\n\t\t\tdata.prefix = \"\";\n\t\t\tparseIconSet(data, (name, icon) => {\n\t\t\t\tif (addIcon$1(name, icon)) added = true;\n\t\t\t});\n\t\t}\n\t\treturn added;\n\t}\n\tconst prefix = data.prefix;\n\tif (!validateIconName({\n\t\tprefix,\n\t\tname: \"a\"\n\t})) return false;\n\treturn !!addIconSet(getStorage(provider, prefix), data);\n}\n/**\n* Check if icon data is available\n*/\nfunction iconLoaded$1(name) {\n\treturn !!getIconData(name);\n}\n/**\n* Get full icon\n*/\nfunction getIcon$1(name) {\n\tconst result = getIconData(name);\n\treturn result ? {\n\t\t...defaultIconProps,\n\t\t...result\n\t} : result;\n}\n\n/**\n* Remove callback\n*/\nfunction removeCallback(storages, id) {\n\tstorages.forEach((storage) => {\n\t\tconst items = storage.loaderCallbacks;\n\t\tif (items) storage.loaderCallbacks = items.filter((row) => row.id !== id);\n\t});\n}\n/**\n* Update all callbacks for provider and prefix\n*/\nfunction updateCallbacks(storage) {\n\tif (!storage.pendingCallbacksFlag) {\n\t\tstorage.pendingCallbacksFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.pendingCallbacksFlag = false;\n\t\t\tconst items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n\t\t\tif (!items.length) return;\n\t\t\tlet hasPending = false;\n\t\t\tconst provider = storage.provider;\n\t\t\tconst prefix = storage.prefix;\n\t\t\titems.forEach((item) => {\n\t\t\t\tconst icons = item.icons;\n\t\t\t\tconst oldLength = icons.pending.length;\n\t\t\t\ticons.pending = icons.pending.filter((icon) => {\n\t\t\t\t\tif (icon.prefix !== prefix) return true;\n\t\t\t\t\tconst name = icon.name;\n\t\t\t\t\tif (storage.icons[name]) icons.loaded.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse if (storage.missing.has(name)) icons.missing.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse {\n\t\t\t\t\t\thasPending = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t\tif (icons.pending.length !== oldLength) {\n\t\t\t\t\tif (!hasPending) removeCallback([storage], item.id);\n\t\t\t\t\titem.callback(icons.loaded.slice(0), icons.missing.slice(0), icons.pending.slice(0), item.abort);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Unique id counter for callbacks\n*/\nlet idCounter = 0;\n/**\n* Add callback\n*/\nfunction storeCallback(callback, icons, pendingSources) {\n\tconst id = idCounter++;\n\tconst abort = removeCallback.bind(null, pendingSources, id);\n\tif (!icons.pending.length) return abort;\n\tconst item = {\n\t\tid,\n\t\ticons,\n\t\tcallback,\n\t\tabort\n\t};\n\tpendingSources.forEach((storage) => {\n\t\t(storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n\t});\n\treturn abort;\n}\n\n/**\n* Check if icons have been loaded\n*/\nfunction sortIcons(icons) {\n\tconst result = {\n\t\tloaded: [],\n\t\tmissing: [],\n\t\tpending: []\n\t};\n\tconst storage = Object.create(null);\n\ticons.sort((a, b) => {\n\t\tif (a.provider !== b.provider) return a.provider.localeCompare(b.provider);\n\t\tif (a.prefix !== b.prefix) return a.prefix.localeCompare(b.prefix);\n\t\treturn a.name.localeCompare(b.name);\n\t});\n\tlet lastIcon = {\n\t\tprovider: \"\",\n\t\tprefix: \"\",\n\t\tname: \"\"\n\t};\n\ticons.forEach((icon) => {\n\t\tif (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) return;\n\t\tlastIcon = icon;\n\t\tconst provider = icon.provider;\n\t\tconst prefix = icon.prefix;\n\t\tconst name = icon.name;\n\t\tconst providerStorage = storage[provider] || (storage[provider] = Object.create(null));\n\t\tconst localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n\t\tlet list;\n\t\tif (name in localStorage.icons) list = result.loaded;\n\t\telse if (prefix === \"\" || localStorage.missing.has(name)) list = result.missing;\n\t\telse list = result.pending;\n\t\tconst item = {\n\t\t\tprovider,\n\t\t\tprefix,\n\t\t\tname\n\t\t};\n\t\tlist.push(item);\n\t});\n\treturn result;\n}\n\n/**\n* Local storate types and entries\n*/\nconst storage = Object.create(null);\n/**\n* Set API module\n*/\nfunction setAPIModule(provider, item) {\n\tstorage[provider] = item;\n}\n/**\n* Get API module\n*/\nfunction getAPIModule(provider) {\n\treturn storage[provider] || storage[\"\"];\n}\n\n/**\n* Convert icons list from string/icon mix to icons and validate them\n*/\nfunction listToIcons(list, validate = true, simpleNames = false) {\n\tconst result = [];\n\tlist.forEach((item) => {\n\t\tconst icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n\t\tif (icon) result.push(icon);\n\t});\n\treturn result;\n}\n\n/**\n* Create full API configuration from partial data\n*/\nfunction createAPIConfig(source) {\n\tlet resources;\n\tif (typeof source.resources === \"string\") resources = [source.resources];\n\telse {\n\t\tresources = source.resources;\n\t\tif (!(resources instanceof Array) || !resources.length) return null;\n\t}\n\treturn {\n\t\tresources,\n\t\tpath: source.path || \"/\",\n\t\tmaxURL: source.maxURL || 500,\n\t\trotate: source.rotate || 750,\n\t\ttimeout: source.timeout || 5e3,\n\t\trandom: source.random === true,\n\t\tindex: source.index || 0,\n\t\tdataAfterTimeout: source.dataAfterTimeout !== false\n\t};\n}\n/**\n* Local storage\n*/\nconst configStorage = Object.create(null);\n/**\n* Redundancy for API servers.\n*\n* API should have very high uptime because of implemented redundancy at server level, but\n* sometimes bad things happen. On internet 100% uptime is not possible.\n*\n* There could be routing problems. Server might go down for whatever reason, but it takes\n* few minutes to detect that downtime, so during those few minutes API might not be accessible.\n*\n* This script has some redundancy to mitigate possible network issues.\n*\n* If one host cannot be reached in 'rotate' (750 by default) ms, script will try to retrieve\n* data from different host. Hosts have different configurations, pointing to different\n* API servers hosted at different providers.\n*/\nconst fallBackAPISources = [\"https://api.simplesvg.com\", \"https://api.unisvg.com\"];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) if (fallBackAPISources.length === 1) fallBackAPI.push(fallBackAPISources.shift());\nelse if (Math.random() > .5) fallBackAPI.push(fallBackAPISources.shift());\nelse fallBackAPI.push(fallBackAPISources.pop());\nconfigStorage[\"\"] = createAPIConfig({ resources: [\"https://api.iconify.design\"].concat(fallBackAPI) });\n/**\n* Add custom config for provider\n*/\nfunction addAPIProvider$1(provider, customConfig) {\n\tconst config = createAPIConfig(customConfig);\n\tif (config === null) return false;\n\tconfigStorage[provider] = config;\n\treturn true;\n}\n/**\n* Get API configuration\n*/\nfunction getAPIConfig(provider) {\n\treturn configStorage[provider];\n}\n/**\n* List API providers\n*/\nfunction listAPIProviders() {\n\treturn Object.keys(configStorage);\n}\n\n/**\n* Default RedundancyConfig for API calls\n*/\nconst defaultConfig = {\n\tresources: [],\n\tindex: 0,\n\ttimeout: 2e3,\n\trotate: 750,\n\trandom: false,\n\tdataAfterTimeout: false\n};\n\n/**\n* Send query\n*/\nfunction sendQuery(config, payload, query, done) {\n\tconst resourcesCount = config.resources.length;\n\tconst startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n\tlet resources;\n\tif (config.random) {\n\t\tlet list = config.resources.slice(0);\n\t\tresources = [];\n\t\twhile (list.length > 1) {\n\t\t\tconst nextIndex = Math.floor(Math.random() * list.length);\n\t\t\tresources.push(list[nextIndex]);\n\t\t\tlist = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n\t\t}\n\t\tresources = resources.concat(list);\n\t} else resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n\tconst startTime = Date.now();\n\tlet status = \"pending\";\n\tlet queriesSent = 0;\n\tlet lastError;\n\tlet timer = null;\n\tlet queue = [];\n\tlet doneCallbacks = [];\n\tif (typeof done === \"function\") doneCallbacks.push(done);\n\t/**\n\t* Reset timer\n\t*/\n\tfunction resetTimer() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\t/**\n\t* Abort everything\n\t*/\n\tfunction abort() {\n\t\tif (status === \"pending\") status = \"aborted\";\n\t\tresetTimer();\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Add / replace callback to call when execution is complete.\n\t* This can be used to abort pending query implementations when query is complete or aborted.\n\t*/\n\tfunction subscribe(callback, overwrite) {\n\t\tif (overwrite) doneCallbacks = [];\n\t\tif (typeof callback === \"function\") doneCallbacks.push(callback);\n\t}\n\t/**\n\t* Get query status\n\t*/\n\tfunction getQueryStatus() {\n\t\treturn {\n\t\t\tstartTime,\n\t\t\tpayload,\n\t\t\tstatus,\n\t\t\tqueriesSent,\n\t\t\tqueriesPending: queue.length,\n\t\t\tsubscribe,\n\t\t\tabort\n\t\t};\n\t}\n\t/**\n\t* Fail query\n\t*/\n\tfunction failQuery() {\n\t\tstatus = \"failed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(void 0, lastError);\n\t\t});\n\t}\n\t/**\n\t* Clear queue\n\t*/\n\tfunction clearQueue() {\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Got response from module\n\t*/\n\tfunction moduleResponse(item, response, data) {\n\t\tconst isError = response !== \"success\";\n\t\tqueue = queue.filter((queued) => queued !== item);\n\t\tswitch (status) {\n\t\t\tcase \"pending\": break;\n\t\t\tcase \"failed\":\n\t\t\t\tif (isError || !config.dataAfterTimeout) return;\n\t\t\t\tbreak;\n\t\t\tdefault: return;\n\t\t}\n\t\tif (response === \"abort\") {\n\t\t\tlastError = data;\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tif (isError) {\n\t\t\tlastError = data;\n\t\t\tif (!queue.length) if (!resources.length) failQuery();\n\t\t\telse execNext();\n\t\t\treturn;\n\t\t}\n\t\tresetTimer();\n\t\tclearQueue();\n\t\tif (!config.random) {\n\t\t\tconst index = config.resources.indexOf(item.resource);\n\t\t\tif (index !== -1 && index !== config.index) config.index = index;\n\t\t}\n\t\tstatus = \"completed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(data);\n\t\t});\n\t}\n\t/**\n\t* Execute next query\n\t*/\n\tfunction execNext() {\n\t\tif (status !== \"pending\") return;\n\t\tresetTimer();\n\t\tconst resource = resources.shift();\n\t\tif (resource === void 0) {\n\t\t\tif (queue.length) {\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tresetTimer();\n\t\t\t\t\tif (status === \"pending\") {\n\t\t\t\t\t\tclearQueue();\n\t\t\t\t\t\tfailQuery();\n\t\t\t\t\t}\n\t\t\t\t}, config.timeout);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tconst item = {\n\t\t\tstatus: \"pending\",\n\t\t\tresource,\n\t\t\tcallback: (status$1, data) => {\n\t\t\t\tmoduleResponse(item, status$1, data);\n\t\t\t}\n\t\t};\n\t\tqueue.push(item);\n\t\tqueriesSent++;\n\t\ttimer = setTimeout(execNext, config.rotate);\n\t\tquery(resource, payload, item.callback);\n\t}\n\tsetTimeout(execNext);\n\treturn getQueryStatus;\n}\n\n/**\n* Redundancy instance\n*/\nfunction initRedundancy(cfg) {\n\tconst config = {\n\t\t...defaultConfig,\n\t\t...cfg\n\t};\n\tlet queries = [];\n\t/**\n\t* Remove aborted and completed queries\n\t*/\n\tfunction cleanup() {\n\t\tqueries = queries.filter((item) => item().status === \"pending\");\n\t}\n\t/**\n\t* Send query\n\t*/\n\tfunction query(payload, queryCallback, doneCallback) {\n\t\tconst query$1 = sendQuery(config, payload, queryCallback, (data, error) => {\n\t\t\tcleanup();\n\t\t\tif (doneCallback) doneCallback(data, error);\n\t\t});\n\t\tqueries.push(query$1);\n\t\treturn query$1;\n\t}\n\t/**\n\t* Find instance\n\t*/\n\tfunction find(callback) {\n\t\treturn queries.find((value) => {\n\t\t\treturn callback(value);\n\t\t}) || null;\n\t}\n\treturn {\n\t\tquery,\n\t\tfind,\n\t\tsetIndex: (index) => {\n\t\t\tconfig.index = index;\n\t\t},\n\t\tgetIndex: () => config.index,\n\t\tcleanup\n\t};\n}\n\nfunction emptyCallback$1() {}\nconst redundancyCache = Object.create(null);\n/**\n* Get Redundancy instance for provider\n*/\nfunction getRedundancyCache(provider) {\n\tif (!redundancyCache[provider]) {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (!config) return;\n\t\tredundancyCache[provider] = {\n\t\t\tconfig,\n\t\t\tredundancy: initRedundancy(config)\n\t\t};\n\t}\n\treturn redundancyCache[provider];\n}\n/**\n* Send API query\n*/\nfunction sendAPIQuery(target, query, callback) {\n\tlet redundancy;\n\tlet send;\n\tif (typeof target === \"string\") {\n\t\tconst api = getAPIModule(target);\n\t\tif (!api) {\n\t\t\tcallback(void 0, 424);\n\t\t\treturn emptyCallback$1;\n\t\t}\n\t\tsend = api.send;\n\t\tconst cached = getRedundancyCache(target);\n\t\tif (cached) redundancy = cached.redundancy;\n\t} else {\n\t\tconst config = createAPIConfig(target);\n\t\tif (config) {\n\t\t\tredundancy = initRedundancy(config);\n\t\t\tconst api = getAPIModule(target.resources ? target.resources[0] : \"\");\n\t\t\tif (api) send = api.send;\n\t\t}\n\t}\n\tif (!redundancy || !send) {\n\t\tcallback(void 0, 424);\n\t\treturn emptyCallback$1;\n\t}\n\treturn redundancy.query(query, send, callback)().abort;\n}\n\nfunction emptyCallback() {}\n/**\n* Function called when new icons have been loaded\n*/\nfunction loadedNewIcons(storage) {\n\tif (!storage.iconsLoaderFlag) {\n\t\tstorage.iconsLoaderFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsLoaderFlag = false;\n\t\t\tupdateCallbacks(storage);\n\t\t});\n\t}\n}\n/**\n* Check icon names for API\n*/\nfunction checkIconNamesForAPI(icons) {\n\tconst valid = [];\n\tconst invalid = [];\n\ticons.forEach((name) => {\n\t\t(name.match(matchIconName) ? valid : invalid).push(name);\n\t});\n\treturn {\n\t\tvalid,\n\t\tinvalid\n\t};\n}\n/**\n* Parse loader response\n*/\nfunction parseLoaderResponse(storage, icons, data) {\n\tfunction checkMissing() {\n\t\tconst pending = storage.pendingIcons;\n\t\ticons.forEach((name) => {\n\t\t\tif (pending) pending.delete(name);\n\t\t\tif (!storage.icons[name]) storage.missing.add(name);\n\t\t});\n\t}\n\tif (data && typeof data === \"object\") try {\n\t\tif (!addIconSet(storage, data).length) {\n\t\t\tcheckMissing();\n\t\t\treturn;\n\t\t}\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n\tcheckMissing();\n\tloadedNewIcons(storage);\n}\n/**\n* Handle response that can be async\n*/\nfunction parsePossiblyAsyncResponse(response, callback) {\n\tif (response instanceof Promise) response.then((data) => {\n\t\tcallback(data);\n\t}).catch(() => {\n\t\tcallback(null);\n\t});\n\telse callback(response);\n}\n/**\n* Load icons\n*/\nfunction loadNewIcons(storage, icons) {\n\tif (!storage.iconsToLoad) storage.iconsToLoad = icons;\n\telse storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n\tif (!storage.iconsQueueFlag) {\n\t\tstorage.iconsQueueFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsQueueFlag = false;\n\t\t\tconst { provider, prefix } = storage;\n\t\t\tconst icons$1 = storage.iconsToLoad;\n\t\t\tdelete storage.iconsToLoad;\n\t\t\tif (!icons$1 || !icons$1.length) return;\n\t\t\tconst customIconLoader = storage.loadIcon;\n\t\t\tif (storage.loadIcons && (icons$1.length > 1 || !customIconLoader)) {\n\t\t\t\tparsePossiblyAsyncResponse(storage.loadIcons(icons$1, prefix, provider), (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, icons$1, data);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (customIconLoader) {\n\t\t\t\ticons$1.forEach((name) => {\n\t\t\t\t\tparsePossiblyAsyncResponse(customIconLoader(name, prefix, provider), (data) => {\n\t\t\t\t\t\tparseLoaderResponse(storage, [name], data ? {\n\t\t\t\t\t\t\tprefix,\n\t\t\t\t\t\t\ticons: { [name]: data }\n\t\t\t\t\t\t} : null);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { valid, invalid } = checkIconNamesForAPI(icons$1);\n\t\t\tif (invalid.length) parseLoaderResponse(storage, invalid, null);\n\t\t\tif (!valid.length) return;\n\t\t\tconst api = prefix.match(matchIconName) ? getAPIModule(provider) : null;\n\t\t\tif (!api) {\n\t\t\t\tparseLoaderResponse(storage, valid, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tapi.prepare(provider, prefix, valid).forEach((item) => {\n\t\t\t\tsendAPIQuery(provider, item, (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, item.icons, data);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Load icons\n*/\nconst loadIcons$1 = (icons, callback) => {\n\tconst sortedIcons = sortIcons(listToIcons(icons, true, allowSimpleNames()));\n\tif (!sortedIcons.pending.length) {\n\t\tlet callCallback = true;\n\t\tif (callback) setTimeout(() => {\n\t\t\tif (callCallback) callback(sortedIcons.loaded, sortedIcons.missing, sortedIcons.pending, emptyCallback);\n\t\t});\n\t\treturn () => {\n\t\t\tcallCallback = false;\n\t\t};\n\t}\n\tconst newIcons = Object.create(null);\n\tconst sources = [];\n\tlet lastProvider, lastPrefix;\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix } = icon;\n\t\tif (prefix === lastPrefix && provider === lastProvider) return;\n\t\tlastProvider = provider;\n\t\tlastPrefix = prefix;\n\t\tsources.push(getStorage(provider, prefix));\n\t\tconst providerNewIcons = newIcons[provider] || (newIcons[provider] = Object.create(null));\n\t\tif (!providerNewIcons[prefix]) providerNewIcons[prefix] = [];\n\t});\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix, name } = icon;\n\t\tconst storage = getStorage(provider, prefix);\n\t\tconst pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n\t\tif (!pendingQueue.has(name)) {\n\t\t\tpendingQueue.add(name);\n\t\t\tnewIcons[provider][prefix].push(name);\n\t\t}\n\t});\n\tsources.forEach((storage) => {\n\t\tconst list = newIcons[storage.provider][storage.prefix];\n\t\tif (list.length) loadNewIcons(storage, list);\n\t});\n\treturn callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\n/**\n* Load one icon using Promise\n*/\nconst loadIcon$1 = (icon) => {\n\treturn new Promise((fulfill, reject) => {\n\t\tconst iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n\t\tif (!iconObj) {\n\t\t\treject(icon);\n\t\t\treturn;\n\t\t}\n\t\tloadIcons$1([iconObj || icon], (loaded) => {\n\t\t\tif (loaded.length && iconObj) {\n\t\t\t\tconst data = getIconData(iconObj);\n\t\t\t\tif (data) {\n\t\t\t\t\tfulfill({\n\t\t\t\t\t\t...defaultIconProps,\n\t\t\t\t\t\t...data\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(icon);\n\t\t});\n\t});\n};\n\n/**\n * Test icon string\n */\nfunction testIconObject(value) {\n    try {\n        const obj = typeof value === 'string' ? JSON.parse(value) : value;\n        if (typeof obj.body === 'string') {\n            return {\n                ...obj,\n            };\n        }\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    }\n    catch (err) {\n        //\n    }\n}\n\n/**\n * Parse icon value, load if needed\n */\nfunction parseIconValue(value, onload) {\n    if (typeof value === 'object') {\n        const data = testIconObject(value);\n        return {\n            data,\n            value,\n        };\n    }\n    if (typeof value !== 'string') {\n        // Invalid value\n        return {\n            value,\n        };\n    }\n    // Check for JSON\n    if (value.includes('{')) {\n        const data = testIconObject(value);\n        if (data) {\n            return {\n                data,\n                value,\n            };\n        }\n    }\n    // Parse icon name\n    const name = stringToIcon(value, true, true);\n    if (!name) {\n        return {\n            value,\n        };\n    }\n    // Valid icon name: check if data is available\n    const data = getIconData(name);\n    // Icon data exists or icon has no prefix. Do not load icon from API if icon has no prefix\n    if (data !== undefined || !name.prefix) {\n        return {\n            value,\n            name,\n            data, // could be 'null' -> icon is missing\n        };\n    }\n    // Load icon\n    const loading = loadIcons$1([name], () => onload(value, name, getIconData(name)));\n    return {\n        value,\n        name,\n        loading,\n    };\n}\n\n// Check for Safari\nlet isBuggedSafari = false;\ntry {\n    isBuggedSafari = navigator.vendor.indexOf('Apple') === 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n}\ncatch (err) {\n    //\n}\n/**\n * Get render mode\n */\nfunction getRenderMode(body, mode) {\n    switch (mode) {\n        // Force mode\n        case 'svg':\n        case 'bg':\n        case 'mask':\n            return mode;\n    }\n    // Check for animation, use 'style' for animated icons, unless browser is Safari\n    // (only <a>, which should be ignored or animations start with '<a')\n    if (mode !== 'style' &&\n        (isBuggedSafari || body.indexOf('<a') === -1)) {\n        // Render <svg>\n        return 'svg';\n    }\n    // Use background or mask\n    return body.indexOf('currentColor') === -1 ? 'bg' : 'mask';\n}\n\n/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize$1(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"</\" + tag);\n\t\tif (start === -1 || end === -1) break;\n\t\tconst endEnd = content.indexOf(\">\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to <svg> by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"<g transform=\\\"\" + transformations.join(\" \") + \"\\\">\", \"</g>\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize$1(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize$1(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\n/**\n* Generate <svg>\n*/\nfunction iconToHTML$1(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\n/**\n* Encode SVG for use in url()\n*\n* Short alternative to encodeURIComponent() that encodes only stuff used in SVG, generating\n* smaller code.\n*/\nfunction encodeSVGforURL(svg) {\n\treturn svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\n/**\n* Generate data: URL from SVG\n*/\nfunction svgToData(svg) {\n\treturn \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\n/**\n* Generate url() from SVG\n*/\nfunction svgToURL$1(svg) {\n\treturn \"url(\\\"\" + svgToData(svg) + \"\\\")\";\n}\n\nconst detectFetch = () => {\n\tlet callback;\n\ttry {\n\t\tcallback = fetch;\n\t\tif (typeof callback === \"function\") return callback;\n\t} catch (err) {}\n};\n/**\n* Fetch function\n*/\nlet fetchModule = detectFetch();\n/**\n* Set custom fetch() function\n*/\nfunction setFetch(fetch$1) {\n\tfetchModule = fetch$1;\n}\n/**\n* Get fetch() function. Used by Icon Finder Core\n*/\nfunction getFetch() {\n\treturn fetchModule;\n}\n/**\n* Calculate maximum icons list length for prefix\n*/\nfunction calculateMaxLength(provider, prefix) {\n\tconst config = getAPIConfig(provider);\n\tif (!config) return 0;\n\tlet result;\n\tif (!config.maxURL) result = 0;\n\telse {\n\t\tlet maxHostLength = 0;\n\t\tconfig.resources.forEach((item) => {\n\t\t\tconst host = item;\n\t\t\tmaxHostLength = Math.max(maxHostLength, host.length);\n\t\t});\n\t\tconst url = prefix + \".json?icons=\";\n\t\tresult = config.maxURL - maxHostLength - config.path.length - url.length;\n\t}\n\treturn result;\n}\n/**\n* Should query be aborted, based on last HTTP status\n*/\nfunction shouldAbort(status) {\n\treturn status === 404;\n}\n/**\n* Prepare params\n*/\nconst prepare = (provider, prefix, icons) => {\n\tconst results = [];\n\tconst maxLength = calculateMaxLength(provider, prefix);\n\tconst type = \"icons\";\n\tlet item = {\n\t\ttype,\n\t\tprovider,\n\t\tprefix,\n\t\ticons: []\n\t};\n\tlet length = 0;\n\ticons.forEach((name, index) => {\n\t\tlength += name.length + 1;\n\t\tif (length >= maxLength && index > 0) {\n\t\t\tresults.push(item);\n\t\t\titem = {\n\t\t\t\ttype,\n\t\t\t\tprovider,\n\t\t\t\tprefix,\n\t\t\t\ticons: []\n\t\t\t};\n\t\t\tlength = name.length;\n\t\t}\n\t\titem.icons.push(name);\n\t});\n\tresults.push(item);\n\treturn results;\n};\n/**\n* Get path\n*/\nfunction getPath(provider) {\n\tif (typeof provider === \"string\") {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (config) return config.path;\n\t}\n\treturn \"/\";\n}\n/**\n* Load icons\n*/\nconst send = (host, params, callback) => {\n\tif (!fetchModule) {\n\t\tcallback(\"abort\", 424);\n\t\treturn;\n\t}\n\tlet path = getPath(params.provider);\n\tswitch (params.type) {\n\t\tcase \"icons\": {\n\t\t\tconst prefix = params.prefix;\n\t\t\tconst iconsList = params.icons.join(\",\");\n\t\t\tconst urlParams = new URLSearchParams({ icons: iconsList });\n\t\t\tpath += prefix + \".json?\" + urlParams.toString();\n\t\t\tbreak;\n\t\t}\n\t\tcase \"custom\": {\n\t\t\tconst uri = params.uri;\n\t\t\tpath += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tcallback(\"abort\", 400);\n\t\t\treturn;\n\t}\n\tlet defaultError = 503;\n\tfetchModule(host + path).then((response) => {\n\t\tconst status = response.status;\n\t\tif (status !== 200) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tcallback(shouldAbort(status) ? \"abort\" : \"next\", status);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tdefaultError = 501;\n\t\treturn response.json();\n\t}).then((data) => {\n\t\tif (typeof data !== \"object\" || data === null) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (data === 404) callback(\"abort\", data);\n\t\t\t\telse callback(\"next\", defaultError);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tcallback(\"success\", data);\n\t\t});\n\t}).catch(() => {\n\t\tcallback(\"next\", defaultError);\n\t});\n};\n/**\n* Export module\n*/\nconst fetchAPIModule = {\n\tprepare,\n\tsend\n};\n\n/**\n* Set custom loader for multiple icons\n*/\nfunction setCustomIconsLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcons = loader;\n}\n/**\n* Set custom loader for one icon\n*/\nfunction setCustomIconLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcon = loader;\n}\n\n/**\n * Attribute to add\n */\nconst nodeAttr = 'data-style';\n/**\n * Custom style to add to each node\n */\nlet customStyle = '';\n/**\n * Set custom style to add to all components\n *\n * Affects only components rendered after function call\n */\nfunction appendCustomStyle(style) {\n    customStyle = style;\n}\n/**\n * Add/update style node\n */\nfunction updateStyle(parent, inline) {\n    // Get node, create if needed\n    let styleNode = Array.from(parent.childNodes).find((node) => node.hasAttribute &&\n        node.hasAttribute(nodeAttr));\n    if (!styleNode) {\n        styleNode = document.createElement('style');\n        styleNode.setAttribute(nodeAttr, nodeAttr);\n        parent.appendChild(styleNode);\n    }\n    // Update content\n    styleNode.textContent =\n        ':host{display:inline-block;vertical-align:' +\n            (inline ? '-0.125em' : '0') +\n            '}span,svg{display:block;margin:auto}' +\n            customStyle;\n}\n\n// Core\n/**\n * Get functions and initialise stuff\n */\nfunction exportFunctions() {\n    /**\n     * Initialise stuff\n     */\n    // Set API module\n    setAPIModule('', fetchAPIModule);\n    // Allow simple icon names\n    allowSimpleNames(true);\n    let _window;\n    try {\n        _window = window;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    }\n    catch (err) {\n        //\n    }\n    if (_window) {\n        // Load icons from global \"IconifyPreload\"\n        if (_window.IconifyPreload !== void 0) {\n            const preload = _window.IconifyPreload;\n            const err = 'Invalid IconifyPreload syntax.';\n            if (typeof preload === 'object' && preload !== null) {\n                (preload instanceof Array ? preload : [preload]).forEach((item) => {\n                    try {\n                        if (\n                        // Check if item is an object and not null/array\n                        typeof item !== 'object' ||\n                            item === null ||\n                            item instanceof Array ||\n                            // Check for 'icons' and 'prefix'\n                            typeof item.icons !== 'object' ||\n                            typeof item.prefix !== 'string' ||\n                            // Add icon set\n                            !addCollection$1(item)) {\n                            console.error(err);\n                        }\n                        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                    }\n                    catch (e) {\n                        console.error(err);\n                    }\n                });\n            }\n        }\n        // Set API from global \"IconifyProviders\"\n        if (_window.IconifyProviders !== void 0) {\n            const providers = _window.IconifyProviders;\n            if (typeof providers === 'object' && providers !== null) {\n                for (const key in providers) {\n                    const err = 'IconifyProviders[' + key + '] is invalid.';\n                    try {\n                        const value = providers[key];\n                        if (typeof value !== 'object' ||\n                            !value ||\n                            value.resources === void 0) {\n                            continue;\n                        }\n                        if (!addAPIProvider$1(key, value)) {\n                            console.error(err);\n                        }\n                        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                    }\n                    catch (e) {\n                        console.error(err);\n                    }\n                }\n            }\n        }\n    }\n    const _api = {\n        getAPIConfig,\n        setAPIModule,\n        sendAPIQuery,\n        setFetch,\n        getFetch,\n        listAPIProviders,\n    };\n    return {\n        iconLoaded: iconLoaded$1,\n        getIcon: getIcon$1,\n        listIcons: listIcons$1,\n        addIcon: addIcon$1,\n        addCollection: addCollection$1,\n        calculateSize: calculateSize$1,\n        buildIcon: iconToSVG,\n        iconToHTML: iconToHTML$1,\n        svgToURL: svgToURL$1,\n        loadIcons: loadIcons$1,\n        loadIcon: loadIcon$1,\n        addAPIProvider: addAPIProvider$1,\n        setCustomIconLoader: setCustomIconLoader$1,\n        setCustomIconsLoader: setCustomIconsLoader$1,\n        appendCustomStyle,\n        _api,\n    };\n}\n\n// List of properties to apply\nconst monotoneProps = {\n    'background-color': 'currentColor',\n};\nconst coloredProps = {\n    'background-color': 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n    image: 'var(--svg)',\n    repeat: 'no-repeat',\n    size: '100% 100%',\n};\nconst propsToAddTo = {\n    '-webkit-mask': monotoneProps,\n    'mask': monotoneProps,\n    'background': coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n    const list = propsToAddTo[prefix];\n    for (const prop in propsToAdd) {\n        list[prefix + '-' + prop] = propsToAdd[prop];\n    }\n}\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n    return value ? value + (value.match(/^[-0-9.]+$/) ? 'px' : '') : 'inherit';\n}\n/**\n * Render node as <span>\n */\nfunction renderSPAN(data, icon, useMask) {\n    const node = document.createElement('span');\n    // Body\n    let body = data.body;\n    if (body.indexOf('<a') !== -1) {\n        // Animated SVG: add something to fix timing bug\n        body += '<!-- ' + Date.now() + ' -->';\n    }\n    // Generate SVG as URL\n    const renderAttribs = data.attributes;\n    const html = iconToHTML$1(body, {\n        ...renderAttribs,\n        width: icon.width + '',\n        height: icon.height + '',\n    });\n    const url = svgToURL$1(html);\n    // Generate style\n    const svgStyle = node.style;\n    const styles = {\n        '--svg': url,\n        'width': fixSize(renderAttribs.width),\n        'height': fixSize(renderAttribs.height),\n        ...(useMask ? monotoneProps : coloredProps),\n    };\n    // Apply style\n    for (const prop in styles) {\n        svgStyle.setProperty(prop, styles[prop]);\n    }\n    return node;\n}\n\nlet policy;\n/**\n* Attempt to create policy\n*/\nfunction createPolicy() {\n\ttry {\n\t\tpolicy = window.trustedTypes.createPolicy(\"iconify\", { createHTML: (s) => s });\n\t} catch (err) {\n\t\tpolicy = null;\n\t}\n}\n/**\n* Clean up value for innerHTML assignment\n*\n* This code doesn't actually clean up anything.\n* It is intended be used with Iconify icon data, which has already been validated\n*/\nfunction cleanUpInnerHTML(html) {\n\tif (policy === void 0) createPolicy();\n\treturn policy ? policy.createHTML(html) : html;\n}\n\n/**\n * Render node as <svg>\n */\nfunction renderSVG(data) {\n    const node = document.createElement('span');\n    // Add style if needed\n    const attr = data.attributes;\n    let style = '';\n    if (!attr.width) {\n        style = 'width: inherit;';\n    }\n    if (!attr.height) {\n        style += 'height: inherit;';\n    }\n    if (style) {\n        attr.style = style;\n    }\n    // Generate SVG\n    const html = iconToHTML$1(data.body, attr);\n    node.innerHTML = cleanUpInnerHTML(html);\n    return node.firstChild;\n}\n\n/**\n * Find icon node\n */\nfunction findIconElement(parent) {\n    return Array.from(parent.childNodes).find((node) => {\n        const tag = node.tagName &&\n            node.tagName.toUpperCase();\n        return tag === 'SPAN' || tag === 'SVG';\n    });\n}\n/**\n * Render icon\n */\nfunction renderIcon(parent, state) {\n    const iconData = state.icon.data;\n    const customisations = state.customisations;\n    // Render icon\n    const renderData = iconToSVG(iconData, customisations);\n    if (customisations.preserveAspectRatio) {\n        renderData.attributes['preserveAspectRatio'] =\n            customisations.preserveAspectRatio;\n    }\n    const mode = state.renderedMode;\n    let node;\n    switch (mode) {\n        case 'svg':\n            node = renderSVG(renderData);\n            break;\n        default:\n            node = renderSPAN(renderData, {\n                ...defaultIconProps,\n                ...iconData,\n            }, mode === 'mask');\n    }\n    // Set element\n    const oldNode = findIconElement(parent);\n    if (oldNode) {\n        // Replace old element\n        if (node.tagName === 'SPAN' && oldNode.tagName === node.tagName) {\n            // Swap style instead of whole node\n            oldNode.setAttribute('style', node.getAttribute('style'));\n        }\n        else {\n            parent.replaceChild(node, oldNode);\n        }\n    }\n    else {\n        // Add new element\n        parent.appendChild(node);\n    }\n}\n\n/**\n * Set state to PendingState\n */\nfunction setPendingState(icon, inline, lastState) {\n    const lastRender = lastState &&\n        (lastState.rendered\n            ? lastState\n            : lastState.lastRender);\n    return {\n        rendered: false,\n        inline,\n        icon,\n        lastRender,\n    };\n}\n\n/**\n * Register 'iconify-icon' component, if it does not exist\n */\nfunction defineIconifyIcon(name = 'iconify-icon') {\n    // Check for custom elements registry and HTMLElement\n    let customElements;\n    let ParentClass;\n    try {\n        customElements = window.customElements;\n        ParentClass = window.HTMLElement;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    }\n    catch (err) {\n        return;\n    }\n    // Make sure registry and HTMLElement exist\n    if (!customElements || !ParentClass) {\n        return;\n    }\n    // Check for duplicate\n    const ConflictingClass = customElements.get(name);\n    if (ConflictingClass) {\n        return ConflictingClass;\n    }\n    // All attributes\n    const attributes = [\n        // Icon\n        'icon',\n        // Mode\n        'mode',\n        'inline',\n        'noobserver',\n        // Customisations\n        'width',\n        'height',\n        'rotate',\n        'flip',\n    ];\n    /**\n     * Component class\n     */\n    const IconifyIcon = class extends ParentClass {\n        // Root\n        _shadowRoot;\n        // Initialised\n        _initialised = false;\n        // Icon state\n        _state;\n        // Attributes check queued\n        _checkQueued = false;\n        // Connected\n        _connected = false;\n        // Observer\n        _observer = null;\n        _visible = true;\n        /**\n         * Constructor\n         */\n        constructor() {\n            super();\n            // Attach shadow DOM\n            const root = (this._shadowRoot = this.attachShadow({\n                mode: 'open',\n            }));\n            // Add style\n            const inline = this.hasAttribute('inline');\n            updateStyle(root, inline);\n            // Create empty state\n            this._state = setPendingState({\n                value: '',\n            }, inline);\n            // Queue icon render\n            this._queueCheck();\n        }\n        /**\n         * Connected to DOM\n         */\n        connectedCallback() {\n            this._connected = true;\n            this.startObserver();\n        }\n        /**\n         * Disconnected from DOM\n         */\n        disconnectedCallback() {\n            this._connected = false;\n            this.stopObserver();\n        }\n        /**\n         * Observed attributes\n         */\n        static get observedAttributes() {\n            return attributes.slice(0);\n        }\n        /**\n         * Observed properties that are different from attributes\n         *\n         * Experimental! Need to test with various frameworks that support it\n         */\n        /*\n        static get properties() {\n            return {\n                inline: {\n                    type: Boolean,\n                    reflect: true,\n                },\n                // Not listing other attributes because they are strings or combination\n                // of string and another type. Cannot have multiple types\n            };\n        }\n        */\n        /**\n         * Attribute has changed\n         */\n        attributeChangedCallback(name) {\n            switch (name) {\n                case 'inline': {\n                    // Update immediately: not affected by other attributes\n                    const newInline = this.hasAttribute('inline');\n                    const state = this._state;\n                    if (newInline !== state.inline) {\n                        // Update style if inline mode changed\n                        state.inline = newInline;\n                        updateStyle(this._shadowRoot, newInline);\n                    }\n                    break;\n                }\n                case 'noobserver': {\n                    const value = this.hasAttribute('noobserver');\n                    if (value) {\n                        this.startObserver();\n                    }\n                    else {\n                        this.stopObserver();\n                    }\n                    break;\n                }\n                default:\n                    // Queue check for other attributes\n                    this._queueCheck();\n            }\n        }\n        /**\n         * Get/set icon\n         */\n        get icon() {\n            const value = this.getAttribute('icon');\n            if (value && value.slice(0, 1) === '{') {\n                try {\n                    return JSON.parse(value);\n                    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                }\n                catch (err) {\n                    //\n                }\n            }\n            return value;\n        }\n        set icon(value) {\n            if (typeof value === 'object') {\n                value = JSON.stringify(value);\n            }\n            this.setAttribute('icon', value);\n        }\n        /**\n         * Get/set inline\n         */\n        get inline() {\n            return this.hasAttribute('inline');\n        }\n        set inline(value) {\n            if (value) {\n                this.setAttribute('inline', 'true');\n            }\n            else {\n                this.removeAttribute('inline');\n            }\n        }\n        /**\n         * Get/set observer\n         */\n        get observer() {\n            return this.hasAttribute('observer');\n        }\n        set observer(value) {\n            if (value) {\n                this.setAttribute('observer', 'true');\n            }\n            else {\n                this.removeAttribute('observer');\n            }\n        }\n        /**\n         * Restart animation\n         */\n        restartAnimation() {\n            const state = this._state;\n            if (state.rendered) {\n                const root = this._shadowRoot;\n                if (state.renderedMode === 'svg') {\n                    // Update root node\n                    try {\n                        root.lastChild.setCurrentTime(0);\n                        return;\n                        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                    }\n                    catch (err) {\n                        // Failed: setCurrentTime() is not supported\n                    }\n                }\n                renderIcon(root, state);\n            }\n        }\n        /**\n         * Get status\n         */\n        get status() {\n            const state = this._state;\n            return state.rendered\n                ? 'rendered'\n                : state.icon.data === null\n                    ? 'failed'\n                    : 'loading';\n        }\n        /**\n         * Queue attributes re-check\n         */\n        _queueCheck() {\n            if (!this._checkQueued) {\n                this._checkQueued = true;\n                setTimeout(() => {\n                    this._check();\n                });\n            }\n        }\n        /**\n         * Check for changes\n         */\n        _check() {\n            if (!this._checkQueued) {\n                return;\n            }\n            this._checkQueued = false;\n            const state = this._state;\n            // Get icon\n            const newIcon = this.getAttribute('icon');\n            if (newIcon !== state.icon.value) {\n                this._iconChanged(newIcon);\n                return;\n            }\n            // Ignore other attributes if icon is not rendered\n            if (!state.rendered || !this._visible) {\n                return;\n            }\n            // Check for mode and attribute changes\n            const mode = this.getAttribute('mode');\n            const customisations = getCustomisations(this);\n            if (state.attrMode !== mode ||\n                haveCustomisationsChanged(state.customisations, customisations) ||\n                !findIconElement(this._shadowRoot)) {\n                this._renderIcon(state.icon, customisations, mode);\n            }\n        }\n        /**\n         * Icon value has changed\n         */\n        _iconChanged(newValue) {\n            const icon = parseIconValue(newValue, (value, name, data) => {\n                // Asynchronous callback: re-check values to make sure stuff wasn't changed\n                const state = this._state;\n                if (state.rendered || this.getAttribute('icon') !== value) {\n                    // Icon data is already available or icon attribute was changed\n                    return;\n                }\n                // Change icon\n                const icon = {\n                    value,\n                    name,\n                    data,\n                };\n                if (icon.data) {\n                    // Render icon\n                    this._gotIconData(icon);\n                }\n                else {\n                    // Nothing to render: update icon in state\n                    state.icon = icon;\n                }\n            });\n            if (icon.data) {\n                // Icon is ready to render\n                this._gotIconData(icon);\n            }\n            else {\n                // Pending icon\n                this._state = setPendingState(icon, this._state.inline, this._state);\n            }\n        }\n        /**\n         * Force render icon on state change\n         */\n        _forceRender() {\n            if (!this._visible) {\n                // Remove icon\n                const node = findIconElement(this._shadowRoot);\n                if (node) {\n                    this._shadowRoot.removeChild(node);\n                }\n                return;\n            }\n            // Re-render icon\n            this._queueCheck();\n        }\n        /**\n         * Got new icon data, icon is ready to (re)render\n         */\n        _gotIconData(icon) {\n            this._checkQueued = false;\n            this._renderIcon(icon, getCustomisations(this), this.getAttribute('mode'));\n        }\n        /**\n         * Re-render based on icon data\n         */\n        _renderIcon(icon, customisations, attrMode) {\n            // Get mode\n            const renderedMode = getRenderMode(icon.data.body, attrMode);\n            // Inline was not changed\n            const inline = this._state.inline;\n            // Set state and render\n            renderIcon(this._shadowRoot, (this._state = {\n                rendered: true,\n                icon,\n                inline,\n                customisations,\n                attrMode,\n                renderedMode,\n            }));\n        }\n        /**\n         * Start observer\n         */\n        startObserver() {\n            if (!this._observer && !this.hasAttribute('noobserver')) {\n                try {\n                    this._observer = new IntersectionObserver((entries) => {\n                        const intersecting = entries.some((entry) => entry.isIntersecting);\n                        if (intersecting !== this._visible) {\n                            this._visible = intersecting;\n                            this._forceRender();\n                        }\n                    });\n                    this._observer.observe(this);\n                    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                }\n                catch (err) {\n                    // Something went wrong, possibly observer is not supported\n                    if (this._observer) {\n                        try {\n                            this._observer.disconnect();\n                            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                        }\n                        catch (err) {\n                            //\n                        }\n                        this._observer = null;\n                    }\n                }\n            }\n        }\n        /**\n         * Stop observer\n         */\n        stopObserver() {\n            if (this._observer) {\n                this._observer.disconnect();\n                this._observer = null;\n                this._visible = true;\n                if (this._connected) {\n                    // Render icon\n                    this._forceRender();\n                }\n            }\n        }\n    };\n    // Add getters and setters\n    attributes.forEach((attr) => {\n        if (!(attr in IconifyIcon.prototype)) {\n            Object.defineProperty(IconifyIcon.prototype, attr, {\n                get: function () {\n                    return this.getAttribute(attr);\n                },\n                set: function (value) {\n                    if (value !== null) {\n                        this.setAttribute(attr, value);\n                    }\n                    else {\n                        this.removeAttribute(attr);\n                    }\n                },\n            });\n        }\n    });\n    // Add exported functions: both as static and instance methods\n    const functions = exportFunctions();\n    for (const key in functions) {\n        IconifyIcon[key] = IconifyIcon.prototype[key] = functions[key];\n    }\n    // Define new component\n    customElements.define(name, IconifyIcon);\n    return IconifyIcon;\n}\n\n/**\n * Create exported data: either component instance or functions\n */\nconst IconifyIconComponent = defineIconifyIcon() || exportFunctions();\n/**\n * Export functions\n */\nconst { iconLoaded, getIcon, listIcons, addIcon, addCollection, calculateSize, buildIcon, iconToHTML, svgToURL, loadIcons, loadIcon, setCustomIconLoader, setCustomIconsLoader, addAPIProvider, _api, } = IconifyIconComponent;\n\nexport { IconifyIconComponent, _api, addAPIProvider, addCollection, addIcon, appendCustomStyle, buildIcon, calculateSize, getIcon, iconLoaded, iconToHTML, listIcons, loadIcon, loadIcons, setCustomIconLoader, setCustomIconsLoader, svgToURL };\n","/*!\n  * Bootstrap data.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());\n})(this, (function () { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap dom/data.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  /**\n   * Constants\n   */\n\n  const elementMap = new Map();\n  const data = {\n    set(element, key, instance) {\n      if (!elementMap.has(element)) {\n        elementMap.set(element, new Map());\n      }\n      const instanceMap = elementMap.get(element);\n\n      // make it clear we only want one instance per element\n      // can be removed later when multiple key/instances are fine to be used\n      if (!instanceMap.has(key) && instanceMap.size !== 0) {\n        // eslint-disable-next-line no-console\n        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n        return;\n      }\n      instanceMap.set(key, instance);\n    },\n    get(element, key) {\n      if (elementMap.has(element)) {\n        return elementMap.get(element).get(key) || null;\n      }\n      return null;\n    },\n    remove(element, key) {\n      if (!elementMap.has(element)) {\n        return;\n      }\n      const instanceMap = elementMap.get(element);\n      instanceMap.delete(key);\n\n      // free up element references if there are no instances left for an element\n      if (instanceMap.size === 0) {\n        elementMap.delete(element);\n      }\n    }\n  };\n\n  return data;\n\n}));\n//# sourceMappingURL=data.js.map\n","/*!\n  * Bootstrap index.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Index = {}));\n})(this, (function (exports) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap util/index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  const MAX_UID = 1000000;\n  const MILLISECONDS_MULTIPLIER = 1000;\n  const TRANSITION_END = 'transitionend';\n\n  /**\n   * Properly escape IDs selectors to handle weird IDs\n   * @param {string} selector\n   * @returns {string}\n   */\n  const parseSelector = selector => {\n    if (selector && window.CSS && window.CSS.escape) {\n      // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n      selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n    }\n    return selector;\n  };\n\n  // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n  const toType = object => {\n    if (object === null || object === undefined) {\n      return `${object}`;\n    }\n    return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  };\n\n  /**\n   * Public Util API\n   */\n\n  const getUID = prefix => {\n    do {\n      prefix += Math.floor(Math.random() * MAX_UID);\n    } while (document.getElementById(prefix));\n    return prefix;\n  };\n  const getTransitionDurationFromElement = element => {\n    if (!element) {\n      return 0;\n    }\n\n    // Get transition-duration of the element\n    let {\n      transitionDuration,\n      transitionDelay\n    } = window.getComputedStyle(element);\n    const floatTransitionDuration = Number.parseFloat(transitionDuration);\n    const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n    // Return 0 if element or transition duration is not found\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0;\n    }\n\n    // If multiple durations are defined, take the first\n    transitionDuration = transitionDuration.split(',')[0];\n    transitionDelay = transitionDelay.split(',')[0];\n    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n  };\n  const triggerTransitionEnd = element => {\n    element.dispatchEvent(new Event(TRANSITION_END));\n  };\n  const isElement = object => {\n    if (!object || typeof object !== 'object') {\n      return false;\n    }\n    if (typeof object.jquery !== 'undefined') {\n      object = object[0];\n    }\n    return typeof object.nodeType !== 'undefined';\n  };\n  const getElement = object => {\n    // it's a jQuery object or a node element\n    if (isElement(object)) {\n      return object.jquery ? object[0] : object;\n    }\n    if (typeof object === 'string' && object.length > 0) {\n      return document.querySelector(parseSelector(object));\n    }\n    return null;\n  };\n  const isVisible = element => {\n    if (!isElement(element) || element.getClientRects().length === 0) {\n      return false;\n    }\n    const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n    // Handle `details` element as its content may falsie appear visible when it is closed\n    const closedDetails = element.closest('details:not([open])');\n    if (!closedDetails) {\n      return elementIsVisible;\n    }\n    if (closedDetails !== element) {\n      const summary = element.closest('summary');\n      if (summary && summary.parentNode !== closedDetails) {\n        return false;\n      }\n      if (summary === null) {\n        return false;\n      }\n    }\n    return elementIsVisible;\n  };\n  const isDisabled = element => {\n    if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n      return true;\n    }\n    if (element.classList.contains('disabled')) {\n      return true;\n    }\n    if (typeof element.disabled !== 'undefined') {\n      return element.disabled;\n    }\n    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n  };\n  const findShadowRoot = element => {\n    if (!document.documentElement.attachShadow) {\n      return null;\n    }\n\n    // Can find the shadow root otherwise it'll return the document\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode();\n      return root instanceof ShadowRoot ? root : null;\n    }\n    if (element instanceof ShadowRoot) {\n      return element;\n    }\n\n    // when we don't find a shadow root\n    if (!element.parentNode) {\n      return null;\n    }\n    return findShadowRoot(element.parentNode);\n  };\n  const noop = () => {};\n\n  /**\n   * Trick to restart an element's animation\n   *\n   * @param {HTMLElement} element\n   * @return void\n   *\n   * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n   */\n  const reflow = element => {\n    element.offsetHeight; // eslint-disable-line no-unused-expressions\n  };\n  const getjQuery = () => {\n    if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n      return window.jQuery;\n    }\n    return null;\n  };\n  const DOMContentLoadedCallbacks = [];\n  const onDOMContentLoaded = callback => {\n    if (document.readyState === 'loading') {\n      // add listener on the first call when the document is in loading state\n      if (!DOMContentLoadedCallbacks.length) {\n        document.addEventListener('DOMContentLoaded', () => {\n          for (const callback of DOMContentLoadedCallbacks) {\n            callback();\n          }\n        });\n      }\n      DOMContentLoadedCallbacks.push(callback);\n    } else {\n      callback();\n    }\n  };\n  const isRTL = () => document.documentElement.dir === 'rtl';\n  const defineJQueryPlugin = plugin => {\n    onDOMContentLoaded(() => {\n      const $ = getjQuery();\n      /* istanbul ignore if */\n      if ($) {\n        const name = plugin.NAME;\n        const JQUERY_NO_CONFLICT = $.fn[name];\n        $.fn[name] = plugin.jQueryInterface;\n        $.fn[name].Constructor = plugin;\n        $.fn[name].noConflict = () => {\n          $.fn[name] = JQUERY_NO_CONFLICT;\n          return plugin.jQueryInterface;\n        };\n      }\n    });\n  };\n  const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n    return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue;\n  };\n  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n    if (!waitForTransition) {\n      execute(callback);\n      return;\n    }\n    const durationPadding = 5;\n    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n    let called = false;\n    const handler = ({\n      target\n    }) => {\n      if (target !== transitionElement) {\n        return;\n      }\n      called = true;\n      transitionElement.removeEventListener(TRANSITION_END, handler);\n      execute(callback);\n    };\n    transitionElement.addEventListener(TRANSITION_END, handler);\n    setTimeout(() => {\n      if (!called) {\n        triggerTransitionEnd(transitionElement);\n      }\n    }, emulatedDuration);\n  };\n\n  /**\n   * Return the previous/next element of a list.\n   *\n   * @param {array} list    The list of elements\n   * @param activeElement   The active element\n   * @param shouldGetNext   Choose to get next or previous element\n   * @param isCycleAllowed\n   * @return {Element|elem} The proper element\n   */\n  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n    const listLength = list.length;\n    let index = list.indexOf(activeElement);\n\n    // if the element does not exist in the list return an element\n    // depending on the direction and if cycle is allowed\n    if (index === -1) {\n      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n    }\n    index += shouldGetNext ? 1 : -1;\n    if (isCycleAllowed) {\n      index = (index + listLength) % listLength;\n    }\n    return list[Math.max(0, Math.min(index, listLength - 1))];\n  };\n\n  exports.defineJQueryPlugin = defineJQueryPlugin;\n  exports.execute = execute;\n  exports.executeAfterTransition = executeAfterTransition;\n  exports.findShadowRoot = findShadowRoot;\n  exports.getElement = getElement;\n  exports.getNextActiveElement = getNextActiveElement;\n  exports.getTransitionDurationFromElement = getTransitionDurationFromElement;\n  exports.getUID = getUID;\n  exports.getjQuery = getjQuery;\n  exports.isDisabled = isDisabled;\n  exports.isElement = isElement;\n  exports.isRTL = isRTL;\n  exports.isVisible = isVisible;\n  exports.noop = noop;\n  exports.onDOMContentLoaded = onDOMContentLoaded;\n  exports.parseSelector = parseSelector;\n  exports.reflow = reflow;\n  exports.toType = toType;\n  exports.triggerTransitionEnd = triggerTransitionEnd;\n\n  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\n}));\n//# sourceMappingURL=index.js.map\n","/*!\n  * Bootstrap event-handler.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n  typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap dom/event-handler.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Constants\n   */\n\n  const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n  const stripNameRegex = /\\..*/;\n  const stripUidRegex = /::\\d+$/;\n  const eventRegistry = {}; // Events storage\n  let uidEvent = 1;\n  const customEvents = {\n    mouseenter: 'mouseover',\n    mouseleave: 'mouseout'\n  };\n  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n  /**\n   * Private methods\n   */\n\n  function makeEventUid(element, uid) {\n    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n  }\n  function getElementEvents(element) {\n    const uid = makeEventUid(element);\n    element.uidEvent = uid;\n    eventRegistry[uid] = eventRegistry[uid] || {};\n    return eventRegistry[uid];\n  }\n  function bootstrapHandler(element, fn) {\n    return function handler(event) {\n      hydrateObj(event, {\n        delegateTarget: element\n      });\n      if (handler.oneOff) {\n        EventHandler.off(element, event.type, fn);\n      }\n      return fn.apply(element, [event]);\n    };\n  }\n  function bootstrapDelegationHandler(element, selector, fn) {\n    return function handler(event) {\n      const domElements = element.querySelectorAll(selector);\n      for (let {\n        target\n      } = event; target && target !== this; target = target.parentNode) {\n        for (const domElement of domElements) {\n          if (domElement !== target) {\n            continue;\n          }\n          hydrateObj(event, {\n            delegateTarget: target\n          });\n          if (handler.oneOff) {\n            EventHandler.off(element, event.type, selector, fn);\n          }\n          return fn.apply(target, [event]);\n        }\n      }\n    };\n  }\n  function findHandler(events, callable, delegationSelector = null) {\n    return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n  }\n  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n    const isDelegated = typeof handler === 'string';\n    // TODO: tooltip passes `false` instead of selector, so we need to check\n    const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n    let typeEvent = getTypeEvent(originalTypeEvent);\n    if (!nativeEvents.has(typeEvent)) {\n      typeEvent = originalTypeEvent;\n    }\n    return [isDelegated, callable, typeEvent];\n  }\n  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return;\n    }\n    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n    // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n    // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n    if (originalTypeEvent in customEvents) {\n      const wrapFunction = fn => {\n        return function (event) {\n          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n            return fn.call(this, event);\n          }\n        };\n      };\n      callable = wrapFunction(callable);\n    }\n    const events = getElementEvents(element);\n    const handlers = events[typeEvent] || (events[typeEvent] = {});\n    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n    if (previousFunction) {\n      previousFunction.oneOff = previousFunction.oneOff && oneOff;\n      return;\n    }\n    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n    fn.delegationSelector = isDelegated ? handler : null;\n    fn.callable = callable;\n    fn.oneOff = oneOff;\n    fn.uidEvent = uid;\n    handlers[uid] = fn;\n    element.addEventListener(typeEvent, fn, isDelegated);\n  }\n  function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n    const fn = findHandler(events[typeEvent], handler, delegationSelector);\n    if (!fn) {\n      return;\n    }\n    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n    delete events[typeEvent][fn.uidEvent];\n  }\n  function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n    const storeElementEvent = events[typeEvent] || {};\n    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n      if (handlerKey.includes(namespace)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n      }\n    }\n  }\n  function getTypeEvent(event) {\n    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n    event = event.replace(stripNameRegex, '');\n    return customEvents[event] || event;\n  }\n  const EventHandler = {\n    on(element, event, handler, delegationFunction) {\n      addHandler(element, event, handler, delegationFunction, false);\n    },\n    one(element, event, handler, delegationFunction) {\n      addHandler(element, event, handler, delegationFunction, true);\n    },\n    off(element, originalTypeEvent, handler, delegationFunction) {\n      if (typeof originalTypeEvent !== 'string' || !element) {\n        return;\n      }\n      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n      const inNamespace = typeEvent !== originalTypeEvent;\n      const events = getElementEvents(element);\n      const storeElementEvent = events[typeEvent] || {};\n      const isNamespace = originalTypeEvent.startsWith('.');\n      if (typeof callable !== 'undefined') {\n        // Simplest case: handler is passed, remove that listener ONLY.\n        if (!Object.keys(storeElementEvent).length) {\n          return;\n        }\n        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n        return;\n      }\n      if (isNamespace) {\n        for (const elementEvent of Object.keys(events)) {\n          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n        }\n      }\n      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n        const handlerKey = keyHandlers.replace(stripUidRegex, '');\n        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n        }\n      }\n    },\n    trigger(element, event, args) {\n      if (typeof event !== 'string' || !element) {\n        return null;\n      }\n      const $ = index_js.getjQuery();\n      const typeEvent = getTypeEvent(event);\n      const inNamespace = event !== typeEvent;\n      let jQueryEvent = null;\n      let bubbles = true;\n      let nativeDispatch = true;\n      let defaultPrevented = false;\n      if (inNamespace && $) {\n        jQueryEvent = $.Event(event, args);\n        $(element).trigger(jQueryEvent);\n        bubbles = !jQueryEvent.isPropagationStopped();\n        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n        defaultPrevented = jQueryEvent.isDefaultPrevented();\n      }\n      const evt = hydrateObj(new Event(event, {\n        bubbles,\n        cancelable: true\n      }), args);\n      if (defaultPrevented) {\n        evt.preventDefault();\n      }\n      if (nativeDispatch) {\n        element.dispatchEvent(evt);\n      }\n      if (evt.defaultPrevented && jQueryEvent) {\n        jQueryEvent.preventDefault();\n      }\n      return evt;\n    }\n  };\n  function hydrateObj(obj, meta = {}) {\n    for (const [key, value] of Object.entries(meta)) {\n      try {\n        obj[key] = value;\n      } catch (_unused) {\n        Object.defineProperty(obj, key, {\n          configurable: true,\n          get() {\n            return value;\n          }\n        });\n      }\n    }\n    return obj;\n  }\n\n  return EventHandler;\n\n}));\n//# sourceMappingURL=event-handler.js.map\n","/*!\n  * Bootstrap manipulator.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Manipulator = factory());\n})(this, (function () { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap dom/manipulator.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  function normalizeData(value) {\n    if (value === 'true') {\n      return true;\n    }\n    if (value === 'false') {\n      return false;\n    }\n    if (value === Number(value).toString()) {\n      return Number(value);\n    }\n    if (value === '' || value === 'null') {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      return value;\n    }\n    try {\n      return JSON.parse(decodeURIComponent(value));\n    } catch (_unused) {\n      return value;\n    }\n  }\n  function normalizeDataKey(key) {\n    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n  }\n  const Manipulator = {\n    setDataAttribute(element, key, value) {\n      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n    },\n    removeDataAttribute(element, key) {\n      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n    },\n    getDataAttributes(element) {\n      if (!element) {\n        return {};\n      }\n      const attributes = {};\n      const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n      for (const key of bsKeys) {\n        let pureKey = key.replace(/^bs/, '');\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);\n        attributes[pureKey] = normalizeData(element.dataset[key]);\n      }\n      return attributes;\n    },\n    getDataAttribute(element, key) {\n      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n    }\n  };\n\n  return Manipulator;\n\n}));\n//# sourceMappingURL=manipulator.js.map\n","/*!\n  * Bootstrap config.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/manipulator.js'), require('./index.js')) :\n  typeof define === 'function' && define.amd ? define(['../dom/manipulator', './index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Config = factory(global.Manipulator, global.Index));\n})(this, (function (Manipulator, index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap util/config.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Class definition\n   */\n\n  class Config {\n    // Getters\n    static get Default() {\n      return {};\n    }\n    static get DefaultType() {\n      return {};\n    }\n    static get NAME() {\n      throw new Error('You have to implement the static method \"NAME\", for each component!');\n    }\n    _getConfig(config) {\n      config = this._mergeConfigObj(config);\n      config = this._configAfterMerge(config);\n      this._typeCheckConfig(config);\n      return config;\n    }\n    _configAfterMerge(config) {\n      return config;\n    }\n    _mergeConfigObj(config, element) {\n      const jsonConfig = index_js.isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n      return {\n        ...this.constructor.Default,\n        ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n        ...(index_js.isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n        ...(typeof config === 'object' ? config : {})\n      };\n    }\n    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n      for (const [property, expectedTypes] of Object.entries(configTypes)) {\n        const value = config[property];\n        const valueType = index_js.isElement(value) ? 'element' : index_js.toType(value);\n        if (!new RegExp(expectedTypes).test(valueType)) {\n          throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n        }\n      }\n    }\n  }\n\n  return Config;\n\n}));\n//# sourceMappingURL=config.js.map\n","/*!\n  * Bootstrap base-component.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./util/config.js'), require('./util/index.js')) :\n  typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BaseComponent = factory(global.Data, global.EventHandler, global.Config, global.Index));\n})(this, (function (Data, EventHandler, Config, index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap base-component.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Constants\n   */\n\n  const VERSION = '5.3.8';\n\n  /**\n   * Class definition\n   */\n\n  class BaseComponent extends Config {\n    constructor(element, config) {\n      super();\n      element = index_js.getElement(element);\n      if (!element) {\n        return;\n      }\n      this._element = element;\n      this._config = this._getConfig(config);\n      Data.set(this._element, this.constructor.DATA_KEY, this);\n    }\n\n    // Public\n    dispose() {\n      Data.remove(this._element, this.constructor.DATA_KEY);\n      EventHandler.off(this._element, this.constructor.EVENT_KEY);\n      for (const propertyName of Object.getOwnPropertyNames(this)) {\n        this[propertyName] = null;\n      }\n    }\n\n    // Private\n    _queueCallback(callback, element, isAnimated = true) {\n      index_js.executeAfterTransition(callback, element, isAnimated);\n    }\n    _getConfig(config) {\n      config = this._mergeConfigObj(config, this._element);\n      config = this._configAfterMerge(config);\n      this._typeCheckConfig(config);\n      return config;\n    }\n\n    // Static\n    static getInstance(element) {\n      return Data.get(index_js.getElement(element), this.DATA_KEY);\n    }\n    static getOrCreateInstance(element, config = {}) {\n      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n    static get VERSION() {\n      return VERSION;\n    }\n    static get DATA_KEY() {\n      return `bs.${this.NAME}`;\n    }\n    static get EVENT_KEY() {\n      return `.${this.DATA_KEY}`;\n    }\n    static eventName(name) {\n      return `${name}${this.EVENT_KEY}`;\n    }\n  }\n\n  return BaseComponent;\n\n}));\n//# sourceMappingURL=base-component.js.map\n","/*!\n  * Bootstrap selector-engine.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index.js')) :\n  typeof define === 'function' && define.amd ? define(['../util/index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory(global.Index));\n})(this, (function (index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap dom/selector-engine.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  const getSelector = element => {\n    let selector = element.getAttribute('data-bs-target');\n    if (!selector || selector === '#') {\n      let hrefAttribute = element.getAttribute('href');\n\n      // The only valid content that could double as a selector are IDs or classes,\n      // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n      // `document.querySelector` will rightfully complain it is invalid.\n      // See https://github.com/twbs/bootstrap/issues/32273\n      if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n        return null;\n      }\n\n      // Just in case some CMS puts out a full URL with the anchor appended\n      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n      }\n      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n    }\n    return selector ? selector.split(',').map(sel => index_js.parseSelector(sel)).join(',') : null;\n  };\n  const SelectorEngine = {\n    find(selector, element = document.documentElement) {\n      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n    },\n    findOne(selector, element = document.documentElement) {\n      return Element.prototype.querySelector.call(element, selector);\n    },\n    children(element, selector) {\n      return [].concat(...element.children).filter(child => child.matches(selector));\n    },\n    parents(element, selector) {\n      const parents = [];\n      let ancestor = element.parentNode.closest(selector);\n      while (ancestor) {\n        parents.push(ancestor);\n        ancestor = ancestor.parentNode.closest(selector);\n      }\n      return parents;\n    },\n    prev(element, selector) {\n      let previous = element.previousElementSibling;\n      while (previous) {\n        if (previous.matches(selector)) {\n          return [previous];\n        }\n        previous = previous.previousElementSibling;\n      }\n      return [];\n    },\n    // TODO: this is now unused; remove later along with prev()\n    next(element, selector) {\n      let next = element.nextElementSibling;\n      while (next) {\n        if (next.matches(selector)) {\n          return [next];\n        }\n        next = next.nextElementSibling;\n      }\n      return [];\n    },\n    focusableChildren(element) {\n      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n      return this.find(focusables, element).filter(el => !index_js.isDisabled(el) && index_js.isVisible(el));\n    },\n    getSelectorFromElement(element) {\n      const selector = getSelector(element);\n      if (selector) {\n        return SelectorEngine.findOne(selector) ? selector : null;\n      }\n      return null;\n    },\n    getElementFromSelector(element) {\n      const selector = getSelector(element);\n      return selector ? SelectorEngine.findOne(selector) : null;\n    },\n    getMultipleElementsFromSelector(element) {\n      const selector = getSelector(element);\n      return selector ? SelectorEngine.find(selector) : [];\n    }\n  };\n\n  return SelectorEngine;\n\n}));\n//# sourceMappingURL=selector-engine.js.map\n","/*!\n  * Bootstrap swipe.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/event-handler.js'), require('./config.js'), require('./index.js')) :\n  typeof define === 'function' && define.amd ? define(['../dom/event-handler', './config', './index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swipe = factory(global.EventHandler, global.Config, global.Index));\n})(this, (function (EventHandler, Config, index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap util/swipe.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Constants\n   */\n\n  const NAME = 'swipe';\n  const EVENT_KEY = '.bs.swipe';\n  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;\n  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;\n  const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;\n  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;\n  const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;\n  const POINTER_TYPE_TOUCH = 'touch';\n  const POINTER_TYPE_PEN = 'pen';\n  const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  const SWIPE_THRESHOLD = 40;\n  const Default = {\n    endCallback: null,\n    leftCallback: null,\n    rightCallback: null\n  };\n  const DefaultType = {\n    endCallback: '(function|null)',\n    leftCallback: '(function|null)',\n    rightCallback: '(function|null)'\n  };\n\n  /**\n   * Class definition\n   */\n\n  class Swipe extends Config {\n    constructor(element, config) {\n      super();\n      this._element = element;\n      if (!element || !Swipe.isSupported()) {\n        return;\n      }\n      this._config = this._getConfig(config);\n      this._deltaX = 0;\n      this._supportPointerEvents = Boolean(window.PointerEvent);\n      this._initEvents();\n    }\n\n    // Getters\n    static get Default() {\n      return Default;\n    }\n    static get DefaultType() {\n      return DefaultType;\n    }\n    static get NAME() {\n      return NAME;\n    }\n\n    // Public\n    dispose() {\n      EventHandler.off(this._element, EVENT_KEY);\n    }\n\n    // Private\n    _start(event) {\n      if (!this._supportPointerEvents) {\n        this._deltaX = event.touches[0].clientX;\n        return;\n      }\n      if (this._eventIsPointerPenTouch(event)) {\n        this._deltaX = event.clientX;\n      }\n    }\n    _end(event) {\n      if (this._eventIsPointerPenTouch(event)) {\n        this._deltaX = event.clientX - this._deltaX;\n      }\n      this._handleSwipe();\n      index_js.execute(this._config.endCallback);\n    }\n    _move(event) {\n      this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n    }\n    _handleSwipe() {\n      const absDeltaX = Math.abs(this._deltaX);\n      if (absDeltaX <= SWIPE_THRESHOLD) {\n        return;\n      }\n      const direction = absDeltaX / this._deltaX;\n      this._deltaX = 0;\n      if (!direction) {\n        return;\n      }\n      index_js.execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n    }\n    _initEvents() {\n      if (this._supportPointerEvents) {\n        EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n        EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n        EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n      }\n    }\n    _eventIsPointerPenTouch(event) {\n      return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n    }\n\n    // Static\n    static isSupported() {\n      return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n    }\n  }\n\n  return Swipe;\n\n}));\n//# sourceMappingURL=swipe.js.map\n","/*!\n  * Bootstrap carousel.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./util/index.js'), require('./util/swipe.js')) :\n  typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './util/index', './util/swipe'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.BaseComponent, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Index, global.Swipe));\n})(this, (function (BaseComponent, EventHandler, Manipulator, SelectorEngine, index_js, Swipe) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap carousel.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Constants\n   */\n\n  const NAME = 'carousel';\n  const DATA_KEY = 'bs.carousel';\n  const EVENT_KEY = `.${DATA_KEY}`;\n  const DATA_API_KEY = '.data-api';\n  const ARROW_LEFT_KEY = 'ArrowLeft';\n  const ARROW_RIGHT_KEY = 'ArrowRight';\n  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  const ORDER_NEXT = 'next';\n  const ORDER_PREV = 'prev';\n  const DIRECTION_LEFT = 'left';\n  const DIRECTION_RIGHT = 'right';\n  const EVENT_SLIDE = `slide${EVENT_KEY}`;\n  const EVENT_SLID = `slid${EVENT_KEY}`;\n  const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;\n  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;\n  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;\n  const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;\n  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n  const CLASS_NAME_CAROUSEL = 'carousel';\n  const CLASS_NAME_ACTIVE = 'active';\n  const CLASS_NAME_SLIDE = 'slide';\n  const CLASS_NAME_END = 'carousel-item-end';\n  const CLASS_NAME_START = 'carousel-item-start';\n  const CLASS_NAME_NEXT = 'carousel-item-next';\n  const CLASS_NAME_PREV = 'carousel-item-prev';\n  const SELECTOR_ACTIVE = '.active';\n  const SELECTOR_ITEM = '.carousel-item';\n  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\n  const SELECTOR_ITEM_IMG = '.carousel-item img';\n  const SELECTOR_INDICATORS = '.carousel-indicators';\n  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n  const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n  const KEY_TO_DIRECTION = {\n    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n    [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n  };\n  const Default = {\n    interval: 5000,\n    keyboard: true,\n    pause: 'hover',\n    ride: false,\n    touch: true,\n    wrap: true\n  };\n  const DefaultType = {\n    interval: '(number|boolean)',\n    // TODO:v6 remove boolean support\n    keyboard: 'boolean',\n    pause: '(string|boolean)',\n    ride: '(boolean|string)',\n    touch: 'boolean',\n    wrap: 'boolean'\n  };\n\n  /**\n   * Class definition\n   */\n\n  class Carousel extends BaseComponent {\n    constructor(element, config) {\n      super(element, config);\n      this._interval = null;\n      this._activeElement = null;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this._swipeHelper = null;\n      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n      this._addEventListeners();\n      if (this._config.ride === CLASS_NAME_CAROUSEL) {\n        this.cycle();\n      }\n    }\n\n    // Getters\n    static get Default() {\n      return Default;\n    }\n    static get DefaultType() {\n      return DefaultType;\n    }\n    static get NAME() {\n      return NAME;\n    }\n\n    // Public\n    next() {\n      this._slide(ORDER_NEXT);\n    }\n    nextWhenVisible() {\n      // FIXME TODO use `document.visibilityState`\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden && index_js.isVisible(this._element)) {\n        this.next();\n      }\n    }\n    prev() {\n      this._slide(ORDER_PREV);\n    }\n    pause() {\n      if (this._isSliding) {\n        index_js.triggerTransitionEnd(this._element);\n      }\n      this._clearInterval();\n    }\n    cycle() {\n      this._clearInterval();\n      this._updateInterval();\n      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n    }\n    _maybeEnableCycle() {\n      if (!this._config.ride) {\n        return;\n      }\n      if (this._isSliding) {\n        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n        return;\n      }\n      this.cycle();\n    }\n    to(index) {\n      const items = this._getItems();\n      if (index > items.length - 1 || index < 0) {\n        return;\n      }\n      if (this._isSliding) {\n        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n        return;\n      }\n      const activeIndex = this._getItemIndex(this._getActive());\n      if (activeIndex === index) {\n        return;\n      }\n      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n      this._slide(order, items[index]);\n    }\n    dispose() {\n      if (this._swipeHelper) {\n        this._swipeHelper.dispose();\n      }\n      super.dispose();\n    }\n\n    // Private\n    _configAfterMerge(config) {\n      config.defaultInterval = config.interval;\n      return config;\n    }\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n      }\n      if (this._config.pause === 'hover') {\n        EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause());\n        EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());\n      }\n      if (this._config.touch && Swipe.isSupported()) {\n        this._addTouchEventListeners();\n      }\n    }\n    _addTouchEventListeners() {\n      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n        EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n      }\n      const endCallBack = () => {\n        if (this._config.pause !== 'hover') {\n          return;\n        }\n\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause();\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout);\n        }\n        this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n      };\n      const swipeConfig = {\n        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n        endCallback: endCallBack\n      };\n      this._swipeHelper = new Swipe(this._element, swipeConfig);\n    }\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n      const direction = KEY_TO_DIRECTION[event.key];\n      if (direction) {\n        event.preventDefault();\n        this._slide(this._directionToOrder(direction));\n      }\n    }\n    _getItemIndex(element) {\n      return this._getItems().indexOf(element);\n    }\n    _setActiveIndicatorElement(index) {\n      if (!this._indicatorsElement) {\n        return;\n      }\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE);\n      activeIndicator.removeAttribute('aria-current');\n      const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n      if (newActiveIndicator) {\n        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);\n        newActiveIndicator.setAttribute('aria-current', 'true');\n      }\n    }\n    _updateInterval() {\n      const element = this._activeElement || this._getActive();\n      if (!element) {\n        return;\n      }\n      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n      this._config.interval = elementInterval || this._config.defaultInterval;\n    }\n    _slide(order, element = null) {\n      if (this._isSliding) {\n        return;\n      }\n      const activeElement = this._getActive();\n      const isNext = order === ORDER_NEXT;\n      const nextElement = element || index_js.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n      if (nextElement === activeElement) {\n        return;\n      }\n      const nextElementIndex = this._getItemIndex(nextElement);\n      const triggerEvent = eventName => {\n        return EventHandler.trigger(this._element, eventName, {\n          relatedTarget: nextElement,\n          direction: this._orderToDirection(order),\n          from: this._getItemIndex(activeElement),\n          to: nextElementIndex\n        });\n      };\n      const slideEvent = triggerEvent(EVENT_SLIDE);\n      if (slideEvent.defaultPrevented) {\n        return;\n      }\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        // TODO: change tests that use empty divs to avoid this check\n        return;\n      }\n      const isCycling = Boolean(this._interval);\n      this.pause();\n      this._isSliding = true;\n      this._setActiveIndicatorElement(nextElementIndex);\n      this._activeElement = nextElement;\n      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n      nextElement.classList.add(orderClassName);\n      index_js.reflow(nextElement);\n      activeElement.classList.add(directionalClassName);\n      nextElement.classList.add(directionalClassName);\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName);\n        nextElement.classList.add(CLASS_NAME_ACTIVE);\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);\n        this._isSliding = false;\n        triggerEvent(EVENT_SLID);\n      };\n      this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n      if (isCycling) {\n        this.cycle();\n      }\n    }\n    _isAnimated() {\n      return this._element.classList.contains(CLASS_NAME_SLIDE);\n    }\n    _getActive() {\n      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n    }\n    _getItems() {\n      return SelectorEngine.find(SELECTOR_ITEM, this._element);\n    }\n    _clearInterval() {\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n    }\n    _directionToOrder(direction) {\n      if (index_js.isRTL()) {\n        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n      }\n      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n    }\n    _orderToDirection(order) {\n      if (index_js.isRTL()) {\n        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n      }\n      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n    }\n\n    // Static\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Carousel.getOrCreateInstance(this, config);\n        if (typeof config === 'number') {\n          data.to(config);\n          return;\n        }\n        if (typeof config === 'string') {\n          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n          data[config]();\n        }\n      });\n    }\n  }\n\n  /**\n   * Data API implementation\n   */\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n    const target = SelectorEngine.getElementFromSelector(this);\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return;\n    }\n    event.preventDefault();\n    const carousel = Carousel.getOrCreateInstance(target);\n    const slideIndex = this.getAttribute('data-bs-slide-to');\n    if (slideIndex) {\n      carousel.to(slideIndex);\n      carousel._maybeEnableCycle();\n      return;\n    }\n    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n      carousel.next();\n      carousel._maybeEnableCycle();\n      return;\n    }\n    carousel.prev();\n    carousel._maybeEnableCycle();\n  });\n  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n    for (const carousel of carousels) {\n      Carousel.getOrCreateInstance(carousel);\n    }\n  });\n\n  /**\n   * jQuery\n   */\n\n  index_js.defineJQueryPlugin(Carousel);\n\n  return Carousel;\n\n}));\n//# sourceMappingURL=carousel.js.map\n","import Carousel from \"bootstrap/js/dist/carousel\";\n\nconst initAdvantageCarousels = () => {\n    const wrappers = document.querySelectorAll(\"[data-advantage-carousel], [data-slider-carousel]\");\n\n    wrappers.forEach((wrapper) => {\n        const slider = wrapper.closest(\".advantage-slider, .content-slider\");\n        const carouselElement = wrapper.querySelector(\".carousel\");\n        if (!carouselElement) {\n            return;\n        }\n\n        const prevButton = slider?.querySelector(\"[data-carousel-control='prev']\");\n        const nextButton = slider?.querySelector(\"[data-carousel-control='next']\");\n        const allSlides = Array.from(carouselElement.querySelectorAll(\".carousel-item\"));\n\n        // For content-slider, handle responsive grouping\n        const isContentSlider = wrapper.hasAttribute(\"data-slider-carousel\");\n\n        if (isContentSlider && allSlides.length > 0) {\n            const carouselInner = carouselElement.querySelector(\".carousel-inner\");\n\n            const regroupSlides = () => {\n                const width = window.innerWidth;\n                const desktopItems = parseInt(wrapper.getAttribute(\"data-items-per-slide\") || \"3\", 10);\n\n                // Check if this is a testimonial slider\n                const isTestimonialSlider = allSlides.length > 0 && allSlides[0].querySelector(\".testimonial-card\") !== null;\n\n                let itemsPerSlide = 1; // mobile\n\n                if (isTestimonialSlider) {\n                    // Testimonials: 2 on desktop, 1 on all other sizes\n                    if (width >= 992) {\n                        itemsPerSlide = 2;\n                    } else {\n                        itemsPerSlide = 1;\n                    }\n                } else {\n                    // Other sliders: responsive grouping\n                    if (width >= 992) {\n                        // lg breakpoint\n                        itemsPerSlide = desktopItems;\n                    } else if (width >= 768) {\n                        // md breakpoint (tablet)\n                        itemsPerSlide = 2;\n                    }\n                }\n\n                // Store all slide content\n                const slideContents = allSlides.map((slide) => slide.querySelector(\".col-12\").innerHTML);\n\n                // Clear carousel\n                carouselInner.innerHTML = \"\";\n\n                // Create new grouped slides\n                // Calculate column classes based on items per slide\n                const lgColClass = isTestimonialSlider ? \"col-lg-6\" : desktopItems === 2 ? \"col-lg-6\" : desktopItems === 3 ? \"col-lg-4\" : \"col-lg-3\";\n\n                for (let i = 0; i < slideContents.length; i += itemsPerSlide) {\n                    const carouselItem = document.createElement(\"div\");\n                    carouselItem.className = `carousel-item ${i === 0 ? \"active\" : \"\"}`;\n\n                    const row = document.createElement(\"div\");\n                    row.className = \"row g-4\";\n\n                    // Add items to this slide\n                    for (let j = i; j < i + itemsPerSlide && j < slideContents.length; j++) {\n                        const col = document.createElement(\"div\");\n                        if (isTestimonialSlider) {\n                            col.className = \"col-12 col-lg-6\";\n                        } else {\n                            col.className = `col-12 col-md-6 ${lgColClass}`;\n                        }\n                        col.innerHTML = slideContents[j];\n                        row.appendChild(col);\n                    }\n\n                    carouselItem.appendChild(row);\n                    carouselInner.appendChild(carouselItem);\n                }\n\n                // Reinitialize carousel\n                return carouselInner.querySelectorAll(\".carousel-item\");\n            };\n\n            let slides = regroupSlides();\n\n            // Re-group on resize\n            let resizeTimeout;\n            window.addEventListener(\"resize\", () => {\n                clearTimeout(resizeTimeout);\n                resizeTimeout = setTimeout(() => {\n                    const currentActive = carouselElement.querySelector(\".carousel-item.active\");\n                    const currentIndex = Array.from(carouselElement.querySelectorAll(\".carousel-item\")).indexOf(currentActive);\n\n                    slides = regroupSlides();\n\n                    // Try to maintain position\n                    if (currentIndex > 0 && currentIndex < slides.length) {\n                        slides[currentIndex].classList.add(\"active\");\n                        slides[0].classList.remove(\"active\");\n                    }\n\n                    updateButtons();\n                }, 250);\n            });\n\n            if (slides.length <= 1) {\n                prevButton?.setAttribute(\"disabled\", \"true\");\n                nextButton?.setAttribute(\"disabled\", \"true\");\n                return;\n            }\n\n            const carouselInstance = Carousel.getOrCreateInstance(carouselElement, {\n                interval: false,\n                ride: false,\n                wrap: false,\n                touch: true,\n                pause: false,\n            });\n\n            let activeIndex = 0;\n\n            const updateButtons = () => {\n                const currentSlides = carouselElement.querySelectorAll(\".carousel-item\");\n                if (prevButton) {\n                    prevButton.disabled = activeIndex === 0;\n                }\n                if (nextButton) {\n                    nextButton.disabled = activeIndex >= currentSlides.length - 1;\n                }\n            };\n\n            updateButtons();\n\n            prevButton?.addEventListener(\"click\", () => {\n                carouselInstance.prev();\n            });\n\n            nextButton?.addEventListener(\"click\", () => {\n                carouselInstance.next();\n            });\n\n            carouselElement.addEventListener(\"slid.bs.carousel\", (event) => {\n                if (typeof event.to === \"number\") {\n                    activeIndex = event.to;\n                    updateButtons();\n                }\n            });\n        } else {\n            // Original logic for advantage carousel\n            const slides = carouselElement.querySelectorAll(\".carousel-item\");\n\n            if (slides.length <= 1) {\n                prevButton?.setAttribute(\"disabled\", \"true\");\n                nextButton?.setAttribute(\"disabled\", \"true\");\n                return;\n            }\n\n            const carouselInstance = Carousel.getOrCreateInstance(carouselElement, {\n                interval: false,\n                ride: false,\n                wrap: false,\n                touch: true,\n                pause: false,\n            });\n\n            let activeIndex = 0;\n\n            const updateButtons = () => {\n                if (prevButton) {\n                    prevButton.disabled = activeIndex === 0;\n                }\n                if (nextButton) {\n                    nextButton.disabled = activeIndex >= slides.length - 1;\n                }\n            };\n\n            updateButtons();\n\n            prevButton?.addEventListener(\"click\", () => {\n                carouselInstance.prev();\n            });\n\n            nextButton?.addEventListener(\"click\", () => {\n                carouselInstance.next();\n            });\n\n            carouselElement.addEventListener(\"slid.bs.carousel\", (event) => {\n                if (typeof event.to === \"number\") {\n                    activeIndex = event.to;\n                    updateButtons();\n                }\n            });\n        }\n    });\n};\n\nexport default initAdvantageCarousels;\n","const initRevealEffects = () => {\n    const elements = document.querySelectorAll(\"[data-reveal-effect]\");\n    if (!elements.length) {\n        return;\n    }\n\n    const observer = new IntersectionObserver(\n        (entries, obs) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    entry.target.classList.add(\"is-visible\");\n                    obs.unobserve(entry.target);\n                }\n            });\n        },\n        {\n            threshold: 0.2,\n        },\n    );\n\n    elements.forEach((element) => observer.observe(element));\n};\n\nexport default initRevealEffects;\n","/*!\n  * Bootstrap collapse.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) :\n  typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));\n})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap collapse.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  /**\n   * Constants\n   */\n\n  const NAME = 'collapse';\n  const DATA_KEY = 'bs.collapse';\n  const EVENT_KEY = `.${DATA_KEY}`;\n  const DATA_API_KEY = '.data-api';\n  const EVENT_SHOW = `show${EVENT_KEY}`;\n  const EVENT_SHOWN = `shown${EVENT_KEY}`;\n  const EVENT_HIDE = `hide${EVENT_KEY}`;\n  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;\n  const CLASS_NAME_SHOW = 'show';\n  const CLASS_NAME_COLLAPSE = 'collapse';\n  const CLASS_NAME_COLLAPSING = 'collapsing';\n  const CLASS_NAME_COLLAPSED = 'collapsed';\n  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n  const WIDTH = 'width';\n  const HEIGHT = 'height';\n  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]';\n  const Default = {\n    parent: null,\n    toggle: true\n  };\n  const DefaultType = {\n    parent: '(null|element)',\n    toggle: 'boolean'\n  };\n\n  /**\n   * Class definition\n   */\n\n  class Collapse extends BaseComponent {\n    constructor(element, config) {\n      super(element, config);\n      this._isTransitioning = false;\n      this._triggerArray = [];\n      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);\n      for (const elem of toggleList) {\n        const selector = SelectorEngine.getSelectorFromElement(elem);\n        const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n        if (selector !== null && filterElement.length) {\n          this._triggerArray.push(elem);\n        }\n      }\n      this._initializeChildren();\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n      }\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    }\n\n    // Getters\n    static get Default() {\n      return Default;\n    }\n    static get DefaultType() {\n      return DefaultType;\n    }\n    static get NAME() {\n      return NAME;\n    }\n\n    // Public\n    toggle() {\n      if (this._isShown()) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    }\n    show() {\n      if (this._isTransitioning || this._isShown()) {\n        return;\n      }\n      let activeChildren = [];\n\n      // find active children\n      if (this._config.parent) {\n        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n          toggle: false\n        }));\n      }\n      if (activeChildren.length && activeChildren[0]._isTransitioning) {\n        return;\n      }\n      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n      for (const activeInstance of activeChildren) {\n        activeInstance.hide();\n      }\n      const dimension = this._getDimension();\n      this._element.classList.remove(CLASS_NAME_COLLAPSE);\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n      this._addAriaAndCollapsedClass(this._triggerArray, true);\n      this._isTransitioning = true;\n      const complete = () => {\n        this._isTransitioning = false;\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n        this._element.style[dimension] = '';\n        EventHandler.trigger(this._element, EVENT_SHOWN);\n      };\n      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      const scrollSize = `scroll${capitalizedDimension}`;\n      this._queueCallback(complete, this._element, true);\n      this._element.style[dimension] = `${this._element[scrollSize]}px`;\n    }\n    hide() {\n      if (this._isTransitioning || !this._isShown()) {\n        return;\n      }\n      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n      const dimension = this._getDimension();\n      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n      index_js.reflow(this._element);\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\n      for (const trigger of this._triggerArray) {\n        const element = SelectorEngine.getElementFromSelector(trigger);\n        if (element && !this._isShown(element)) {\n          this._addAriaAndCollapsedClass([trigger], false);\n        }\n      }\n      this._isTransitioning = true;\n      const complete = () => {\n        this._isTransitioning = false;\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n        this._element.classList.add(CLASS_NAME_COLLAPSE);\n        EventHandler.trigger(this._element, EVENT_HIDDEN);\n      };\n      this._element.style[dimension] = '';\n      this._queueCallback(complete, this._element, true);\n    }\n\n    // Private\n    _isShown(element = this._element) {\n      return element.classList.contains(CLASS_NAME_SHOW);\n    }\n    _configAfterMerge(config) {\n      config.toggle = Boolean(config.toggle); // Coerce string values\n      config.parent = index_js.getElement(config.parent);\n      return config;\n    }\n    _getDimension() {\n      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n    }\n    _initializeChildren() {\n      if (!this._config.parent) {\n        return;\n      }\n      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\n      for (const element of children) {\n        const selected = SelectorEngine.getElementFromSelector(element);\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected));\n        }\n      }\n    }\n    _getFirstLevelChildren(selector) {\n      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n      // remove children if greater depth\n      return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n    }\n    _addAriaAndCollapsedClass(triggerArray, isOpen) {\n      if (!triggerArray.length) {\n        return;\n      }\n      for (const element of triggerArray) {\n        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n        element.setAttribute('aria-expanded', isOpen);\n      }\n    }\n\n    // Static\n    static jQueryInterface(config) {\n      const _config = {};\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false;\n      }\n      return this.each(function () {\n        const data = Collapse.getOrCreateInstance(this, _config);\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n          data[config]();\n        }\n      });\n    }\n  }\n\n  /**\n   * Data API implementation\n   */\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n    for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n      Collapse.getOrCreateInstance(element, {\n        toggle: false\n      }).toggle();\n    }\n  });\n\n  /**\n   * jQuery\n   */\n\n  index_js.defineJQueryPlugin(Collapse);\n\n  return Collapse;\n\n}));\n//# sourceMappingURL=collapse.js.map\n","const MIN_TRANSLATE = -25;\nconst MAX_TRANSLATE = 25;\n\nconst clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n\nconst calculateProgress = () => {\n    const scrollable = document.documentElement.scrollHeight - window.innerHeight;\n\n    if (scrollable <= 0) {\n        return 0;\n    }\n\n    return clamp(window.scrollY / scrollable, 0, 1);\n};\n\nconst applyTransform = (elements, progress) => {\n    const translate = MIN_TRANSLATE + (MAX_TRANSLATE - MIN_TRANSLATE) * progress;\n\n    elements.forEach((element) => {\n        element.style.setProperty(\"--bonus-line-translate\", `${translate}%`);\n        element.style.transform = `translateX(${translate}%)`;\n    });\n};\n\nconst initBonusLineScroll = () => {\n    const elements = document.querySelectorAll(\"[data-bonus-line-content]\");\n\n    if (!elements.length) {\n        return;\n    }\n\n    let ticking = false;\n\n    const update = () => {\n        const progress = calculateProgress();\n        applyTransform(elements, progress);\n        ticking = false;\n    };\n\n    const requestTick = () => {\n        if (!ticking) {\n            ticking = true;\n            window.requestAnimationFrame(update);\n        }\n    };\n\n    requestTick();\n    window.addEventListener(\"scroll\", requestTick, { passive: true });\n    window.addEventListener(\"resize\", requestTick);\n};\n\nexport default initBonusLineScroll;\n","const SCROLL_THRESHOLD = 0;\nconst MOBILE_BREAKPOINT = 768;\n\nconst initStickyNavbar = () => {\n    const navbar = document.querySelector(\"[data-sticky-navbar]\");\n\n    if (!navbar) {\n        return;\n    }\n\n    const updateNavbarState = () => {\n        const isMobile = window.innerWidth < MOBILE_BREAKPOINT;\n        const shouldShrink = isMobile || window.scrollY > SCROLL_THRESHOLD;\n\n        navbar.classList.toggle(\"site-navbar--shrunk\", shouldShrink);\n        navbar.classList.toggle(\"site-navbar--shrunk__bg\", shouldShrink);\n    };\n\n    window.addEventListener(\"scroll\", updateNavbarState, { passive: true });\n    window.addEventListener(\"resize\", updateNavbarState);\n\n    updateNavbarState();\n};\n\nexport default initStickyNavbar;\n","const cmsSuccessPopup = (() => {\n    function init() {\n        document.querySelectorAll(\".cms-form-success-popup-container\").forEach((element) => {\n            element.addEventListener(\"click\", () => {\n                element.style.display = \"none\";\n\n                // Remove any `success*` params from the URL\n                const url = new URL(window.location.href);\n                [...url.searchParams.keys()].filter((key) => key.startsWith(\"success\")).forEach((key) => url.searchParams.delete(key));\n                history.replaceState(null, \"\", url.toString());\n            });\n        });\n    }\n\n    return {\n        init: init,\n    };\n})();\n\nconst initCmsSuccessPopup = () => {\n    cmsSuccessPopup.init();\n};\n\nexport default initCmsSuccessPopup;\n","const cmsFriendlyCaptchaCallback = (() => {\n    function init() {\n        const friendlyCaptchas = document.querySelectorAll(\".frc-captcha\");\n\n        friendlyCaptchas.forEach((captcha) => {\n            const form = captcha.closest(\"form\");\n            const submitButtons = form.querySelectorAll('input[type=\"submit\"]');\n\n            submitButtons.forEach((button) => {\n                button.disabled = true;\n            });\n\n            setTimeout(() => {\n                captcha.friendlyChallengeWidget.opts.doneCallback = () => {\n                    submitButtons.forEach((button) => {\n                        button.disabled = false;\n                    });\n                };\n            }, 1000);\n        });\n    }\n\n    return {\n        init: init,\n    };\n})();\n\nexport default cmsFriendlyCaptchaCallback;\n","const jobList = (() => {\n    const url = \"https://www.studentpartout.de/api/v2/job-offer-api/?format=json&limit=9\";\n\n    class JobList {\n        constructor(jobListElement) {\n            this.jobListElement = jobListElement;\n            this.jobsWrapper = jobListElement.querySelector(\".cms-job-list-jobs\");\n            this.facetsWrapper = jobListElement.querySelector(\".cms-job-list-facets\");\n            this.jobListContainer = jobListElement.querySelector(\".cms-job-list\");\n            const paginationContainer = jobListElement.querySelector(\".cms-pagination-container\");\n            this.titleDisplayNumTotalJobs = jobListElement.querySelector(\".cms-job-list-title .num-total-jobs\");\n            this.paginationDisplayNumLoadedJobs = paginationContainer.querySelector(\".num-loaded-jobs\");\n            this.paginationDisplayNumTotalJobs = paginationContainer.querySelector(\".num-total-jobs\");\n            this.jobListPlaceHolder = this.jobListContainer.querySelector(\".place-holder\");\n\n            this.next = url + `&token=${this.jobListElement.dataset.apiToken}`;\n\n            if (this.jobListContainer.dataset.companyOfficeId) {\n                this.next += `&company_office_id=${this.jobListContainer.dataset.companyOfficeId}`;\n            }\n\n            if (this.jobListContainer.dataset.searchTerm) {\n                this.next += `&search_text=${this.jobListContainer.dataset.searchTerm}`;\n            }\n\n            if (this.jobListContainer.dataset.searchLocation) {\n                this.next += `&where_text=${this.jobListContainer.dataset.searchLocation}`;\n            }\n            if (this.jobListContainer.dataset.filterOccupationalField) {\n                this.next += `&occupational_field__in=%5B${this.encodeFilterParameter(this.jobListContainer.dataset.filterOccupationalField)}%5D`;\n            }\n            if (this.jobListContainer.dataset.filterJobArea) {\n                this.next += `&job_area__in=%5B${this.encodeFilterParameter(this.jobListContainer.dataset.filterJobArea)}%5D`;\n            }\n            if (this.jobListContainer.dataset.filterJob) {\n                this.next += `&job__in=%5B${this.encodeFilterParameter(this.jobListContainer.dataset.filterJob)}%5D`;\n            }\n            if (this.jobListContainer.dataset.filterQualification) {\n                this.next += `&qualification__in=%5B${this.encodeFilterParameter(this.jobListContainer.dataset.filterQualification)}%5D`;\n            }\n            if (this.jobListContainer.dataset.filterEmploymentMode) {\n                this.next += `&employment_mode__in=%5B${this.encodeFilterParameter(this.jobListContainer.dataset.filterEmploymentMode)}%5D`;\n            }\n            if (this.jobListContainer.dataset.filterBuhlIntern) {\n                this.next += `&buhl_intern=${this.encodeFilterParameter(this.jobListContainer.dataset.filterBuhlIntern)}`;\n            }\n\n            this.moreButtons = this.jobListElement.querySelectorAll(\".cms-job-list-more\");\n            this.moreButtons.forEach((button) => {\n                button.addEventListener(\"click\", () => {\n                    this.fetchData();\n                });\n            });\n\n            this.facets = {\n                locations: {\n                    1: { title: \"Augsburg\", count: 10 },\n                    2: { title: \"München\", count: 10 },\n                    3: { title: \"Berlin\", count: 10 },\n                },\n                employmentModes: {\n                    1: { title: \"Festanstellung Vollzeit\", count: 10 },\n                    2: { title: \"Festanstellung Teilzeit\", count: 10 },\n                    3: { title: \"Ausbildungsvertrag\", count: 10 },\n                },\n                qualifications: {\n                    1: { title: \"Anlernkraft\", count: 10 },\n                    2: { title: \"Fachkraft\", count: 10 },\n                    3: { title: \"Fühungskraft\", count: 10 },\n                },\n                occupationalField: {\n                    1: { title: \"Ausbildung/Lehre\", count: 10 },\n                    2: { title: \"Bildung/Soziales/Pädagogik\", count: 10 },\n                    3: { title: \"Einkauf/Lager/Logistik\", count: 10 },\n                },\n                tradeGroup: {\n                    1: { title: \"Bildung/Erziehung/Unterricht\", count: 10 },\n                    2: { title: \"Dienstleistung/divers\", count: 10 },\n                    3: { title: \"Catering/Verpflegungsdienst\", count: 10 },\n                },\n            };\n\n            this.fetchData();\n            // this.generateFacets()\n        }\n\n        encodeFilterParameter(value) {\n            return encodeURIComponent(value.replaceAll(\" \", \"+\")).replaceAll(\"(\", \"%28\").replaceAll(\")\", \"%29\");\n        }\n\n        fetchData() {\n            return fetch(this.next)\n                .then((response) => response.json())\n                .then((data) => {\n                    let newHtml = \"\";\n                    if (data.next) {\n                        this.next = data.next.replace(\"limit=9\", \"limit=6\");\n                    } else {\n                        this.moreButtons.forEach((button) => {\n                            button.style.display = \"none\";\n                        });\n                    }\n\n                    this.jobListPlaceHolder.classList.add(\"d-none\");\n\n                    data.results.forEach((job) => {\n                        newHtml += this.renderJobElement(job);\n                    });\n                    this.jobsWrapper.innerHTML += newHtml;\n\n                    if (data.count) {\n                        this.paginationDisplayNumTotalJobs.innerHTML = data.count;\n                        this.paginationDisplayNumLoadedJobs.innerHTML = this.jobsWrapper.querySelectorAll(\"& > :not(.place-holder)\").length.toString();\n                        if (this.titleDisplayNumTotalJobs) {\n                            this.titleDisplayNumTotalJobs.innerHTML = `${data.count} `;\n                        }\n                    }\n                })\n                .catch((error) => console.error(error));\n        }\n\n        prepareCompanyName(name) {\n            if (!name) {\n                return name;\n            }\n            return name.split(\"-\")[0].trim();\n        }\n\n        prepareTitle(title) {\n            const patterns = [\n                \"Student*in – \",\n                \"Student*in- \",\n                \"Student*in -\",\n                \"Student*in–\",\n                \"Student*in-\",\n                \"Student*in \",\n                \"Werk-Student*in -\",\n                \"Werk-Student*in-\",\n                \"Werkstudent*in-\",\n                \"Werkstudent*in -\",\n            ];\n            const suffixes = [\" - STUDENTpartout\", \"- STUDENTpartout\", \" - Studentpartout\", \"- Studentpartout\", \" - Werkzeugversand\", \"- Werkzeugversand\"];\n\n            const titleLower = title.toLowerCase();\n            for (const pattern of patterns) {\n                if (titleLower.startsWith(pattern.toLowerCase())) {\n                    title = title.substring(pattern.length).trim();\n                    break;\n                }\n            }\n            const updatedLower = title.toLowerCase();\n            for (const suffix of suffixes) {\n                if (updatedLower.endsWith(suffix.toLowerCase())) {\n                    title = title.substring(0, title.length - suffix.length).trim();\n                    break;\n                }\n            }\n            return title;\n        }\n\n        renderJobElement(job) {\n            const title = this.prepareTitle(job.title);\n            const companyTitle = this.prepareCompanyName(job.company_title);\n\n            return `\n            <div class=\"col\">\n            <div class=\"card h-100 shadow bg-white border-0\">\n                <div class=\"card-body d-flex gap-2\">\n                    <div class=\"job-card__logo flex-shrink-0\">\n                        <img src=\"${job.company_logo_url}\"\n                             alt=\"${job.company_title}\"\n                             loading=\"lazy\"\n                             width=\"75\"\n                             height=\"75\" />\n                    </div>\n                    <div class=\"\">\n                    <div class=\"job-card__title fs-5 fs-lg-4 mt-3 mb-2 text-truncate\">\n                        <a target=\"_blank\" class=\"stretched-link cms-more fw-semibold text-dark text-decoration-none\" href=\"${job.url}\">${title}</a>\n                    </div>\n                    <p class=\"fs-6 fs-lg-5 fw-semibold mb-1 text-muted\">${companyTitle}</p>\n                    <p class=\"fs-6 fs-lg-5 mb-0 text-muted\">${job.job_area}</p>\n                    </div>\n                </div>\n                <div class=\" pb-3 card-footer bg-transparent border-0 d-flex justify-content-end\">\n                    <div class=\"d-flex gap-2\">\n                        <div>\n                            <p class=\"fs-6 fs-lg-6 border bg-dark p-1 text-white fw-semibold text-center\">${job.address_city}</p>\n                        </div>\n                        <div>\n                            <p class=\"fs-6 fs-lg-6 border bg-dark p-1 text-white fw-semibold text-center\">${job.employment_mode}</p>\n                        </div>\n                    </div>\n            </div>\n            </div>\n            </div>\n        `;\n        }\n\n        generateFacets() {\n            this.facetsWrapper.innerHTML = \"\";\n\n            for (const group in this.facets) {\n                const select = document.createElement(\"select\");\n                select.classList.add(\"form-select\");\n\n                for (const option in this.facets[group]) {\n                    const optionElement = document.createElement(\"option\");\n                    optionElement.value = option;\n                    optionElement.text = `${this.facets[group][option].title} (${this.facets[group][option].count})`;\n                    select.appendChild(optionElement);\n                }\n                this.facetsWrapper.appendChild(select);\n            }\n        }\n    }\n\n    // Function to initialize the 'cms_job_list' module\n    function init() {\n        const jobLists = document.getElementsByClassName(\"job-list-section\");\n        [...jobLists].forEach((jobListElement) => new JobList(jobListElement));\n    }\n\n    // Expose the 'init' function to the outside world\n    return {\n        init,\n    };\n})();\n\nexport default jobList;\n","/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  const window = getWindow();\n  const children = [...element.children];\n  if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n    children.push(...element.assignedElements());\n  }\n  if (!selector) {\n    return children;\n  }\n  return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n  // Breadth-first search through all parent's children and assigned elements\n  const elementsQueue = [slot];\n  while (elementsQueue.length > 0) {\n    const elementToCheck = elementsQueue.shift();\n    if (el === elementToCheck) {\n      return true;\n    }\n    elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n  }\n}\nfunction elementIsChildOf(el, parent) {\n  const window = getWindow();\n  let isChild = parent.contains(el);\n  if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n    const children = [...parent.assignedElements()];\n    isChild = children.includes(el);\n    if (!isChild) {\n      isChild = elementIsChildOfSlot(el, parent);\n    }\n  }\n  return isChild;\n}\nfunction showWarning(text) {\n  try {\n    console.warn(text);\n    return;\n  } catch (err) {\n    // err\n  }\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n  return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n  return v => {\n    if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n      return v + 0.001;\n    }\n    return v;\n  };\n}\nfunction setInnerHTML(el, html) {\n  if (html === void 0) {\n    html = '';\n  }\n  if (typeof trustedTypes !== 'undefined') {\n    el.innerHTML = trustedTypes.createPolicy('html', {\n      createHTML: s => s\n    }).createHTML(html);\n  } else {\n    el.innerHTML = html;\n  }\n}\n\nexport { setCSSProperty as a, elementParents as b, createElement as c, elementOffset as d, elementChildren as e, now as f, getSlideTransformEl as g, elementOuterSize as h, elementIndex as i, classesToTokens as j, getTranslate as k, elementTransitionEnd as l, makeElementsArray as m, nextTick as n, isObject as o, getRotateFix as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { b as elementParents, q as elementStyle, e as elementChildren, a as setCSSProperty, h as elementOuterSize, r as elementNextAll, t as elementPrevAll, k as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, f as now, x as extend, i as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  const device = getDevice();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n  const isSafariBrowser = isSafari();\n  const need3dFix = isSafariBrowser || isWebView && device.ios;\n  return {\n    isSafari: needPerspectiveFix || isSafariBrowser,\n    needPerspectiveFix,\n    need3dFix,\n    isWebView\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slides);\n  } else if (swiper.grid) {\n    swiper.grid.unsetSlides();\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slides);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[swiper.getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n    if (allSlidesSize + offsetSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  swiper.emit('slidesUpdated');\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n    }\n    toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n    toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n  if (condition && !slideEl.classList.contains(className)) {\n    slideEl.classList.add(className);\n  } else if (!condition && slideEl.classList.contains(className)) {\n    slideEl.classList.remove(className);\n  }\n};\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  let activeSlide;\n  let prevSlide;\n  let nextSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    if (gridEnabled) {\n      activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n      nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n      prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n    } else {\n      activeSlide = slides[activeIndex];\n    }\n  }\n  if (activeSlide) {\n    if (!gridEnabled) {\n      // Next Slide\n      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !nextSlide) {\n        nextSlide = slides[0];\n      }\n\n      // Prev Slide\n      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n      if (params.loop && !prevSlide === 0) {\n        prevSlide = slides[slides.length - 1];\n      }\n    }\n  }\n  slides.forEach(slideEl => {\n    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n  });\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (!lazyEl && swiper.isElement) {\n      if (slideEl.shadowRoot) {\n        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n      } else {\n        // init later\n        requestAnimationFrame(() => {\n          if (slideEl.shadowRoot) {\n            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n            if (lazyEl) lazyEl.remove();\n          }\n        });\n      }\n    }\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex && !swiper.params.loop) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n    swiper.realIndex = getVirtualRealIndex(activeIndex);\n    return;\n  }\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (gridEnabled) {\n    const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n    if (Number.isNaN(activeSlideIndex)) {\n      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n    }\n    realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n  } else if (swiper.slides[activeIndex]) {\n    const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n    if (slideIndex) {\n      realIndex = parseInt(slideIndex, 10);\n    } else {\n      realIndex = activeIndex;\n    }\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    if (previousRealIndex !== realIndex) {\n      swiper.emit('realIndexChange');\n    }\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(el, path) {\n  const swiper = this;\n  const params = swiper.params;\n  let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n  if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n    [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n      if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n        slide = pathEl;\n      }\n    });\n  }\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          swiper.animating = false;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && dir === 'reset') {\n    swiper.emit(`slideResetTransition${step}`);\n  } else if (runCallbacks && activeIndex !== previousIndex) {\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // initial virtual\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  const isInitialVirtual = isVirtual && initial;\n  // Update Index\n  if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  const browser = getBrowser();\n  const isSafari = browser.isSafari;\n  if (isVirtual && !initial && isSafari && swiper.isElement) {\n    swiper.virtual.update(false, false, slideIndex);\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      let targetSlideIndex;\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n      }\n      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n      const {\n        centeredSlides\n      } = swiper.params;\n      let slidesPerView = swiper.params.slidesPerView;\n      if (slidesPerView === 'auto') {\n        slidesPerView = swiper.slidesPerViewDynamic();\n      } else {\n        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n        if (centeredSlides && slidesPerView % 2 === 0) {\n          slidesPerView = slidesPerView + 1;\n        }\n      }\n      let needLoopFix = cols - targetSlideIndex < slidesPerView;\n      if (centeredSlides) {\n        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n      }\n      if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n        needLoopFix = false;\n      }\n      if (needLoopFix) {\n        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n        swiper.loopFix({\n          direction,\n          slideTo: true,\n          activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n          slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n        });\n      }\n      if (gridEnabled) {\n        const slideIndex = newIndex * swiper.params.grid.rows;\n        newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n      } else {\n        newIndex = swiper.getSlideIndexByData(newIndex);\n      }\n    }\n  }\n  requestAnimationFrame(() => {\n    swiper.slideTo(newIndex, speed, runCallbacks, internal);\n  });\n  return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n      requestAnimationFrame(() => {\n        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n      });\n      return true;\n    }\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled || swiper.destroyed) return swiper;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  const isFreeMode = params.freeMode && params.freeMode.enabled;\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n    requestAnimationFrame(() => {\n      swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n    });\n    return true;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  if (swiper.destroyed) return;\n  if (typeof speed === 'undefined') {\n    speed = swiper.params.speed;\n  }\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  if (swiper.destroyed) return;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      swiper.slideToLoop(realIndex);\n    } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const initSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index) => {\n      el.setAttribute('data-swiper-slide-index', index);\n    });\n  };\n  const clearBlankSlides = () => {\n    const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n    slides.forEach(el => {\n      el.remove();\n    });\n    if (slides.length > 0) {\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    }\n  };\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n    clearBlankSlides();\n  }\n  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n  const addBlankSlides = amountOfSlides => {\n    for (let i = 0; i < amountOfSlides; i += 1) {\n      const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n      swiper.slidesEl.append(slideEl);\n    }\n  };\n  if (shouldFillGroup) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else if (shouldFillGrid) {\n    if (params.loopAddBlankSlides) {\n      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n      addBlankSlides(slidesToAdd);\n      swiper.recalcSlides();\n      swiper.updateSlides();\n    } else {\n      showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n    }\n    initSlides();\n  } else {\n    initSlides();\n  }\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next',\n    initial\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    initial,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  const {\n    centeredSlides,\n    initialSlide\n  } = params;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  let slidesPerView = params.slidesPerView;\n  if (slidesPerView === 'auto') {\n    slidesPerView = swiper.slidesPerViewDynamic();\n  } else {\n    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n    if (centeredSlides && slidesPerView % 2 === 0) {\n      slidesPerView = slidesPerView + 1;\n    }\n  }\n  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n  let loopedSlides = centeredSlides ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n  if (loopedSlides % slidesPerGroup !== 0) {\n    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n  }\n  loopedSlides += params.loopAdditionalSlides;\n  swiper.loopedSlides = loopedSlides;\n  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n  } else if (gridEnabled && params.grid.fill === 'row') {\n    showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n  }\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;\n  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n  // prepend last slides before start\n  if (activeColIndexWithShift < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        const colIndexToPrepend = cols - index - 1;\n        for (let i = slides.length - 1; i >= 0; i -= 1) {\n          if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n        }\n        // slides.forEach((slide, slideIndex) => {\n        //   if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n        // });\n      } else {\n        prependSlidesIndexes.push(cols - index - 1);\n      }\n    }\n  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n    if (isInitialOverflow) {\n      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n    }\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / cols) * cols;\n      if (gridEnabled) {\n        slides.forEach((slide, slideIndex) => {\n          if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n        });\n      } else {\n        appendSlidesIndexes.push(index);\n      }\n    }\n  }\n  swiper.__preventObserver__ = true;\n  requestAnimationFrame(() => {\n    swiper.__preventObserver__ = false;\n  });\n  if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n    if (appendSlidesIndexes.includes(activeSlideIndex)) {\n      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n    if (prependSlidesIndexes.includes(activeSlideIndex)) {\n      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(slides[index]);\n      slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n    swiper.slides.forEach((slide, slideIndex) => {\n      swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n    });\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n          }\n        }\n      } else {\n        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix({\n          ...loopParams,\n          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n        });\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix({\n        ...loopParams,\n        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n      });\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n  const window = getWindow();\n  const {\n    params\n  } = swiper;\n  const edgeSwipeDetection = params.edgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  return true;\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const data = swiper.touchEventsData;\n  if (e.type === 'pointerdown') {\n    if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n      return;\n    }\n    data.pointerId = e.pointerId;\n  } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n    data.touchId = e.targetTouches[0].identifier;\n  }\n  if (e.type === 'touchstart') {\n    // don't proceed touch event\n    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n    return;\n  }\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = e.composedPath ? e.composedPath() : e.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  if (!preventEdgeSwipe(swiper, e, startX)) {\n    return;\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (e.type === 'pointermove') {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    const id = e.pointerId;\n    if (id !== data.pointerId) return;\n  }\n  let targetTouch;\n  if (e.type === 'touchmove') {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  } else {\n    targetTouch = e;\n  }\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n      return;\n    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n      return;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n    document.activeElement.blur();\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  touches.previousX = touches.currentX;\n  touches.previousY = touches.currentY;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n  if (!data.isMoved) {\n    if (isLoop && allowLoopFix) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          bySwiperTouchMove: true\n        }\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  new Date().getTime();\n  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n    Object.assign(touches, {\n      startX: pageX,\n      startY: pageY,\n      currentX: pageX,\n      currentY: pageY,\n      startTranslate: data.currentTranslate\n    });\n    data.loopSwapReset = true;\n    data.startTranslate = data.currentTranslate;\n    return;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetTouch;\n  const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n  if (!isTouchEvent) {\n    if (data.touchId !== null) return; // return from pointer if we use touch\n    if (e.pointerId !== data.pointerId) return;\n    targetTouch = e;\n  } else {\n    targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n    if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n    const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  data.pointerId = null;\n  data.touchId = null;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && e.pointerType === 'mouse') return;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n  const swiper = this;\n  if (swiper.documentTouchHandlerProceeded) return;\n  swiper.documentTouchHandlerProceeded = true;\n  if (swiper.params.touchReleaseOnEdges) {\n    swiper.el.style.touchAction = 'auto';\n  }\n}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n  if (!el || typeof el === 'string') return;\n\n  // Touch Events\n  document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n    passive: false,\n    capture\n  });\n  el[domMethod]('touchstart', swiper.onTouchStart, {\n    passive: false\n  });\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('touchmove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('touchend', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('touchcancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('contextmenu', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n  const document = getDocument();\n\n  // Get breakpoint for window/container width and update parameters\n  const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n  const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n  const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasGrabCursor = swiper.params.grabCursor;\n  const isGrabCursor = breakpointParams.grabCursor;\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n  if (wasGrabCursor && !isGrabCursor) {\n    swiper.unsetGrabCursor();\n  } else if (!wasGrabCursor && isGrabCursor) {\n    swiper.setGrabCursor();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  const wasLoop = params.loop;\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  const hasLoop = swiper.params.loop;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (initialized) {\n    if (needsReLoop) {\n      swiper.loopDestroy();\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (!wasLoop && hasLoop) {\n      swiper.loopCreate(realIndex);\n      swiper.updateSlides();\n    } else if (wasLoop && !hasLoop) {\n      swiper.loopDestroy();\n    }\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  if (!el || typeof el === 'string') return;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  swiperElementNodeName: 'SWIPER-CONTAINER',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  eventsPrefix: 'swiper',\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopAddBlankSlides: true,\n  loopAdditionalSlides: 0,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideFullyVisibleClass: 'swiper-slide-fully-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n      params[moduleParamName].auto = true;\n    }\n    if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n      params[moduleParamName].auto = true;\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        pointerId: null,\n        touchId: null\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getDirectionLabel(property) {\n    if (this.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n  }\n  getSlideIndexWhenGrid(index) {\n    if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n      if (this.params.grid.fill === 'column') {\n        index = Math.floor(index / this.params.grid.rows);\n      } else if (this.params.grid.fill === 'row') {\n        index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n      }\n    }\n    return index;\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += Math.ceil(slides[i].swiperSlideSize);\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate(undefined, true);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n    if (swiper.isElement) {\n      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n    }\n    lazyElements.forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      if (el && typeof el !== 'string') {\n        el.removeAttribute('style');\n      }\n      if (wrapperEl) {\n        wrapperEl.removeAttribute('style');\n      }\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      if (swiper.el && typeof swiper.el !== 'string') {\n        swiper.el.swiper = null;\n      }\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      } else if (res && res.length === 1) {\n        res = res[0];\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (swiper.enabled) {\n      update();\n      return;\n    }\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n    if (swiper.isElement && !targetIsButton) {\n      const path = e.path || e.composedPath && e.composedPath();\n      if (path) {\n        targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n      }\n    }\n    if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import Swiper from \"swiper\";\nimport { Navigation } from \"swiper/modules\";\n\nconst initSwiper = () => {\n    const testimonialSwiper = new Swiper(\".testimonial-swiper\", {\n        slidesPerView: 1,\n        slidesPerGroup: 1,\n        spaceBetween: 20,\n        modules: [Navigation],\n        navigation: {\n            nextEl: \".testimonial-next\",\n            prevEl: \".testimonial-prev\",\n        },\n        breakpoints: {\n            992: {\n                slidesPerView: 2,\n                slidesPerGroup: 2,\n                spaceBetween: 30,\n            },\n        },\n    });\n\n    const vorteileSwiper = new Swiper(\".vorteile-swiper\", {\n        slidesPerView: 1,\n        slidesPerGroup: 1,\n        spaceBetween: 20,\n        modules: [Navigation],\n        navigation: {\n            nextEl: \".vorteile-next\",\n            prevEl: \".vorteile-prev\",\n        },\n        breakpoints: {\n            768: {\n                slidesPerView: 2,\n                slidesPerGroup: 2,\n                spaceBetween: 20,\n            },\n            992: {\n                slidesPerView: 3,\n                slidesPerGroup: 3,\n                spaceBetween: 30,\n            },\n        },\n    });\n};\n\nexport default initSwiper;\n","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n(function () {\n  'use strict';\n\n  var css = '.frc-captcha *{margin:0;padding:0;border:0;text-align:initial;border-radius:0;filter:none!important;transition:none!important;font-weight:400;font-size:14px;line-height:1.2;text-decoration:none;background-color:initial;color:#222}.frc-captcha{position:relative;min-width:250px;max-width:312px;border:1px solid #f4f4f4;padding-bottom:12px;background-color:#fff}.frc-captcha b{font-weight:700}.frc-container{display:flex;align-items:center;min-height:52px}.frc-icon{fill:#222;stroke:#222;flex-shrink:0;margin:8px 8px 0}.frc-icon.frc-warning{fill:#c00}.frc-success .frc-icon{animation:1s ease-in both frc-fade-in}.frc-content{white-space:nowrap;display:flex;flex-direction:column;margin:4px 6px 0 0;overflow-x:auto;flex-grow:1}.frc-banner{position:absolute;bottom:0;right:6px;line-height:1}.frc-banner *{font-size:10px;opacity:.8;text-decoration:none}.frc-progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:3px 0;height:4px;border:none;background-color:#eee;color:#222;width:100%;transition:.5s linear}.frc-progress::-webkit-progress-bar{background:#eee}.frc-progress::-webkit-progress-value{background:#222}.frc-progress::-moz-progress-bar{background:#222}.frc-button{cursor:pointer;padding:2px 6px;background-color:#f1f1f1;border:1px solid transparent;text-align:center;font-weight:600;text-transform:none}.frc-button:focus{border:1px solid #333}.frc-button:hover{background-color:#ddd}.frc-captcha-solution{display:none}.frc-err-url{text-decoration:underline;font-size:.9em}.frc-rtl{direction:rtl}.frc-rtl .frc-content{margin:4px 0 0 6px}.frc-banner.frc-rtl{left:6px;right:auto}.dark.frc-captcha{color:#fff;background-color:#222;border-color:#333}.dark.frc-captcha *{color:#fff}.dark.frc-captcha button{background-color:#444}.dark .frc-icon{fill:#fff;stroke:#fff}.dark .frc-progress{background-color:#444}.dark .frc-progress::-webkit-progress-bar{background:#444}.dark .frc-progress::-webkit-progress-value{background:#ddd}.dark .frc-progress::-moz-progress-bar{background:#ddd}@keyframes frc-fade-in{from{opacity:0}to{opacity:1}}';\n\n  // This is not an enum to save some bytes in the output bundle.\n  var SOLVER_TYPE_JS = 1;\n  var CHALLENGE_SIZE_BYTES = 128;\n\n  // @ts-ignore\n  var loaderSVG = \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"8\\\" stroke-width=\\\"3\\\" stroke-dasharray=\\\"15 10\\\" fill=\\\"none\\\" stroke-linecap=\\\"round\\\" transform=\\\"rotate(0 12 12)\\\"><animateTransform attributeName=\\\"transform\\\" type=\\\"rotate\\\" repeatCount=\\\"indefinite\\\" dur=\\\"0.9s\\\" values=\\\"0 12 12;360 12 12\\\"/></circle>\";\n  var errorSVG = \"<path d=\\\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\\\"/>\";\n  /**\r\n   * Base template used for all widget states\r\n   * The reason we use raw string interpolation here is so we don't have to ship something like lit-html.\r\n   */\n  function getTemplate(fieldName, rtl, svgContent, svgAriaHidden, textContent, solutionString, buttonText) {\n    var progress = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n    var debugData = arguments.length > 8 ? arguments[8] : undefined;\n    var additionalContainerClasses = arguments.length > 9 ? arguments[9] : undefined;\n    return \"<div class=\\\"frc-container\".concat(additionalContainerClasses ? \" \" + additionalContainerClasses : \"\").concat(rtl ? \" frc-rtl\" : \"\", \"\\\">\\n<svg class=\\\"frc-icon\\\"\").concat(svgAriaHidden ? ' aria-hidden=\"true\"' : \"\", \" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"32\\\" width=\\\"32\\\" viewBox=\\\"0 0 24 24\\\">\").concat(svgContent, \"</svg>\\n<div class=\\\"frc-content\\\">\\n    <span class=\\\"frc-text\\\" \").concat(debugData ? \"data-debug=\\\"\".concat(debugData, \"\\\"\") : \"\", \">\").concat(textContent, \"</span>\\n    \").concat(buttonText ? \"<button type=\\\"button\\\" class=\\\"frc-button\\\">\".concat(buttonText, \"</button>\") : \"\", \"\\n    \").concat(progress ? \"<progress class=\\\"frc-progress\\\" value=\\\"0\\\">0%</progress>\" : \"\", \"\\n</div>\\n</div><span class=\\\"frc-banner\").concat(rtl ? \" frc-rtl\" : \"\", \"\\\"><a lang=\\\"en\\\" href=\\\"https://friendlycaptcha.com/\\\" rel=\\\"noopener\\\" target=\\\"_blank\\\"><b>Friendly</b>Captcha \\u21D7</a></span>\\n\").concat(fieldName === \"-\" ? \"\" : \"<input name=\\\"\".concat(fieldName, \"\\\" class=\\\"frc-captcha-solution\\\" type=\\\"hidden\\\" value=\\\"\").concat(solutionString, \"\\\">\"));\n  }\n  /**\r\n   * Used when the widget is ready to start solving.\r\n   */\n  function getReadyHTML(fieldName, l) {\n    return getTemplate(fieldName, l.rtl, \"<path d=\\\"M17,11c0.34,0,0.67,0.04,1,0.09V6.27L10.5,3L3,6.27v4.91c0,4.54,3.2,8.79,7.5,9.82c0.55-0.13,1.08-0.32,1.6-0.55 C11.41,19.47,11,18.28,11,17C11,13.69,13.69,11,17,11z\\\"/><path d=\\\"M17,13c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4s4-1.79,4-4C21,14.79,19.21,13,17,13z M17,14.38\\\"/>\", true, l.text_ready, \".UNSTARTED\", l.button_start, false);\n  }\n  /**\r\n   * Used when the widget is retrieving a puzzle\r\n   */\n  function getFetchingHTML(fieldName, l) {\n    return getTemplate(fieldName, l.rtl, loaderSVG, true, l.text_fetching, \".FETCHING\", undefined, true);\n  }\n  /**\r\n   * Used when the solver is running, displays a progress bar.\r\n   */\n  function getRunningHTML(fieldName, l) {\n    return getTemplate(fieldName, l.rtl, loaderSVG, true, l.text_solving, \".UNFINISHED\", undefined, true);\n  }\n  function getDoneHTML(fieldName, l, solution, data) {\n    var timeData = \"\".concat(data.t.toFixed(0), \"s (\").concat((data.h / data.t * 0.001).toFixed(0), \"K/s)\").concat(data.solver === SOLVER_TYPE_JS ? \" JS Fallback\" : \"\");\n    return getTemplate(fieldName, l.rtl, \"<title>\".concat(l.text_completed_sr, \"</title><path d=\\\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z\\\"></path>\"), false, l.text_completed, solution, undefined, false, timeData, \"frc-success\");\n  }\n  function getExpiredHTML(fieldName, l) {\n    return getTemplate(fieldName, l.rtl, errorSVG, true, l.text_expired, \".EXPIRED\", l.button_restart);\n  }\n  function getErrorHTML(fieldName, l, errorDescription) {\n    var recoverable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n    var headless = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n    return getTemplate(fieldName, l.rtl, errorSVG, true, \"<b>\".concat(l.text_error, \"</b><br>\").concat(errorDescription), headless ? \".HEADLESS_ERROR\" : \".ERROR\", recoverable ? l.button_retry : undefined);\n  }\n  function findCaptchaElements() {\n    var elements = document.querySelectorAll(\".frc-captcha\");\n    if (elements.length === 0) {\n      console.warn(\"FriendlyCaptcha: No div was found with .frc-captcha class\");\n    }\n    return elements;\n  }\n  /**\r\n   * Injects the style if no #frc-style element is already present\r\n   * (to support custom stylesheets)\r\n   */\n  function injectStyle() {\n    var styleNonce = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n    if (!document.querySelector(\"#frc-style\")) {\n      var styleSheet = document.createElement(\"style\");\n      styleSheet.id = \"frc-style\";\n      styleSheet.innerHTML = css;\n      if (styleNonce) {\n        styleSheet.setAttribute('nonce', styleNonce);\n      }\n      document.head.appendChild(styleSheet);\n    }\n  }\n  /**\r\n   * @param element parent element of friendlycaptcha\r\n   * @param progress value between 0 and 1\r\n   */\n  function updateProgressBar(element, data) {\n    var p = element.querySelector(\".frc-progress\");\n    var perc = (data.i + 1) / data.n;\n    if (p) {\n      p.value = perc;\n      p.innerText = (perc * 100).toFixed(1) + \"%\";\n      p.title = data.i + 1 + \"/\" + data.n + \" (\" + (data.h / data.t * 0.001).toFixed(0) + \"K/s)\";\n    }\n  }\n  /**\r\n   * Traverses parent nodes until a <form> is found, returns null if not found.\r\n   */\n  function findParentFormElement(element) {\n    while (element.tagName !== \"FORM\") {\n      element = element.parentElement;\n      if (!element) {\n        return null;\n      }\n    }\n    return element;\n  }\n  /**\r\n   * Add listener to specified element that will only fire once on focus.\r\n   */\n  function executeOnceOnFocusInEvent(element, listener) {\n    element.addEventListener(\"focusin\", listener, {\n      once: true,\n      passive: true\n    });\n  }\n\n  // Adapted from the base64-arraybuffer package implementation\n  // (https://github.com/niklasvh/base64-arraybuffer, MIT licensed)\n  var CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  var EQ_CHAR = \"=\".charCodeAt(0);\n  // Use a lookup table to find the index.\n  var lookup = new Uint8Array(256);\n  for (var i = 0; i < CHARS.length; i++) {\n    lookup[CHARS.charCodeAt(i)] = i;\n  }\n  function encode(bytes) {\n    var len = bytes.length;\n    var base64 = \"\";\n    for (var _i = 0; _i < len; _i += 3) {\n      var b0 = bytes[_i + 0];\n      var b1 = bytes[_i + 1];\n      var b2 = bytes[_i + 2];\n      // This temporary variable stops the NextJS 13 compiler from breaking this code in optimization.\n      // See issue https://github.com/FriendlyCaptcha/friendly-challenge/issues/165\n      var t = \"\";\n      t += CHARS.charAt(b0 >>> 2);\n      t += CHARS.charAt((b0 & 3) << 4 | b1 >>> 4);\n      t += CHARS.charAt((b1 & 15) << 2 | b2 >>> 6);\n      t += CHARS.charAt(b2 & 63);\n      base64 += t;\n    }\n    if (len % 3 === 2) {\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n    return base64;\n  }\n  function decode(base64) {\n    var len = base64.length;\n    var bufferLength = len * 3 >>> 2; // * 0.75\n    if (base64.charCodeAt(len - 1) === EQ_CHAR) bufferLength--;\n    if (base64.charCodeAt(len - 2) === EQ_CHAR) bufferLength--;\n    var bytes = new Uint8Array(bufferLength);\n    for (var _i2 = 0, p = 0; _i2 < len; _i2 += 4) {\n      var encoded1 = lookup[base64.charCodeAt(_i2 + 0)];\n      var encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n      var encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n      var encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n      bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n    }\n    return bytes;\n  }\n\n  // Defensive init to make it easier to integrate with Gatsby, NextJS, and friends.\n  var nav;\n  var ua;\n  if (typeof navigator !== \"undefined\" && typeof navigator.userAgent === \"string\") {\n    nav = navigator;\n    ua = nav.userAgent.toLowerCase();\n  }\n  /**\r\n   * Headless browser detection on the clientside is imperfect. One can modify any clientside code to disable or change this check,\r\n   * and one can spoof whatever is checked here. However, that doesn't make it worthless: it's yet another hurdle for spammers and\r\n   * it stops unsophisticated scripters from making any request whatsoever.\r\n   */\n  function isHeadless() {\n    return (\n      //tell-tale bot signs\n      ua.indexOf(\"headless\") !== -1 || nav.appVersion.indexOf(\"Headless\") !== -1 || ua.indexOf(\"bot\") !== -1 ||\n      // http://www.useragentstring.com/pages/useragentstring.php?typ=Browser\n      ua.indexOf(\"crawl\") !== -1 ||\n      // Only IE5 has two distributions that has this on windows NT.. so yeah.\n      nav.webdriver === true || !nav.language || nav.languages !== undefined && !nav.languages.length // IE 11 does not support NavigatorLanguage.languages https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages\n    );\n  }\n\n  /**\n   * Maps a value between 0 and 255 to a difficulty threshold (as uint32)\n   * Difficulty 0 maps to 99.99% probability of being right on the first attempt\n   * Anything above 250 needs 2^32 tries on average to solve.\n   * 150 to 180 seems reasonable\n   */\n  function difficultyToThreshold(value) {\n    if (value > 255) {\n      value = 255;\n    } else if (value < 0) {\n      value = 0;\n    }\n    return Math.pow(2, (255.999 - value) / 8.0) >>> 0;\n  }\n  var PUZZLE_EXPIRY_OFFSET = 13;\n  var NUMBER_OF_PUZZLES_OFFSET = 14;\n  var PUZZLE_DIFFICULTY_OFFSET = 15;\n  function getPuzzleSolverInputs(puzzleBuffer, numPuzzles) {\n    var startingPoints = [];\n    for (var _i3 = 0; _i3 < numPuzzles; _i3++) {\n      var input = new Uint8Array(CHALLENGE_SIZE_BYTES);\n      input.set(puzzleBuffer);\n      input[120] = _i3;\n      startingPoints.push(input);\n    }\n    return startingPoints;\n  }\n  function decodeBase64Puzzle(base64Puzzle) {\n    var parts = base64Puzzle.split(\".\");\n    var puzzle = parts[1];\n    var arr = decode(puzzle);\n    return {\n      signature: parts[0],\n      base64: puzzle,\n      buffer: arr,\n      n: arr[NUMBER_OF_PUZZLES_OFFSET],\n      threshold: difficultyToThreshold(arr[PUZZLE_DIFFICULTY_OFFSET]),\n      expiry: arr[PUZZLE_EXPIRY_OFFSET] * 300000\n    };\n  }\n  function getPuzzle(urlsSeparatedByComma, siteKey, lang) {\n    return new Promise(function ($return, $error) {\n      var urls;\n      urls = urlsSeparatedByComma.split(\",\");\n      var $Loop_4_trampoline, $Loop_4_local;\n      function $Loop_4_step() {\n        var _$Loop_4_local = $Loop_4_local(),\n          _$Loop_4_local2 = _slicedToArray(_$Loop_4_local, 1),\n          i = _$Loop_4_local2[0];\n        i++;\n        return $Loop_4.bind(this, i);\n      }\n      function $Loop_4(i) {\n        $Loop_4_local = function $Loop_4_local() {\n          return [i];\n        };\n        if (i < urls.length) {\n          var $Try_1_Post = function $Try_1_Post() {\n            try {\n              return $Loop_4_step;\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          };\n          var $Try_1_Catch = function $Try_1_Catch(e) {\n            try {\n              {\n                console.error(\"[FRC Fetch]:\", e);\n                var err;\n                err = new Error(\"\".concat(lang.text_fetch_error, \" <a class=\\\"frc-err-url\\\" href=\\\"\").concat(urls[i], \"\\\">\").concat(urls[i], \"</a>\"));\n                err.rawError = e;\n                throw err;\n              }\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          };\n          try {\n            var response;\n            return Promise.resolve(fetchAndRetryWithBackoff(urls[i] + \"?sitekey=\" + siteKey, {\n              headers: [[\"x-frc-client\", \"js-0.9.19\"]],\n              mode: \"cors\"\n            }, 2)).then(function ($await_7) {\n              try {\n                var $If_6 = function $If_6() {\n                  return $Try_1_Post();\n                };\n                response = $await_7;\n                if (response.ok) {\n                  var json;\n                  return Promise.resolve(response.json()).then(function ($await_8) {\n                    try {\n                      json = $await_8;\n                      return $return(json.data.puzzle);\n                    } catch ($boundEx) {\n                      return $Try_1_Catch($boundEx);\n                    }\n                  }, $Try_1_Catch);\n                } else {\n                  var _json;\n                  var $Try_2_Post = function () {\n                    try {\n                      if (_json && _json.errors && _json.errors[0] === \"endpoint_not_enabled\") {\n                        throw Error(\"Endpoint not allowed (\".concat(response.status, \")\"));\n                      }\n                      if (i === urls.length - 1) {\n                        throw Error(\"Response status \".concat(response.status, \" \").concat(response.statusText, \" \").concat(_json ? _json.errors : \"\"));\n                      }\n                      return $If_6.call(this);\n                    } catch ($boundEx) {\n                      return $Try_1_Catch($boundEx);\n                    }\n                  }.bind(this);\n                  var $Try_2_Catch = function $Try_2_Catch(e) {\n                    try {\n                      return $Try_2_Post();\n                    } catch ($boundEx) {\n                      return $Try_1_Catch($boundEx);\n                    }\n                  } /* Do nothing, the error is not valid JSON */;\n                  try {\n                    return Promise.resolve(response.json()).then(function ($await_9) {\n                      try {\n                        _json = $await_9;\n                        return $Try_2_Post();\n                      } catch ($boundEx) {\n                        return $Try_2_Catch($boundEx);\n                      }\n                    }, $Try_2_Catch);\n                  } catch (e) {\n                    $Try_2_Catch(e);\n                  }\n                }\n                return $If_6.call(this);\n              } catch ($boundEx) {\n                return $Try_1_Catch($boundEx);\n              }\n            }.bind(this), $Try_1_Catch);\n          } catch (e) {\n            $Try_1_Catch(e);\n          }\n        } else return [1];\n      }\n      return ($Loop_4_trampoline = function (q) {\n        while (q) {\n          if (q.then) return void q.then($Loop_4_trampoline, $error);\n          try {\n            if (q.pop) {\n              if (q.length) return q.pop() ? $Loop_4_exit.call(this) : q;else q = $Loop_4_step;\n            } else q = q.call(this);\n          } catch (_exception) {\n            return $error(_exception);\n          }\n        }\n      }.bind(this))($Loop_4.bind(this, 0));\n      function $Loop_4_exit() {\n        // This code should never be reached.\n        return $error(Error(\"Internal error\"));\n      }\n    });\n  }\n  /**\r\n   * Retries given request with exponential backoff (starting with 1000ms delay, multiplying by 4 every time)\r\n   * @param url Request (can be string url) to fetch\r\n   * @param opts Options for fetch\r\n   * @param n Number of times to attempt before giving up.\r\n   */\n  function fetchAndRetryWithBackoff(url, opts, n) {\n    return new Promise(function ($return, $error) {\n      var time = 1000;\n      return $return(fetch(url, opts).catch(function (error) {\n        return new Promise(function ($return, $error) {\n          if (n === 0) return $error(error);\n          return Promise.resolve(new Promise(function (r) {\n            return setTimeout(r, time);\n          })).then(function ($await_10) {\n            try {\n              time *= 4;\n              return $return(fetchAndRetryWithBackoff(url, opts, n - 1));\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          }, $error);\n        });\n      }));\n    });\n  }\n\n  // English\n  var LANG_EN = {\n    text_init: \"Initializing...\",\n    text_ready: \"Anti-Robot Verification\",\n    button_start: \"Click to start verification\",\n    text_fetching: \"Fetching Challenge\",\n    text_solving: \"Verifying you are human...\",\n    text_completed: \"I am human\",\n    text_completed_sr: \"Automatic spam check completed\",\n    text_expired: \"Anti-Robot verification expired\",\n    button_restart: \"Restart\",\n    text_error: \"Verification failed\",\n    button_retry: \"Retry\",\n    text_fetch_error: \"Failed to connect to\"\n  };\n  // French\n  var LANG_FR = {\n    text_init: \"Chargement...\",\n    text_ready: \"Vérification Anti-Robot\",\n    button_start: \"Clique ici pour vérifier\",\n    text_fetching: \"Chargement du défi\",\n    text_solving: \"Nous vérifions que vous n'êtes pas un robot...\",\n    text_completed: \"Je ne suis pas un robot\",\n    text_completed_sr: \"Vérification automatique des spams terminée\",\n    text_expired: \"Vérification anti-robot expirée\",\n    button_restart: \"Redémarrer\",\n    text_error: \"Échec de la vérification\",\n    button_retry: \"Recommencer\",\n    text_fetch_error: \"Problème de connexion avec\"\n  };\n  // German\n  var LANG_DE = {\n    text_init: \"Initialisierung...\",\n    text_ready: \"Anti-Roboter-Verifizierung\",\n    button_start: \"Hier klicken\",\n    text_fetching: \"Herausforderung laden...\",\n    text_solving: \"Verifizierung, dass Sie ein Mensch sind...\",\n    text_completed: \"Ich bin ein Mensch\",\n    text_completed_sr: \"Automatische Spamprüfung abgeschlossen\",\n    text_expired: \"Verifizierung abgelaufen\",\n    button_restart: \"Erneut starten\",\n    text_error: \"Verifizierung fehlgeschlagen\",\n    button_retry: \"Erneut versuchen\",\n    text_fetch_error: \"Verbindungsproblem mit\"\n  };\n  // Dutch\n  var LANG_NL = {\n    text_init: \"Initializeren...\",\n    text_ready: \"Anti-robotverificatie\",\n    button_start: \"Klik om te starten\",\n    text_fetching: \"Aan het laden...\",\n    text_solving: \"Anti-robotverificatie bezig...\",\n    text_completed: \"Ik ben een mens\",\n    text_completed_sr: \"Automatische anti-spamcheck voltooid\",\n    text_expired: \"Verificatie verlopen\",\n    button_restart: \"Opnieuw starten\",\n    text_error: \"Verificatie mislukt\",\n    button_retry: \"Opnieuw proberen\",\n    text_fetch_error: \"Verbinding mislukt met\"\n  };\n  // Italian\n  var LANG_IT = {\n    text_init: \"Inizializzazione...\",\n    text_ready: \"Verifica Anti-Robot\",\n    button_start: \"Clicca per iniziare\",\n    text_fetching: \"Caricamento...\",\n    text_solving: \"Verificando che sei umano...\",\n    text_completed: \"Non sono un robot\",\n    text_completed_sr: \"Controllo automatico dello spam completato\",\n    text_expired: \"Verifica Anti-Robot scaduta\",\n    button_restart: \"Ricomincia\",\n    text_error: \"Verifica fallita\",\n    button_retry: \"Riprova\",\n    text_fetch_error: \"Problema di connessione con\"\n  };\n  // Portuguese\n  var LANG_PT = {\n    text_init: \"Inicializando...\",\n    text_ready: \"Verificação Anti-Robô\",\n    button_start: \"Clique para iniciar verificação\",\n    text_fetching: \"Carregando...\",\n    text_solving: \"Verificando se você é humano...\",\n    text_completed: \"Eu sou humano\",\n    text_completed_sr: \"Verificação automática de spam concluída\",\n    text_expired: \"Verificação Anti-Robô expirada\",\n    button_restart: \"Reiniciar\",\n    text_error: \"Verificação falhou\",\n    button_retry: \"Tentar novamente\",\n    text_fetch_error: \"Falha de conexão com\"\n  };\n  // Spanish\n  var LANG_ES = {\n    text_init: \"Inicializando...\",\n    text_ready: \"Verificación Anti-Robot\",\n    button_start: \"Haga clic para iniciar la verificación\",\n    text_fetching: \"Cargando desafío\",\n    text_solving: \"Verificando que eres humano...\",\n    text_completed: \"Soy humano\",\n    text_completed_sr: \"Verificación automática de spam completada\",\n    text_expired: \"Verificación Anti-Robot expirada\",\n    button_restart: \"Reiniciar\",\n    text_error: \"Ha fallado la verificación\",\n    button_retry: \"Intentar de nuevo\",\n    text_fetch_error: \"Error al conectarse a\"\n  };\n  // Catalan\n  var LANG_CA = {\n    text_init: \"Inicialitzant...\",\n    text_ready: \"Verificació Anti-Robot\",\n    button_start: \"Fes clic per començar la verificació\",\n    text_fetching: \"Carregant repte\",\n    text_solving: \"Verificant que ets humà...\",\n    text_completed: \"Soc humà\",\n    text_completed_sr: \"Verificació automàtica de correu brossa completada\",\n    text_expired: \"La verificació Anti-Robot ha expirat\",\n    button_restart: \"Reiniciar\",\n    text_error: \"Ha fallat la verificació\",\n    button_retry: \"Tornar a provar\",\n    text_fetch_error: \"Error connectant a\"\n  };\n  // Japanese\n  var LANG_JA = {\n    text_init: \"開始しています...\",\n    text_ready: \"アンチロボット認証\",\n    button_start: \"クリックして認証を開始\",\n    text_fetching: \"ロードしています\",\n    text_solving: \"認証中...\",\n    text_completed: \"私はロボットではありません\",\n    text_completed_sr: \"自動スパムチェックが完了しました\",\n    text_expired: \"認証の期限が切れています\",\n    button_restart: \"再度認証を行う\",\n    text_error: \"認証にエラーが発生しました\",\n    button_retry: \"再度認証を行う\",\n    text_fetch_error: \"接続ができませんでした\"\n  };\n  // Danish\n  var LANG_DA = {\n    text_init: \"Aktiverer...\",\n    text_ready: \"Jeg er ikke en robot\",\n    button_start: \"Klik for at starte verifikationen\",\n    text_fetching: \"Henter data\",\n    text_solving: \"Kontrollerer at du er et menneske...\",\n    text_completed: \"Jeg er et menneske.\",\n    text_completed_sr: \"Automatisk spamkontrol gennemført\",\n    text_expired: \"Verifikationen kunne ikke fuldføres\",\n    button_restart: \"Genstart\",\n    text_error: \"Bekræftelse mislykkedes\",\n    button_retry: \"Prøv igen\",\n    text_fetch_error: \"Forbindelsen mislykkedes\"\n  };\n  // Russian\n  var LANG_RU = {\n    text_init: \"Инициализация...\",\n    text_ready: \"АнтиРобот проверка\",\n    button_start: \"Нажмите, чтобы начать проверку\",\n    text_fetching: \"Получаю задачу\",\n    text_solving: \"Проверяю, что вы человек...\",\n    text_completed: \"Я человек\",\n    text_completed_sr: \"Aвтоматическая проверка на спам завершена\",\n    text_expired: \"Срок АнтиРоботной проверки истёк\",\n    button_restart: \"Начать заново\",\n    text_error: \"Ошибка проверки\",\n    button_retry: \"Повторить ещё раз\",\n    text_fetch_error: \"Ошибка подключения\"\n  };\n  // Swedish\n  var LANG_SV = {\n    text_init: \"Aktiverar...\",\n    text_ready: \"Jag är inte en robot\",\n    button_start: \"Klicka för att verifiera\",\n    text_fetching: \"Hämtar data\",\n    text_solving: \"Kontrollerar att du är människa...\",\n    text_completed: \"Jag är en människa\",\n    text_completed_sr: \"Automatisk spamkontroll slutförd\",\n    text_expired: \"Anti-robot-verifieringen har löpt ut\",\n    button_restart: \"Börja om\",\n    text_error: \"Verifiering kunde inte slutföras\",\n    button_retry: \"Omstart\",\n    text_fetch_error: \"Verifiering misslyckades\"\n  };\n  // Turkish\n  var LANG_TR = {\n    text_init: \"Başlatılıyor...\",\n    text_ready: \"Anti-Robot Doğrulaması\",\n    button_start: \"Doğrulamayı başlatmak için tıklayın\",\n    text_fetching: \"Yükleniyor\",\n    text_solving: \"Robot olmadığınız doğrulanıyor...\",\n    text_completed: \"Ben bir insanım\",\n    text_completed_sr: \"Otomatik spam kontrolü tamamlandı\",\n    text_expired: \"Anti-Robot doğrulamasının süresi doldu\",\n    button_restart: \"Yeniden başlat\",\n    text_error: \"Doğrulama başarısız oldu\",\n    button_retry: \"Tekrar dene\",\n    text_fetch_error: \"Bağlantı başarısız oldu\"\n  };\n  // Greek\n  var LANG_EL = {\n    text_init: \"Προετοιμασία...\",\n    text_ready: \"Anti-Robot Επαλήθευση\",\n    button_start: \" Κάντε κλικ για να ξεκινήσει η επαλήθευση\",\n    text_fetching: \" Λήψη πρόκλησης\",\n    text_solving: \" Επιβεβαίωση ανθρώπου...\",\n    text_completed: \"Είμαι άνθρωπος\",\n    text_completed_sr: \" Ο αυτόματος έλεγχος ανεπιθύμητου περιεχομένου ολοκληρώθηκε\",\n    text_expired: \" Η επαλήθευση Anti-Robot έληξε\",\n    button_restart: \" Επανεκκίνηση\",\n    text_error: \" Η επαλήθευση απέτυχε\",\n    button_retry: \" Δοκιμάστε ξανά\",\n    text_fetch_error: \" Αποτυχία σύνδεσης με\"\n  };\n  // Ukrainian\n  var LANG_UK = {\n    text_init: \"Ініціалізація...\",\n    text_ready: \"Антиробот верифікація\",\n    button_start: \"Натисніть, щоб розпочати верифікацію\",\n    text_fetching: \"З’єднання\",\n    text_solving: \"Перевірка, що ви не робот...\",\n    text_completed: \"Я не робот\",\n    text_completed_sr: \"Автоматична перевірка спаму завершена\",\n    text_expired: \"Час вичерпано\",\n    button_restart: \"Почати знову\",\n    text_error: \"Верифікація не вдалась\",\n    button_retry: \"Спробувати знову\",\n    text_fetch_error: \"Не вдалось з’єднатись\"\n  };\n  // Bulgarian\n  var LANG_BG = {\n    text_init: \"Инициализиране...\",\n    text_ready: \"Анти-робот проверка\",\n    button_start: \"Щракнете, за да започнете проверката\",\n    text_fetching: \"Предизвикателство\",\n    text_solving: \"Проверяваме дали си човек...\",\n    text_completed: \"Аз съм човек\",\n    text_completed_sr: \"Автоматичната проверка за спам е завършена\",\n    text_expired: \"Анти-Робот проверката изтече\",\n    button_restart: \"Рестартирайте\",\n    text_error: \"Неуспешна проверка\",\n    button_retry: \"Опитайте пак\",\n    text_fetch_error: \"Неуспешно свързване с\"\n  };\n  // Czech\n  var LANG_CS = {\n    text_init: \"Inicializace...\",\n    text_ready: \"Ověření proti robotům\",\n    button_start: \"Klikněte pro ověření\",\n    text_fetching: \"Problém při načítání\",\n    text_solving: \"Ověření, že jste člověk...\",\n    text_completed: \"Jsem člověk\",\n    text_completed_sr: \"Automatická kontrola spamu dokončena\",\n    text_expired: \"Ověření proti robotům vypršelo\",\n    button_restart: \"Restartovat\",\n    text_error: \"Ověření se nezdařilo\",\n    button_retry: \"Zkusit znovu\",\n    text_fetch_error: \"Připojení se nezdařilo\"\n  };\n  // Slovak\n  var LANG_SK = {\n    text_init: \"Inicializácia...\",\n    text_ready: \"Overenie proti robotom\",\n    button_start: \"Kliknite pre overenie\",\n    text_fetching: \"Problém pri načítaní\",\n    text_solving: \"Overenie, že ste človek...\",\n    text_completed: \"Som človek\",\n    text_completed_sr: \"Automatická kontrola spamu dokončená\",\n    text_expired: \"Overenie proti robotom vypršalo\",\n    button_restart: \"Reštartovať\",\n    text_error: \"Overenie sa nepodarilo\",\n    button_retry: \"Skúsiť znova\",\n    text_fetch_error: \"Pripojenie sa nepodarilo\"\n  };\n  // Norwegian\n  var LANG_NO = {\n    text_init: \" Aktiverer...\",\n    text_ready: \"Jeg er ikke en robot\",\n    button_start: \"Klikk for å starte verifiseringen\",\n    text_fetching: \"Henter data\",\n    text_solving: \"Sjekker at du er et menneske...\",\n    text_completed: \"Jeg er et menneske\",\n    text_completed_sr: \"Automatisk spam-sjekk fullført\",\n    text_expired: \"Verifisering kunne ikke fullføres\",\n    button_restart: \"Omstart\",\n    text_error: \"Bekreftelsen mislyktes\",\n    button_retry: \"Prøv på nytt\",\n    text_fetch_error: \"Tilkoblingen mislyktes\"\n  };\n  // Finnish\n  var LANG_FI = {\n    text_init: \"Aktivoidaan...\",\n    text_ready: \"En ole robotti\",\n    button_start: \"Aloita vahvistus klikkaamalla\",\n    text_fetching: \"Haetaan tietoja\",\n    text_solving: \"Tarkistaa, että olet ihminen...\",\n    text_completed: \"Olen ihminen\",\n    text_completed_sr: \"Automaattinen roskapostin tarkistus suoritettu\",\n    text_expired: \"Vahvistusta ei voitu suorittaa loppuun\",\n    button_restart: \"Uudelleenkäynnistys\",\n    text_error: \"Vahvistus epäonnistui\",\n    button_retry: \"Yritä uudelleen\",\n    text_fetch_error: \"Yhteys epäonnistui\"\n  };\n  // Latvian\n  var LANG_LV = {\n    text_init: \"Notiek inicializēšana...\",\n    text_ready: \"Verifikācija, ka neesat robots\",\n    button_start: \"Noklikšķiniet, lai sāktu verifikāciju\",\n    text_fetching: \"Notiek drošības uzdevuma izgūšana\",\n    text_solving: \"Notiek pārbaude, vai esat cilvēks...\",\n    text_completed: \"Es esmu cilvēks\",\n    text_completed_sr: \"Automātiska surogātpasta pārbaude pabeigta\",\n    text_expired: \"Verifikācijas, ka neesat robots, derīgums beidzies\",\n    button_restart: \"Restartēt\",\n    text_error: \"Verifikācija neizdevās\",\n    button_retry: \"Mēģināt vēlreiz\",\n    text_fetch_error: \"Neizdevās izveidot savienojumu ar\"\n  };\n  // Lithuanian\n  var LANG_LT = {\n    text_init: \"Inicijuojama...\",\n    text_ready: \"Patikrinimas, ar nesate robotas\",\n    button_start: \"Spustelėkite patikrinimui pradėti\",\n    text_fetching: \"Gavimo iššūkis\",\n    text_solving: \"Tikrinama, ar esate žmogus...\",\n    text_completed: \"Esu žmogus\",\n    text_completed_sr: \"Automatinė patikra dėl pašto šiukšlių atlikta\",\n    text_expired: \"Patikrinimas, ar nesate robotas, baigė galioti\",\n    button_restart: \"Pradėti iš naujo\",\n    text_error: \"Patikrinimas nepavyko\",\n    button_retry: \"Kartoti\",\n    text_fetch_error: \"Nepavyko prisijungti prie\"\n  };\n  // Polish\n  var LANG_PL = {\n    text_init: \"Inicjowanie...\",\n    text_ready: \"Weryfikacja antybotowa\",\n    button_start: \"Kliknij, aby rozpocząć weryfikację\",\n    text_fetching: \"Pobieranie\",\n    text_solving: \"Weryfikacja, czy nie jesteś robotem...\",\n    text_completed: \"Nie jestem robotem\",\n    text_completed_sr: \"Zakończono automatyczne sprawdzanie spamu\",\n    text_expired: \"Weryfikacja antybotowa wygasła\",\n    button_restart: \"Uruchom ponownie\",\n    text_error: \"Weryfikacja nie powiodła się\",\n    button_retry: \"Spróbuj ponownie\",\n    text_fetch_error: \"Nie udało się połączyć z\"\n  };\n  // Estonian\n  var LANG_ET = {\n    text_init: \"Initsialiseerimine...\",\n    text_ready: \"Robotivastane kinnitus\",\n    button_start: \"Kinnitamisega alustamiseks klõpsake\",\n    text_fetching: \"Väljakutse toomine\",\n    text_solving: \"Kinnitatakse, et sa oled inimene...\",\n    text_completed: \"Ma olen inimene\",\n    text_completed_sr: \"Automaatne rämpsposti kontroll on lõpetatud\",\n    text_expired: \"Robotivastane kinnitus aegus\",\n    button_restart: \"Taaskäivita\",\n    text_error: \"Kinnitamine nurjus\",\n    button_retry: \"Proovi uuesti\",\n    text_fetch_error: \"Ühenduse loomine nurjus\"\n  };\n  // Croatian\n  var LANG_HR = {\n    text_init: \"Početno postavljanje...\",\n    text_ready: \"Provjera protiv robota\",\n    button_start: \"Kliknite za početak provjere\",\n    text_fetching: \"Dohvaćanje izazova\",\n    text_solving: \"Provjeravamo jeste li čovjek...\",\n    text_completed: \"Nisam robot\",\n    text_completed_sr: \"Automatska provjera je završena\",\n    text_expired: \"Vrijeme za provjeru protiv robota je isteklo\",\n    button_restart: \"Osvježi\",\n    text_error: \"Provjera nije uspjlela\",\n    button_retry: \" Ponovo pokreni\",\n    text_fetch_error: \"Nije moguće uspostaviti vezu\"\n  };\n  // Serbian\n  var LANG_SR = {\n    text_init: \"Pokretanje...\",\n    text_ready: \"Anti-Robot Verifikacija\",\n    button_start: \"Kliknite da biste započeli verifikaciju\",\n    text_fetching: \"Učitavanje izazova\",\n    text_solving: \"Verifikacija da ste čovek...\",\n    text_completed: \"Ja sam čovek\",\n    text_completed_sr: \"Automatska provera neželjene pošte je završena\",\n    text_expired: \"Anti-Robot verifikacija je istekla\",\n    button_restart: \"Ponovo pokrenuti\",\n    text_error: \"Verifikacija nije uspela\",\n    button_retry: \"Pokušajte ponovo\",\n    text_fetch_error: \"Neuspelo povezivanje sa...\"\n  };\n  // Slovenian\n  var LANG_SL = {\n    text_init: \"Inicializiranje...\",\n    text_ready: \"Preverjanje robotov\",\n    button_start: \"Kliknite za začetek preverjanja\",\n    text_fetching: \"Prenašanje izziva\",\n    text_solving: \"Preverjamo, ali ste človek\",\n    text_completed: \"Nisem robot\",\n    text_completed_sr: \"Avtomatsko preverjanje je zaključeno\",\n    text_expired: \"Preverjanje robotov je poteklo\",\n    button_restart: \"Osveži\",\n    text_error: \"Preverjanje ni uspelo\",\n    button_retry: \"Poskusi ponovno\",\n    text_fetch_error: \"Povezave ni bilo mogoče vzpostaviti\"\n  };\n  // Hungarian\n  var LANG_HU = {\n    text_init: \"Inicializálás...\",\n    text_ready: \"Robotellenes ellenőrzés\",\n    button_start: \"Kattintson az ellenőrzés megkezdéséhez\",\n    text_fetching: \"Feladvány lekérése\",\n    text_solving: \"Annak igazolása, hogy Ön nem robot...\",\n    text_completed: \"Nem vagyok robot\",\n    text_completed_sr: \"Automatikus spam ellenőrzés befejeződött\",\n    text_expired: \"Robotellenes ellenőrzés lejárt\",\n    button_restart: \"Újraindítás\",\n    text_error: \"Az ellenőrzés nem sikerült\",\n    button_retry: \"Próbálja újra\",\n    text_fetch_error: \"Nem sikerült csatlakozni\"\n  };\n  // Romanian\n  var LANG_RO = {\n    text_init: \"Se inițializează...\",\n    text_ready: \"Verificare anti-robot\",\n    button_start: \"Click pentru a începe verificarea\",\n    text_fetching: \"Downloading\",\n    text_solving: \"Verificare că ești om...\",\n    text_completed: \"Sunt om\",\n    text_completed_sr: \"Verificarea automată a spam-ului a fost finalizată\",\n    text_expired: \"Verificarea anti-robot a expirat\",\n    button_restart: \"Restart\",\n    text_error: \"Verificare eșuată\",\n    button_retry: \"Reîncearcă\",\n    text_fetch_error: \"Nu s-a putut conecta\"\n  };\n  // Chinese\n  var LANG_ZH = {\n    text_init: \"初始化中……\",\n    text_ready: \"人机验证\",\n    button_start: \"点击开始\",\n    text_fetching: \"正在加载\",\n    text_solving: \"人机校验中……\",\n    text_completed: \"我不是机器人\",\n    text_completed_sr: \"人机验证完成\",\n    text_expired: \"验证已过期\",\n    button_restart: \"重新开始\",\n    text_error: \"校验失败\",\n    button_retry: \"重试\",\n    text_fetch_error: \"无法连接到\"\n  };\n  // Traditional Chinese\n  var LANG_ZH_TW = {\n    text_init: \"正在初始化……\",\n    text_ready: \"反機器人驗證\",\n    button_start: \"點擊開始驗證\",\n    text_fetching: \"載入中\",\n    text_solving: \"反機器人驗證中……\",\n    text_completed: \"我不是機器人\",\n    text_completed_sr: \"驗證完成\",\n    text_expired: \"驗證超時\",\n    button_restart: \"重新開始\",\n    text_error: \"驗證失敗\",\n    button_retry: \"重試\",\n    text_fetch_error: \"無法連線到\"\n  };\n  // Vietnamese\n  var LANG_VI = {\n    text_init: \"Đang khởi tạo...\",\n    text_ready: \"Xác minh chống Robot\",\n    button_start: \"Bấm vào đây để xác minh\",\n    text_fetching: \"Tìm nạp và xử lý thử thách\",\n    text_solving: \"Xác minh bạn là người...\",\n    text_completed: \"Bạn là con người\",\n    text_completed_sr: \"Xác minh hoàn tất\",\n    text_expired: \"Xác minh đã hết hạn\",\n    button_restart: \"Khởi động lại\",\n    text_error: \"Xác minh thất bại\",\n    button_retry: \"Thử lại\",\n    text_fetch_error: \"Không kết nối được\"\n  };\n  // Hebrew\n  var LANG_HE = {\n    text_init: \"בביצוע...\",\n    text_ready: \"אימות אנוש\",\n    button_start: \"צריך ללחוץ להתחלת האימות\",\n    text_fetching: \"אתגר המענה בהכנה\",\n    text_solving: \"מתבצע אימות אנוש...\",\n    text_completed: \"אני לא רובוט\",\n    text_completed_sr: \"בדיקת הספאם האוטומטית הסתיימה\",\n    text_expired: \"פג תוקף אימות האנוש\",\n    button_restart: \"להתחיל שוב\",\n    text_error: \"אימות האנוש נכשל\",\n    button_retry: \"לנסות שוב\",\n    text_fetch_error: \"נכשל החיבור אל\",\n    rtl: true\n  };\n  // Thai\n  var LANG_TH = {\n    text_init: \"การเริ่มต้น...\",\n    text_ready: \" การตรวจสอบต่อต้านหุ่นยนต์\",\n    button_start: \"คลิกเพื่อเริ่มการตรวจสอบ\",\n    text_fetching: \"การดึงความท้าทาย\",\n    text_solving: \"ยืนยันว่าคุณเป็นมนุษย์...\",\n    text_completed: \"ฉันเป็นมนุษย์\",\n    text_completed_sr: \"การตรวจสอบสแปมอัตโนมัติเสร็จสมบูรณ์\",\n    text_expired: \"การตรวจสอบ ต่อต้านหุ่นยนต์ หมดอายุ\",\n    button_restart: \"รีสตาร์ท\",\n    text_error: \"การยืนยันล้มเหลว\",\n    button_retry: \"ลองใหม่\",\n    text_fetch_error: \"ไม่สามารถเชื่อมต่อได้\"\n  };\n  // South Korean\n  var LANG_KR = {\n    text_init: \"초기화 중\",\n    text_ready: \"Anti-Robot 검증\",\n    button_start: \"검증을 위해 클릭해 주세요\",\n    text_fetching: \"검증 준비 중\",\n    text_solving: \"검증 중\",\n    text_completed: \"검증이 완료되었습니다\",\n    text_completed_sr: \"자동 스팸 확인 완료\",\n    text_expired: \"Anti-Robot 검증 만료\",\n    button_restart: \"다시 시작합니다\",\n    text_error: \"검증 실패\",\n    button_retry: \"다시 시도해 주세요\",\n    text_fetch_error: \"연결하지 못했습니다\"\n  };\n  // Arabic\n  var LANG_AR = {\n    text_init: \"...التهيئة\",\n    text_ready: \"يتم التحقيق\",\n    button_start: \"إضغط هنا للتحقيق\",\n    text_fetching: \"تهيئة التحدي\",\n    text_solving: \"نتحقق من أنك لست روبوتًا...\",\n    text_completed: \"أنا لست روبوتًا\",\n    text_completed_sr: \"تم الانتهاء من التحقق التلقائي من البريد العشوائي\",\n    text_expired: \"انتهت صلاحية التحقق\",\n    button_restart: \"إعادة تشغيل\",\n    text_error: \"فشل التحقق\",\n    button_retry: \"ابدأ مرة أخرى\",\n    text_fetch_error: \"مشكلة في الاتصال مع\"\n  };\n  var localizations = {\n    en: LANG_EN,\n    de: LANG_DE,\n    nl: LANG_NL,\n    fr: LANG_FR,\n    it: LANG_IT,\n    pt: LANG_PT,\n    es: LANG_ES,\n    ca: LANG_CA,\n    ja: LANG_JA,\n    da: LANG_DA,\n    ru: LANG_RU,\n    sv: LANG_SV,\n    tr: LANG_TR,\n    el: LANG_EL,\n    uk: LANG_UK,\n    bg: LANG_BG,\n    cs: LANG_CS,\n    sk: LANG_SK,\n    no: LANG_NO,\n    fi: LANG_FI,\n    lv: LANG_LV,\n    lt: LANG_LT,\n    pl: LANG_PL,\n    et: LANG_ET,\n    hr: LANG_HR,\n    sr: LANG_SR,\n    sl: LANG_SL,\n    hu: LANG_HU,\n    ro: LANG_RO,\n    zh: LANG_ZH,\n    zh_tw: LANG_ZH_TW,\n    vi: LANG_VI,\n    he: LANG_HE,\n    th: LANG_TH,\n    kr: LANG_KR,\n    ar: LANG_AR,\n    // alternative language codes\n    nb: LANG_NO\n  };\n  function createDiagnosticsBuffer(solverID, timeToSolved) {\n    var arr = new Uint8Array(3);\n    var view = new DataView(arr.buffer);\n    view.setUint8(0, solverID);\n    view.setUint16(1, timeToSolved);\n    return arr;\n  }\n  var workerString = \"!function(){function A(r){return A=\\\"function\\\"==typeof Symbol&&\\\"symbol\\\"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&\\\"function\\\"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?\\\"symbol\\\":typeof A},A(r)}function r(A,r){(null==r||r>A.length)&&(r=A.length);for(var t=0,n=Array(r);t<r;t++)n[t]=A[t];return n}function t(A,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,\\\"value\\\"in n&&(n.writable=!0),Object.defineProperty(A,e(n.key),n)}}function n(A,r,n){return r&&t(A.prototype,r),n&&t(A,n),Object.defineProperty(A,\\\"prototype\\\",{writable:!1}),A}function e(r){var t=function(r){if(\\\"object\\\"!=A(r)||!r)return r;var t=r[Symbol.toPrimitive];if(void 0!==t){var n=t.call(r,\\\"string\\\");if(\\\"object\\\"!=A(n))return n;throw new TypeError(\\\"@@toPrimitive must return a primitive value.\\\")}return String(r)}(r);return\\\"symbol\\\"==A(t)?t:t+\\\"\\\"}!function(){\\\"use strict\\\";var A,r=[];function t(){for(;r.length;)r[0](),r.shift()}function n(A){this.a=e,this.b=void 0,this.f=[];var r=this;try{A((function(A){i(r,A)}),(function(A){g(r,A)}))}catch(t){g(r,t)}}A=function(){setTimeout(t)};var e=2;function o(A){return new n((function(r){r(A)}))}function i(A,r){if(A.a==e){if(r==A)throw new TypeError;var t=!1;try{var n=r&&r.then;if(null!=r&&\\\"object\\\"==typeof r&&\\\"function\\\"==typeof n)return void n.call(r,(function(r){t||i(A,r),t=!0}),(function(r){t||g(A,r),t=!0}))}catch(o){return void(t||g(A,o))}A.a=0,A.b=r,I(A)}}function g(A,r){if(A.a==e){if(r==A)throw new TypeError;A.a=1,A.b=r,I(A)}}function I(t){!function(t){r.push(t),1==r.length&&A()}((function(){if(t.a!=e)for(;t.f.length;){var A=(o=t.f.shift())[0],r=o[1],n=o[2],o=o[3];try{0==t.a?n(\\\"function\\\"==typeof A?A.call(void 0,t.b):t.b):1==t.a&&(\\\"function\\\"==typeof r?n(r.call(void 0,t.b)):o(t.b))}catch(i){o(i)}}}))}n.prototype.g=function(A){return this.c(void 0,A)},n.prototype.c=function(A,r){var t=this;return new n((function(n,e){t.f.push([A,r,n,e]),I(t)}))},self.Promise||(self.Promise=n,self.Promise.resolve=o,self.Promise.reject=function(A){return new n((function(r,t){t(A)}))},self.Promise.race=function(A){return new n((function(r,t){for(var n=0;n<A.length;n+=1)o(A[n]).c(r,t)}))},self.Promise.all=function(A){return new n((function(r,t){function n(t){return function(n){i[t]=n,(e+=1)==A.length&&r(i)}}var e=0,i=[];0==A.length&&r(i);for(var g=0;g<A.length;g+=1)o(A[g]).c(n(g),t)}))},self.Promise.prototype.then=n.prototype.c,self.Promise.prototype.catch=n.prototype.g)}(),function(){\\\"use strict\\\";for(var A=\\\"=\\\".charCodeAt(0),t=new Uint8Array(256),e=0;e<64;e++)t[\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\".charCodeAt(e)]=e;var o=n((function A(r){!function(A,r){if(!(A instanceof r))throw new TypeError(\\\"Cannot call a class as a function\\\")}(this,A),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.v=new Uint32Array(32),this.m=new Uint32Array(32),this.outlen=r}));function i(A,r){return A[r]^A[r+1]<<8^A[r+2]<<16^A[r+3]<<24}function g(A,r,t,n,e,o,i,g){var I,C,Q,c=r[i],a=r[i+1],f=r[g],u=r[g+1],B=A[t],s=A[t+1],E=A[n],l=A[n+1],h=A[e],w=A[e+1],y=A[o],v=A[o+1];Q=v^(s=(s=s+l+((B&E|(B|E)&~(I=B+E))>>>31))+a+(((B=I)&c|(B|c)&~(I=B+c))>>>31)),E=(Q=(l=(Q=l^(w=w+(v=C=y^(B=I))+((h&(y=Q)|(h|y)&~(I=h+y))>>>31)))>>>24^(C=E^(h=I))<<8)^(w=w+(v=(Q=v^(s=(s=s+l+((B&(E=C>>>24^Q<<8)|(B|E)&~(I=B+E))>>>31))+u+(((B=I)&f|(B|f)&~(I=B+f))>>>31)))>>>16^(C=y^(B=I))<<16)+((h&(y=C>>>16^Q<<16)|(h|y)&~(I=h+y))>>>31)))>>>31^(C=E^(h=I))<<1,l=C>>>31^Q<<1,A[t]=B,A[t+1]=s,A[n]=E,A[n+1]=l,A[e]=h,A[e+1]=w,A[o]=y,A[o+1]=v}var I,C,Q=[4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225],c=[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6,22,16,24,0,10,4,30,26,20,28,6,12,14,2,18,8,14,18,6,2,26,24,22,28,4,12,10,20,8,0,30,16,18,0,10,14,4,8,20,30,28,2,22,24,12,16,6,26,4,24,12,20,0,22,16,6,8,26,14,10,30,28,2,18,24,10,2,30,28,26,8,20,0,14,12,6,18,4,16,22,26,22,14,28,24,2,6,18,10,0,30,8,16,12,4,20,12,30,28,18,22,6,0,16,24,4,26,14,2,8,20,10,20,4,16,8,14,12,2,10,30,22,18,28,6,24,26,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6];function a(A,r){for(var t=A.v,n=A.m,e=0;e<16;e++)t[e]=A.h[e],t[e+16]=Q[e];t[24]=t[24]^A.t,t[25]=t[25]^A.t/4294967296,r&&(t[28]=~t[28],t[29]=~t[29]);for(var o=0;o<32;o++)n[o]=i(A.b,4*o);for(var I=0;I<12;I++)g(t,n,0,8,16,24,c[16*I+0],c[16*I+1]),g(t,n,2,10,18,26,c[16*I+2],c[16*I+3]),g(t,n,4,12,20,28,c[16*I+4],c[16*I+5]),g(t,n,6,14,22,30,c[16*I+6],c[16*I+7]),g(t,n,0,10,20,30,c[16*I+8],c[16*I+9]),g(t,n,2,12,22,24,c[16*I+10],c[16*I+11]),g(t,n,4,14,16,26,c[16*I+12],c[16*I+13]),g(t,n,6,8,18,28,c[16*I+14],c[16*I+15]);for(var C=0;C<16;C++)A.h[C]=A.h[C]^t[C]^t[C+16]}function f(A,r){for(var t=0;t<16;t++)A.h[t]=Q[t];A.b.set(r),A.h[0]^=16842752^A.outlen}function u(){return new Promise((function(A){return A((function(A,r){var t=function(A,r,t){if(128!=A.length)throw Error(\\\"Invalid input\\\");var n=A.buffer,e=new DataView(n),i=new o(32);i.t=128;for(var g=e.getUint32(124,!0),I=g+t,C=g;C<I;C++)if(e.setUint32(124,C,!0),f(i,A),a(i,!0),i.h[0]<r)return 0==ASC_TARGET?new Uint8Array(i.h.buffer):Uint8Array.wrap(i.h.buffer);return new Uint8Array(0)}(A,r,arguments.length>2&&void 0!==arguments[2]?arguments[2]:4294967295);return[A,t]}))}))}Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,\\\"slice\\\",{value:function(A,r){return new Uint8Array(Array.prototype.slice.call(this,A,r))}}),self.ASC_TARGET=0;var B=new Promise((function(A){return C=A}));self.onerror=function(A){self.postMessage({type:\\\"error\\\",message:JSON.stringify(A)})},self.onmessage=function(n){return new Promise((function(e,o){var i;i=n.data;var g=function(){try{return e()}catch(A){return o(A)}},Q=function(A){try{return setTimeout((function(){throw A})),g()}catch(r){return o(r)}};try{var c=function(){return g()};if(\\\"solver\\\"!==i.type){var a,f,s,E,l=function(){return c.call(this)};return\\\"start\\\"===i.type?Promise.resolve(B).then(function(A){try{a=A,self.postMessage({type:\\\"started\\\"}),f=0;for(var t=0;t<256;t++){i.puzzleSolverInput[123]=t;var n=function(A){if(Array.isArray(A))return A}(o=a(i.puzzleSolverInput,i.threshold))||function(A){var r=null==A?null:\\\"undefined\\\"!=typeof Symbol&&A[Symbol.iterator]||A[\\\"@@iterator\\\"];if(null!=r){var t,n,e,o,i=[],g=!0,I=!1;try{for(e=(r=r.call(A)).next;!(g=(t=e.call(r)).done)&&(i.push(t.value),2!==i.length);g=!0);}catch(A){I=!0,n=A}finally{try{if(!g&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(I)throw n}}return i}}(o)||function(A){if(A){if(\\\"string\\\"==typeof A)return r(A,2);var t={}.toString.call(A).slice(8,-1);return\\\"Object\\\"===t&&A.constructor&&(t=A.constructor.name),\\\"Map\\\"===t||\\\"Set\\\"===t?Array.from(A):\\\"Arguments\\\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(A,2):void 0}}(o)||function(){throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\\")}(),e=n[0];if(0!==n[1].length){s=e;break}console.warn(\\\"FC: Internal error or no solution found\\\"),f+=Math.pow(2,32)-1}return E=new DataView(s.slice(-4).buffer),f+=E.getUint32(0,!0),self.postMessage({type:\\\"done\\\",solution:s.slice(-8),h:f,puzzleIndex:i.puzzleIndex,puzzleNumber:i.puzzleNumber}),l.call(this)}catch(g){return Q(g)}var o}.bind(this),Q):l.call(this)}var h=function(){return self.postMessage({type:\\\"ready\\\",solver:I}),c.call(this)};if(i.forceJS)return I=1,Promise.resolve(u()).then(function(A){try{return C(A),h.call(this)}catch(r){return Q(r)}}.bind(this),Q);var w=function(){try{return h.call(this)}catch(A){return Q(A)}}.bind(this),y=function(A){try{return console.log(\\\"FriendlyCaptcha failed to initialize WebAssembly, falling back to Javascript solver: \\\"+A.toString()),I=1,Promise.resolve(u()).then((function(A){try{return C(A),w()}catch(r){return Q(r)}}),Q)}catch(r){return Q(r)}};try{var v;return I=2,v=WebAssembly.compile(function(r){var n=3285;r.charCodeAt(4379)===A&&n--,r.charCodeAt(4378)===A&&n--;for(var e=new Uint8Array(n),o=0,i=0;o<4380;o+=4){var g=t[r.charCodeAt(o+0)],I=t[r.charCodeAt(o+1)],C=t[r.charCodeAt(o+2)],Q=t[r.charCodeAt(o+3)];e[i++]=g<<2|I>>4,e[i++]=(15&I)<<4|C>>2,e[i++]=(3&C)<<6|63&Q}return e}(\\\"AGFzbQEAAAABKghgAABgAn9/AGADf39/AX9gAX8AYAR/f39/AGAAAX9gAX8Bf2ACf38BfwINAQNlbnYFYWJvcnQABAMMCwcGAwAAAQIFAQIABQMBAAEGFgR/AUEAC38BQQALfwBBAwt/AEHgDAsHbgkGbWVtb3J5AgAHX19hbGxvYwABCF9fcmV0YWluAAIJX19yZWxlYXNlAAMJX19jb2xsZWN0AAQHX19yZXNldAAFC19fcnR0aV9iYXNlAwMNVWludDhBcnJheV9JRAMCDHNvbHZlQmxha2UyYgAKCAELCvQSC5IBAQV/IABB8P///wNLBEAACyMBQRBqIgQgAEEPakFwcSICQRAgAkEQSxsiBmoiAj8AIgVBEHQiA0sEQCAFIAIgA2tB//8DakGAgHxxQRB2IgMgBSADShtAAEEASARAIANAAEEASARAAAsLCyACJAEgBEEQayICIAY2AgAgAkEBNgIEIAIgATYCCCACIAA2AgwgBAsEACAACwMAAQsDAAELBgAjACQBC7sCAQF/AkAgAUUNACAAQQA6AAAgACABakEEayICQQA6AAMgAUECTQ0AIABBADoAASAAQQA6AAIgAkEAOgACIAJBADoAASABQQZNDQAgAEEAOgADIAJBADoAACABQQhNDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmpBHGsiAUEANgIYIAJBCE0NACAAQQA2AgQgAEEANgIIIAFBADYCECABQQA2AhQgAkEYTQ0AIABBADYCDCAAQQA2AhAgAEEANgIUIABBADYCGCABQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgwgACAAQQRxQRhqIgFqIQAgAiABayEBA0AgAUEgTwRAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCABQSBrIQEgAEEgaiEADAELCwsLcgACfyAARQRAQQxBAhABIQALIAALQQA2AgAgAEEANgIEIABBADYCCCABQfD///8DIAJ2SwRAQcAKQfAKQRJBORAAAAsgASACdCIBQQAQASICIAEQBiAAKAIAGiAAIAI2AgAgACACNgIEIAAgATYCCCAAC88BAQJ/QaABQQAQASIAQQxBAxABQYABQQAQBzYCACAAQQxBBBABQQhBAxAHNgIEIABCADcDCCAAQQA2AhAgAEIANwMYIABC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\\\")),Promise.resolve(v).then((function(A){try{return Promise.resolve(function(A){return new Promise((function(r,t){var n,e,o;return Promise.resolve(function(A){return new Promise((function(r,t){var n,e;return n={env:{abort:function(){throw Error(\\\"Wasm aborted\\\")}}},Promise.resolve(WebAssembly.instantiate(A,n)).then((function(A){try{return e=function(A){var r={},t=A.exports,n=t.memory,e=t.__alloc,o=t.__retain,i=t.__rtti_base||-1;return r.__allocArray=function(A,r){var t=function(A){return new Uint32Array(n.buffer)[(i+4>>>2)+2*A]}(A),g=31-Math.clz32(t>>>6&31),I=r.length,C=e(I<<g,0),Q=e(12,A),c=new Uint32Array(n.buffer);c[Q+0>>>2]=o(C),c[Q+4>>>2]=C,c[Q+8>>>2]=I<<g;var a=n.buffer,f=new Uint8Array(a);if(16384&t)for(var u=0;u<I;++u)f[(C>>>g)+u]=o(r[u]);else f.set(r,C>>>g);return Q},r.__getUint8Array=function(A){var r=new Uint32Array(n.buffer),t=r[A+4>>>2];return new Uint8Array(n.buffer,t,r[t-4>>>2]>>>0)},function(A){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=A.__argumentsLength?function(r){A.__argumentsLength.value=r}:A.__setArgumentsLength||A.__setargc||function(){return{}},n=function(){if(!Object.prototype.hasOwnProperty.call(A,e))return 1;var n=A[e],o=e.split(\\\".\\\")[0];\\\"function\\\"==typeof n&&n!==t?(r[o]=function(){return t(arguments.length),n.apply(void 0,arguments)}).original=n:r[o]=n};for(var e in A)n();return r}(t,r)}(A),r({exports:e})}catch(n){return t(n)}}),t)}))}(A)).then((function(A){try{return e=(n=A).exports.__retain(n.exports.__allocArray(n.exports.Uint8Array_ID,new Uint8Array(128))),o=n.exports.__getUint8Array(e),r((function(A,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4294967295;o.set(A);var i=n.exports.solveBlake2b(e,r,t);o=n.exports.__getUint8Array(e);var g=n.exports.__getUint8Array(i);return n.exports.__release(i),[o,g]}))}catch(i){return t(i)}}),t)}))}(A)).then((function(A){try{return C(A),w()}catch(r){return y(r)}}),y)}catch(r){return y(r)}}),y)}catch(p){y(p)}}catch(p){Q(p)}}))}}()}(\\\"undefined\\\"==typeof frcWorker?frcWorker={}:frcWorker);\";\n\n  // Defensive init to make it easier to integrate with Gatsby and friends.\n  var URL;\n  if (typeof window !== \"undefined\") {\n    URL = window.URL || window.webkitURL;\n  }\n  var WorkerGroup = /*#__PURE__*/function () {\n    function WorkerGroup() {\n      _classCallCheck(this, WorkerGroup);\n      this.workers = [];\n      this.puzzleNumber = 0;\n      this.numPuzzles = 0;\n      this.threshold = 0;\n      this.startTime = 0;\n      this.progress = 0;\n      this.totalHashes = 0;\n      this.puzzleSolverInputs = [];\n      // The index of the next puzzle\n      this.puzzleIndex = 0;\n      this.solutionBuffer = new Uint8Array(0);\n      // initialize some value, so ts is happy\n      this.solverType = 1;\n      this.readyPromise = new Promise(function () {});\n      this.readyCount = 0;\n      this.startCount = 0;\n      this.progressCallback = function () {\n        return 0;\n      };\n      this.readyCallback = function () {\n        return 0;\n      };\n      this.startedCallback = function () {\n        return 0;\n      };\n      this.doneCallback = function () {\n        return 0;\n      };\n      this.errorCallback = function () {\n        return 0;\n      };\n    }\n    return _createClass(WorkerGroup, [{\n      key: \"init\",\n      value: function init() {\n        var _this = this;\n        this.terminateWorkers();\n        this.progress = 0;\n        this.totalHashes = 0;\n        var setReady;\n        this.readyPromise = new Promise(function (resolve) {\n          return setReady = resolve;\n        });\n        this.readyCount = 0;\n        this.startCount = 0;\n        // Setup four workers for now - later we could calculate this depending on the device\n        this.workers = new Array(4);\n        var workerBlob = new Blob([workerString], {\n          type: \"text/javascript\"\n        });\n        var _loop = function _loop(_i4) {\n          _this.workers[_i4] = new Worker(URL.createObjectURL(workerBlob));\n          _this.workers[_i4].onerror = function (e) {\n            return _this.errorCallback(e);\n          };\n          _this.workers[_i4].onmessage = function (e) {\n            var data = e.data;\n            if (!data) return;\n            if (data.type === \"ready\") {\n              _this.readyCount++;\n              _this.solverType = data.solver;\n              // We are ready, when all workers are ready\n              if (_this.readyCount == _this.workers.length) {\n                setReady();\n                _this.readyCallback();\n              }\n            } else if (data.type === \"started\") {\n              _this.startCount++;\n              // We started, when the first worker starts working\n              if (_this.startCount == 1) {\n                _this.startTime = Date.now();\n                _this.startedCallback();\n              }\n            } else if (data.type === \"done\") {\n              if (data.puzzleNumber !== _this.puzzleNumber) return; // solution belongs to a previous puzzle\n              if (_this.puzzleIndex < _this.puzzleSolverInputs.length) {\n                _this.workers[_i4].postMessage({\n                  type: \"start\",\n                  puzzleSolverInput: _this.puzzleSolverInputs[_this.puzzleIndex],\n                  threshold: _this.threshold,\n                  puzzleIndex: _this.puzzleIndex,\n                  puzzleNumber: _this.puzzleNumber\n                });\n                _this.puzzleIndex++;\n              }\n              _this.progress++;\n              _this.totalHashes += data.h;\n              _this.progressCallback({\n                n: _this.numPuzzles,\n                h: _this.totalHashes,\n                t: (Date.now() - _this.startTime) / 1000,\n                i: _this.progress\n              });\n              _this.solutionBuffer.set(data.solution, data.puzzleIndex * 8);\n              // We are done, when all puzzles have been solved\n              if (_this.progress == _this.numPuzzles) {\n                var totalTime = (Date.now() - _this.startTime) / 1000;\n                _this.doneCallback({\n                  solution: _this.solutionBuffer,\n                  h: _this.totalHashes,\n                  t: totalTime,\n                  diagnostics: createDiagnosticsBuffer(_this.solverType, totalTime),\n                  solver: _this.solverType\n                });\n              }\n            } else if (data.type === \"error\") {\n              _this.errorCallback(data);\n            }\n          };\n        };\n        for (var _i4 = 0; _i4 < this.workers.length; _i4++) {\n          _loop(_i4);\n        }\n      }\n    }, {\n      key: \"setupSolver\",\n      value: function setupSolver() {\n        var forceJS = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n        var msg = {\n          type: \"solver\",\n          forceJS: forceJS\n        };\n        for (var _i5 = 0; _i5 < this.workers.length; _i5++) {\n          this.workers[_i5].postMessage(msg);\n        }\n      }\n    }, {\n      key: \"start\",\n      value: function start(puzzle) {\n        return new Promise(function ($return, $error) {\n          return Promise.resolve(this.readyPromise).then(function ($await_11) {\n            try {\n              this.puzzleSolverInputs = getPuzzleSolverInputs(puzzle.buffer, puzzle.n);\n              this.solutionBuffer = new Uint8Array(8 * puzzle.n);\n              this.numPuzzles = puzzle.n;\n              this.threshold = puzzle.threshold;\n              this.puzzleIndex = 0;\n              this.puzzleNumber++;\n              for (var _i6 = 0; _i6 < this.workers.length; _i6++) {\n                if (this.puzzleIndex === this.puzzleSolverInputs.length) break;\n                this.workers[_i6].postMessage({\n                  type: \"start\",\n                  puzzleSolverInput: this.puzzleSolverInputs[_i6],\n                  threshold: this.threshold,\n                  puzzleIndex: this.puzzleIndex,\n                  puzzleNumber: this.puzzleNumber\n                });\n                this.puzzleIndex++;\n              }\n              return $return();\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          }.bind(this), $error);\n        }.bind(this));\n      }\n    }, {\n      key: \"terminateWorkers\",\n      value: function terminateWorkers() {\n        if (this.workers.length == 0) return;\n        for (var _i7 = 0; _i7 < this.workers.length; _i7++) {\n          this.workers[_i7].terminate();\n        }\n        this.workers = [];\n      }\n    }]);\n  }();\n  var PUZZLE_ENDPOINT_URL = \"https://api.friendlycaptcha.com/api/v1/puzzle\";\n  var WidgetInstance = /*#__PURE__*/function () {\n    function WidgetInstance(element) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      _classCallCheck(this, WidgetInstance);\n      this.workerGroup = new WorkerGroup();\n      /**\r\n       * The captcha has been succesfully solved.\r\n       */\n      this.valid = false;\n      /**\r\n       * Some errors may cause a need for the (worker) to be reinitialized. If this is\r\n       * true `init` will be called again when start is called.\r\n       */\n      this.needsReInit = false;\n      /**\r\n       * Start() has been called at least once ever.\r\n       */\n      this.hasBeenStarted = false;\n      this.hasBeenDestroyed = false;\n      this.opts = Object.assign({\n        forceJSFallback: false,\n        skipStyleInjection: false,\n        startMode: \"focus\",\n        puzzleEndpoint: element.dataset[\"puzzleEndpoint\"] || PUZZLE_ENDPOINT_URL,\n        startedCallback: function startedCallback() {\n          return 0;\n        },\n        readyCallback: function readyCallback() {\n          return 0;\n        },\n        doneCallback: function doneCallback() {\n          return 0;\n        },\n        errorCallback: function errorCallback() {\n          return 0;\n        },\n        sitekey: element.dataset[\"sitekey\"] || \"\",\n        language: element.dataset[\"lang\"] || \"en\",\n        solutionFieldName: element.dataset[\"solutionFieldName\"] || \"frc-captcha-solution\",\n        styleNonce: null\n      }, options);\n      this.e = element;\n      this.e.friendlyChallengeWidget = this;\n      this.loadLanguage();\n      // @ts-ignore Ignore is required as TS thinks that `this.lang` is not assigned yet, but it happens in `this.loadLanguage()` above.\n      element.innerText = this.lang.text_init;\n      if (!this.opts.skipStyleInjection) {\n        injectStyle(this.opts.styleNonce);\n      }\n      this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n    }\n    return _createClass(WidgetInstance, [{\n      key: \"init\",\n      value: function init(forceStart) {\n        var _this2 = this;\n        if (this.hasBeenDestroyed) {\n          console.error(\"FriendlyCaptcha widget has been destroyed using destroy(), it can not be used anymore.\");\n          return;\n        }\n        this.initWorkerGroup();\n        if (forceStart) {\n          this.start();\n        } else if (this.e.dataset[\"start\"] !== \"none\" && (this.opts.startMode === \"focus\" || this.e.dataset[\"start\"] === \"focus\")) {\n          var form = findParentFormElement(this.e);\n          if (form) {\n            executeOnceOnFocusInEvent(form, function () {\n              return _this2.start();\n            });\n          } else {\n            console.log(\"FriendlyCaptcha div seems not to be contained in a form, autostart will not work\");\n          }\n        }\n      }\n      /**\r\n       * Loads the configured language, or a language passed to this function.\r\n       * Note that only the next update will be in the new language, consider calling `reset()` after switching languages.\r\n       */\n    }, {\n      key: \"loadLanguage\",\n      value: function loadLanguage(lang) {\n        if (lang !== undefined) {\n          this.opts.language = lang;\n        } else if (this.e.dataset[\"lang\"]) {\n          this.opts.language = this.e.dataset[\"lang\"];\n        }\n        if (typeof this.opts.language === \"string\") {\n          var langCode = this.opts.language.toLowerCase();\n          var l = localizations[langCode];\n          if (l === undefined && langCode[2] === \"-\") {\n            // Language has a locale '-' separator, remove it and try again\n            langCode = langCode.substring(0, 2);\n            l = localizations[langCode];\n          }\n          if (l === undefined) {\n            console.error('FriendlyCaptcha: language \"' + this.opts.language + '\" not found.');\n            // Fall back to English\n            l = localizations.en;\n          }\n          this.lang = l;\n        } else {\n          // We assign to a copy of the English language localization, so that any missing values will be English\n          this.lang = Object.assign(Object.assign({}, localizations.en), this.opts.language);\n        }\n      }\n      /**\r\n       * Add a listener to the button that calls `this.start` on click.\r\n       */\n    }, {\n      key: \"makeButtonStart\",\n      value: function makeButtonStart() {\n        var _this3 = this;\n        var b = this.e.querySelector(\"button\");\n        if (b) {\n          b.addEventListener(\"click\", function (e) {\n            return _this3.start();\n          }, {\n            once: true,\n            passive: true\n          });\n          b.addEventListener(\"touchstart\", function (e) {\n            return _this3.start();\n          }, {\n            once: true,\n            passive: true\n          });\n        }\n      }\n    }, {\n      key: \"onWorkerError\",\n      value: function onWorkerError(e) {\n        this.hasBeenStarted = false;\n        this.needsReInit = true;\n        if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n        console.error(\"[FRC]\", e);\n        this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Background worker error \" + e.message);\n        this.makeButtonStart();\n        // Just out of precaution\n        this.opts.forceJSFallback = true;\n      }\n    }, {\n      key: \"initWorkerGroup\",\n      value: function initWorkerGroup() {\n        var _this4 = this;\n        this.workerGroup.progressCallback = function (progress) {\n          updateProgressBar(_this4.e, progress);\n        };\n        this.workerGroup.readyCallback = function () {\n          _this4.e.innerHTML = getReadyHTML(_this4.opts.solutionFieldName, _this4.lang);\n          _this4.makeButtonStart();\n          _this4.opts.readyCallback();\n        };\n        this.workerGroup.startedCallback = function () {\n          _this4.e.innerHTML = getRunningHTML(_this4.opts.solutionFieldName, _this4.lang);\n          _this4.opts.startedCallback();\n        };\n        this.workerGroup.doneCallback = function (data) {\n          var solutionPayload = _this4.handleDone(data);\n          _this4.opts.doneCallback(solutionPayload);\n          var callback = _this4.e.dataset[\"callback\"];\n          if (callback) {\n            window[callback](solutionPayload);\n          }\n        };\n        this.workerGroup.errorCallback = function (e) {\n          _this4.onWorkerError(e);\n        };\n        this.workerGroup.init();\n        this.workerGroup.setupSolver(this.opts.forceJSFallback);\n      }\n    }, {\n      key: \"expire\",\n      value: function expire() {\n        this.hasBeenStarted = false;\n        // Node.isConnected will be undefined in older browsers\n        if (this.e.isConnected !== false) {\n          this.e.innerHTML = getExpiredHTML(this.opts.solutionFieldName, this.lang);\n          this.makeButtonStart();\n        }\n      }\n    }, {\n      key: \"start\",\n      value: function start() {\n        return new Promise(function ($return, $error) {\n          var sitekey;\n          if (this.hasBeenDestroyed) {\n            console.error(\"Can not start FriendlyCaptcha widget which has been destroyed\");\n            return $return();\n          }\n          if (this.hasBeenStarted) {\n            console.warn(\"Can not start FriendlyCaptcha widget which has already been started\");\n            return $return();\n          }\n          sitekey = this.opts.sitekey || this.e.dataset[\"sitekey\"];\n          if (!sitekey) {\n            console.error(\"FriendlyCaptcha: sitekey not set on frc-captcha element\");\n            this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Website problem: sitekey not set\", false);\n            return $return();\n          }\n          if (isHeadless()) {\n            this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, \"Browser check failed, try a different browser\", false, true);\n            return $return();\n          }\n          if (this.needsReInit) {\n            this.needsReInit = false;\n            this.init(true);\n            return $return();\n          }\n          this.hasBeenStarted = true;\n          var $Try_3_Post = function () {\n            try {\n              return Promise.resolve(this.workerGroup.start(this.puzzle)).then(function ($await_12) {\n                try {\n                  return $return();\n                } catch ($boundEx) {\n                  return $error($boundEx);\n                }\n              }, $error);\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          }.bind(this);\n          var $Try_3_Catch = function (e) {\n            try {\n              {\n                console.error(\"[FRC]\", e);\n                this.hasBeenStarted = false;\n                if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n                this.e.innerHTML = getErrorHTML(this.opts.solutionFieldName, this.lang, e.message);\n                this.makeButtonStart();\n                var code;\n                code = \"error_getting_puzzle\";\n                this.opts.errorCallback({\n                  code: code,\n                  description: e.toString(),\n                  error: e\n                });\n                var callback;\n                callback = this.e.dataset[\"callback-error\"];\n                if (callback) {\n                  window[callback](this);\n                }\n                return $return();\n              }\n            } catch ($boundEx) {\n              return $error($boundEx);\n            }\n          }.bind(this);\n          try {\n            this.e.innerHTML = getFetchingHTML(this.opts.solutionFieldName, this.lang);\n            return Promise.resolve(getPuzzle(this.opts.puzzleEndpoint, sitekey, this.lang)).then(function ($await_13) {\n              var _this5 = this;\n              try {\n                this.puzzle = decodeBase64Puzzle($await_13);\n                if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n                this.expiryTimeout = setTimeout(function () {\n                  return _this5.expire();\n                }, this.puzzle.expiry - 30000); // 30s grace\n                return $Try_3_Post();\n              } catch ($boundEx) {\n                return $Try_3_Catch($boundEx);\n              }\n            }.bind(this), $Try_3_Catch);\n          } catch (e) {\n            $Try_3_Catch(e);\n          }\n        }.bind(this));\n      }\n      /**\r\n       * This is to be called when the puzzle has been succesfully completed.\r\n       * Here the hidden field gets updated with the solution.\r\n       * @param data message from the webworker\r\n       */\n    }, {\n      key: \"handleDone\",\n      value: function handleDone(data) {\n        this.valid = true;\n        var puzzleSolutionMessage = \"\".concat(this.puzzle.signature, \".\").concat(this.puzzle.base64, \".\").concat(encode(data.solution), \".\").concat(encode(data.diagnostics));\n        this.e.innerHTML = getDoneHTML(this.opts.solutionFieldName, this.lang, puzzleSolutionMessage, data);\n        // this.worker = null; // This literally crashes very old browsers..\n        this.needsReInit = true;\n        return puzzleSolutionMessage;\n      }\n      /**\r\n       * Cleans up the widget entirely, removing any DOM elements and terminating any background workers.\r\n       * After it is destroyed it can no longer be used for any purpose.\r\n       */\n    }, {\n      key: \"destroy\",\n      value: function destroy() {\n        this.workerGroup.terminateWorkers();\n        this.needsReInit = false;\n        this.hasBeenStarted = false;\n        if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n        if (this.e) {\n          this.e.remove();\n          // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n          // @ts-ignore\n          delete this.e;\n        }\n        this.hasBeenDestroyed = true;\n      }\n      /**\r\n       * Resets the widget to the initial state.\r\n       * This is useful in situations where the page does not refresh when you submit and the form may be re-submitted again\r\n       */\n    }, {\n      key: \"reset\",\n      value: function reset() {\n        if (this.hasBeenDestroyed) {\n          console.error(\"FriendlyCaptcha widget has been destroyed, it can not be used anymore\");\n          return;\n        }\n        this.workerGroup.terminateWorkers();\n        this.needsReInit = false;\n        this.hasBeenStarted = false;\n        if (this.expiryTimeout) clearTimeout(this.expiryTimeout);\n        this.init(this.opts.startMode === \"auto\" || this.e.dataset[\"start\"] === \"auto\");\n      }\n    }]);\n  }();\n  window.friendlyChallenge = {\n    WidgetInstance: WidgetInstance\n  };\n  function setup() {\n    var autoWidget = window.friendlyChallenge.autoWidget;\n    var elements = findCaptchaElements();\n    for (var index = 0; index < elements.length; index++) {\n      var hElement = elements[index];\n      if (hElement && !hElement.dataset[\"attached\"]) {\n        autoWidget = new WidgetInstance(hElement);\n        // We set the \"data-attached\" attribute so we don't attach to the same element twice.\n        hElement.dataset[\"attached\"] = \"1\";\n      }\n    }\n    window.friendlyChallenge.autoWidget = autoWidget;\n  }\n  if (document.readyState !== \"loading\") {\n    setup();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", setup);\n  }\n})();\n","import \"../scss/style.scss\";\nimport \"iconify-icon\";\nimport initAdvantageCarousels from \"./components/advantageCarousel\";\nimport initRevealEffects from \"./components/revealEffect\";\n// import Collapse from \"bootstrap/js/dist/collapse\";\nimport \"bootstrap/js/dist/collapse\";\nimport initBonusLineScroll from \"./components/bonusLineScroll\";\nimport initStickyNavbar from \"./components/stickyNavbar\";\nimport initCmsSuccessPopup from \"./components/successPopup\";\nimport friendlyCaptchaCallback from \"./components/friendlyCaptchaCallback.js\";\nimport jobList from \"./components/jobList.js\";\nimport \"swiper/css\";\nimport initSwiper from \"./components/swiper.js\";\n\nimport \"friendly-challenge/widget\";\n\nconst init = () => {\n    initAdvantageCarousels();\n    initRevealEffects();\n    initBonusLineScroll();\n    initStickyNavbar();\n    initCmsSuccessPopup();\n    initSwiper();\n    friendlyCaptchaCallback.init();\n    jobList.init();\n};\n\nif (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n} else {\n    init();\n}\n"],"names":["defaultIconDimensions","defaultIconTransformations","defaultIconProps","defaultExtendedIconProps","defaultIconSizeCustomisations","defaultIconCustomisations","rotateFromString","value","defaultValue","units","cleanup","value$1","num","split","separator","flipFromString","custom","flip","str","defaultCustomisations","getCustomisations","node","customisations","attr","key","def","haveCustomisationsChanged","value1","value2","matchIconName","stringToIcon","validate","allowSimpleName","provider","colonSeparated","name$1","prefix","result","validateIconName","name","dashSeparated","icon","getIconsTree","data","names","icons","aliases","resolved","resolve","parent","mergeIconTransformations","obj1","obj2","rotate","mergeIconData","child","internalGetIconData","tree","currentProps","parse","parseIconSet","callback","item","optionalPropertyDefaults","checkOptionalProps","defaults","prop","quicklyValidateIconSet","obj","dataStorage","newStorage","getStorage","providerStorage","addIconSet","storage","addIconToStorage","listIcons$1","allIcons","provider$1","prefix$1","simpleNames","allowSimpleNames","allow","getIconData","iconName","addIcon$1","addCollection$1","added","iconLoaded$1","getIcon$1","removeCallback","storages","id","items","row","updateCallbacks","hasPending","oldLength","idCounter","storeCallback","pendingSources","abort","sortIcons","a","b","lastIcon","localStorage","list","setAPIModule","getAPIModule","listToIcons","createAPIConfig","source","resources","configStorage","fallBackAPISources","fallBackAPI","addAPIProvider$1","customConfig","config","getAPIConfig","listAPIProviders","defaultConfig","sendQuery","payload","query","done","resourcesCount","startIndex","nextIndex","startTime","status","queriesSent","lastError","timer","queue","doneCallbacks","resetTimer","subscribe","overwrite","getQueryStatus","failQuery","clearQueue","moduleResponse","response","isError","queued","execNext","index","resource","status$1","initRedundancy","cfg","queries","queryCallback","doneCallback","query$1","error","find","emptyCallback$1","redundancyCache","getRedundancyCache","sendAPIQuery","target","redundancy","send","api","cached","emptyCallback","loadedNewIcons","checkIconNamesForAPI","valid","invalid","parseLoaderResponse","checkMissing","pending","err","parsePossiblyAsyncResponse","loadNewIcons","icons$1","customIconLoader","loadIcons$1","sortedIcons","callCallback","newIcons","sources","lastProvider","lastPrefix","providerNewIcons","pendingQueue","loadIcon$1","fulfill","reject","iconObj","loaded","testIconObject","parseIconValue","onload","loading","isBuggedSafari","getRenderMode","body","mode","unitsSplit","unitsTest","calculateSize$1","size","ratio","precision","oldParts","newParts","code","isNumber","splitSVGDefs","content","tag","defs","start","end","endEnd","mergeDefsAndContent","wrapSVGContent","isUnsetKeyword","iconToSVG","fullIcon","fullCustomisations","box","props","transformations","hFlip","vFlip","rotation","tempValue","customisationsWidth","customisationsHeight","boxWidth","boxHeight","width","height","attributes","setAttr","viewBox","iconToHTML$1","renderAttribsHTML","encodeSVGforURL","svg","svgToData","svgToURL$1","detectFetch","fetchModule","setFetch","fetch$1","getFetch","calculateMaxLength","maxHostLength","url","shouldAbort","prepare","results","maxLength","type","length","getPath","host","params","path","iconsList","urlParams","uri","defaultError","fetchAPIModule","setCustomIconsLoader$1","loader","setCustomIconLoader$1","nodeAttr","customStyle","appendCustomStyle","style","updateStyle","inline","styleNode","exportFunctions","_window","preload","providers","monotoneProps","coloredProps","propsToAdd","propsToAddTo","fixSize","renderSPAN","useMask","renderAttribs","html","svgStyle","styles","policy","createPolicy","s","cleanUpInnerHTML","renderSVG","findIconElement","renderIcon","state","iconData","renderData","oldNode","setPendingState","lastState","lastRender","defineIconifyIcon","customElements","ParentClass","ConflictingClass","IconifyIcon","root","newInline","newIcon","newValue","attrMode","renderedMode","entries","intersecting","entry","functions","IconifyIconComponent","iconLoaded","getIcon","listIcons","addIcon","addCollection","calculateSize","buildIcon","iconToHTML","svgToURL","loadIcons","loadIcon","setCustomIconLoader","setCustomIconsLoader","addAPIProvider","_api","global","factory","module","this","elementMap","element","instance","instanceMap","exports","TRANSITION_END","parseSelector","selector","match","toType","object","getUID","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","isElement","getElement","isVisible","elementIsVisible","closedDetails","summary","isDisabled","findShadowRoot","noop","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","isRTL","defineJQueryPlugin","plugin","$","JQUERY_NO_CONFLICT","execute","possibleCallback","args","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","handler","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","require$$0","index_js","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","event","hydrateObj","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","events","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","handlers","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","meta","normalizeData","normalizeDataKey","chr","bsKeys","pureKey","require$$1","Manipulator","Config","jsonConfig","configTypes","property","expectedTypes","valueType","require$$2","require$$3","Data","VERSION","BaseComponent","propertyName","isAnimated","getSelector","hrefAttribute","sel","SelectorEngine","parents","ancestor","previous","next","focusables","el","NAME","EVENT_KEY","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default","DefaultType","Swipe","absDeltaX","direction","require$$4","require$$5","DATA_API_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Carousel","activeIndex","order","img","swipeConfig","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","eventName","isCycling","directionalClassName","orderClassName","completeCallBack","carousel","slideIndex","carousels","initAdvantageCarousels","wrapper","slider","carouselElement","prevButton","nextButton","allSlides","carouselInner","regroupSlides","desktopItems","isTestimonialSlider","itemsPerSlide","slideContents","slide","lgColClass","i","carouselItem","j","col","slides","resizeTimeout","currentActive","currentIndex","updateButtons","carouselInstance","currentSlides","initRevealEffects","elements","observer","obs","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Collapse","toggleList","elem","filterElement","foundElement","activeChildren","activeInstance","dimension","complete","scrollSize","trigger","children","selected","triggerArray","isOpen","_config","MIN_TRANSLATE","MAX_TRANSLATE","clamp","min","max","calculateProgress","scrollable","applyTransform","progress","translate","initBonusLineScroll","ticking","update","requestTick","SCROLL_THRESHOLD","MOBILE_BREAKPOINT","initStickyNavbar","navbar","updateNavbarState","shouldShrink","cmsSuccessPopup","init","initCmsSuccessPopup","cmsFriendlyCaptchaCallback","captcha","submitButtons","button","jobList","JobList","jobListElement","paginationContainer","newHtml","job","title","patterns","suffixes","titleLower","pattern","updatedLower","suffix","companyTitle","group","select","option","optionElement","isObject","extend","src","noExtend","ssrDocument","getDocument","doc","ssrWindow","getWindow","win","classesToTokens","classes","c","deleteProps","nextTick","delay","now","getComputedStyle","window","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","o","isNode","to","nextSource","keysArray","len","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","time","duration","dir","isOutOfBound","current","animate","easeProgress","currentPosition","elementChildren","elementIsChildOfSlot","slot","elementsQueue","elementToCheck","elementIsChildOf","isChild","showWarning","text","createElement","elementPrevAll","prevEls","prev","elementNextAll","nextEls","elementStyle","elementIndex","elementParents","elementOuterSize","includeMargins","makeElementsArray","e","support","calcSupport","document","getSupport","deviceCached","calcDevice","_temp","userAgent","platform","ua","device","screenWidth","screenHeight","android","ipad","ipod","iphone","windows","macos","iPadScreens","getDevice","overrides","browser","calcBrowser","needPerspectiveFix","isSafari","major","minor","isWebView","isSafariBrowser","need3dFix","getBrowser","Resize","on","emit","animationFrame","resizeHandler","createObserver","newWidth","newHeight","_ref2","contentBoxSize","contentRect","removeObserver","orientationChangeHandler","Observer","extendParams","observers","attach","options","ObserverFunc","mutations","observerUpdate","containerParents","destroy","eventsEmitter","priority","self","method","onceHandler","_len","_key","eventHandler","context","_len2","_key2","updateSize","updateSlides","getDirectionPropertyValue","label","wrapperEl","slidesEl","swiperSize","rtl","wrongRTL","isVirtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slideEl","gridEnabled","slideSize","shouldResetSlideSize","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","marginLeft","marginRight","boxSizing","clientWidth","offsetWidth","newSlidesGrid","slidesGridItem","groups","groupSize","allSlidesSize","slideSizeValue","maxSnap","snap","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","speed","activeSlides","getSlideByIndex","updateSlidesOffset","minusOffset","toggleSlideClasses$1","condition","className","updateSlidesProgress","offsetCenter","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","updateProgress","multiplier","translatesDiff","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","processLazyPreloader","imageEl","slideSelector","lazyEl","unlazy","amount","slidesPerView","activeColumn","preloadColumns","_","slideIndexLastInView","realIndex","getActiveIndexByTranslate","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","updateClickedSlide","pathEl","slideFound","getSwiperTranslate","currentTranslate","setTranslate","byController","x","y","z","newProgress","minTranslate","maxTranslate","translateTo","runCallbacks","translateBounds","internal","newTranslate","isH","setTransition","transitionEmit","step","transitionStart","transitionEnd","transition","slideTo","initial","enabled","normalizedTranslate","normalizedGrid","normalizedGridNext","t","slideToLoop","newIndex","targetSlideIndex","cols","centeredSlides","needLoopFix","slideNext","animating","perGroup","increment","slidePrev","rtlTranslate","normalize","val","normalizedSnapGrid","isFreeMode","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToClickedSlide","slideToIndex","isGrid","loopCreate","slideRealIndex","initSlides","clearBlankSlides","slidesPerGroup","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slidesToAdd","loopFix","byMousewheel","allowSlidePrev","allowSlideNext","initialSlide","loopedSlides","prependSlidesIndexes","appendSlidesIndexes","isInitialOverflow","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","currentSlideTranslate","diff","shift","loopParams","loopDestroy","newSlidesOrder","loop","setGrabCursor","moving","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","found","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","onTouchStart","touches","targetEl","swipingClassHasValue","eventPath","noSwipingSelector","isTargetShadow","startY","preventDefault","shouldPreventDefault","onTouchMove","targetTouch","pageX","pageY","diffX","diffY","touchAngle","touchesDiff","prevTouchesDirection","isLoop","allowLoopFix","disableParentSwiper","resistanceRatio","onTouchEnd","touchEndTime","timeDiff","pathTree","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","onResize","isVirtualLoop","onClick","onScroll","onLoad","onDocumentTouchStart","capture","domMethod","swiperMethod","attachEvents","detachEvents","events$1","isGridEnabled","setBreakpoint","initialized","breakpoints","breakpointsBase","breakpointContainer","breakpoint","breakpointParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","isEnabled","hasLoop","getBreakpoint","containerEl","currentHeight","points","point","minRatio","prepareClasses","resultClasses","classNames","addClasses","removeClasses","checkOverflow","wasLocked","slidesOffsetBefore","lastSlideRightEdge","checkOverflow$1","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","extendedDefaults","Swiper","swipers","newParams","mod","swiperParams","cls","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","getWrapperSelector","lazyElements","deleteInstance","cleanStyles","newDefaults","modules","m","prototypeGroup","protoMethod","createElementIfNotDefined","originalParams","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","nextEl","prevEl","onPrevClick","onNextClick","initButton","destroyButton","disable","_s","targetIsButton","isHidden","enable","initSwiper","_typeof","_classCallCheck","n","_defineProperties","r","_toPropertyKey","_createClass","_toPrimitive","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","l","u","f","css","SOLVER_TYPE_JS","CHALLENGE_SIZE_BYTES","loaderSVG","errorSVG","getTemplate","fieldName","svgContent","svgAriaHidden","textContent","solutionString","buttonText","debugData","additionalContainerClasses","getReadyHTML","getFetchingHTML","getRunningHTML","getDoneHTML","solution","timeData","getExpiredHTML","getErrorHTML","errorDescription","recoverable","headless","findCaptchaElements","injectStyle","styleNonce","styleSheet","updateProgressBar","p","perc","findParentFormElement","executeOnceOnFocusInEvent","listener","CHARS","EQ_CHAR","lookup","encode","bytes","base64","_i","b0","b1","b2","decode","bufferLength","_i2","encoded1","encoded2","encoded3","encoded4","nav","isHeadless","difficultyToThreshold","PUZZLE_EXPIRY_OFFSET","NUMBER_OF_PUZZLES_OFFSET","PUZZLE_DIFFICULTY_OFFSET","getPuzzleSolverInputs","puzzleBuffer","numPuzzles","startingPoints","_i3","input","decodeBase64Puzzle","base64Puzzle","parts","puzzle","arr","getPuzzle","urlsSeparatedByComma","siteKey","lang","$return","$error","urls","$Loop_4_trampoline","$Loop_4_local","$Loop_4_step","_$Loop_4_local","_$Loop_4_local2","$Loop_4","$Try_1_Post","$boundEx","$Try_1_Catch","fetchAndRetryWithBackoff","$await_7","$If_6","json","$await_8","_json","$Try_2_Post","$Try_2_Catch","$await_9","q","$Loop_4_exit","_exception","opts","$await_10","LANG_EN","LANG_FR","LANG_DE","LANG_NL","LANG_IT","LANG_PT","LANG_ES","LANG_CA","LANG_JA","LANG_DA","LANG_RU","LANG_SV","LANG_TR","LANG_EL","LANG_UK","LANG_BG","LANG_CS","LANG_SK","LANG_NO","LANG_FI","LANG_LV","LANG_LT","LANG_PL","LANG_ET","LANG_HR","LANG_SR","LANG_SL","LANG_HU","LANG_RO","LANG_ZH","LANG_ZH_TW","LANG_VI","LANG_HE","LANG_TH","LANG_KR","LANG_AR","localizations","createDiagnosticsBuffer","solverID","timeToSolved","workerString","URL","WorkerGroup","_this","setReady","workerBlob","_loop","_i4","totalTime","forceJS","msg","_i5","$await_11","_i6","_i7","PUZZLE_ENDPOINT_URL","WidgetInstance","forceStart","_this2","form","langCode","_this3","_this4","solutionPayload","sitekey","$Try_3_Post","$await_12","$Try_3_Catch","$await_13","_this5","puzzleSolutionMessage","setup","autoWidget","hElement","friendlyCaptchaCallback"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,12,18,19,20,21,22,24]}